Class: Google::Cloud::Bigquery::StandardSql::StructType

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/bigquery/standard_sql.rb

Overview

The fields of a STRUCT type. See DataType#struct_type. See Routine and Argument.

Examples:

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset "my_dataset"
routine = dataset.create_routine "my_routine" do |r|
  r.routine_type = "SCALAR_FUNCTION"
  r.language = :SQL
  r.body = "(SELECT SUM(IF(elem.name = \"foo\",elem.val,null)) FROM UNNEST(arr) AS elem)"
  r.arguments = [
    Google::Cloud::Bigquery::Argument.new(
      name: "arr",
      argument_kind: "FIXED_TYPE",
      data_type: Google::Cloud::Bigquery::StandardSql::DataType.new(
        type_kind: "ARRAY",
        array_element_type: Google::Cloud::Bigquery::StandardSql::DataType.new(
          type_kind: "STRUCT",
          struct_type: Google::Cloud::Bigquery::StandardSql::StructType.new(
            fields: [
              Google::Cloud::Bigquery::StandardSql::Field.new(
                name: "name",
                type: Google::Cloud::Bigquery::StandardSql::DataType.new(type_kind: "STRING")
              ),
              Google::Cloud::Bigquery::StandardSql::Field.new(
                name: "val",
                type: Google::Cloud::Bigquery::StandardSql::DataType.new(type_kind: "INT64")
              )
            ]
          )
        )
      )
    )
  ]
end

Helpers collapse

Constructor Details

#initialize(fields) ⇒ StructType

Creates a new, immutable StandardSql::StructType object.

Parameters:

  • fields (Array<Field>)

    The fields of the struct. Required.



473
474
475
476
477
# File 'lib/google/cloud/bigquery/standard_sql.rb', line 473

def initialize **kwargs
  # Convert each field client object to gapi object, if fields given (self.from_gapi does not pass kwargs)
  kwargs[:fields] = kwargs[:fields]&.map(&:to_gapi) if kwargs[:fields]
  @gapi = Google::Apis::BigqueryV2::StandardSqlStructType.new(**kwargs)
end

Instance Method Details

#fieldsArray<Field>

The fields of the struct.

Returns:

  • (Array<Field>)

    A frozen array of fields.



484
485
486
487
488
# File 'lib/google/cloud/bigquery/standard_sql.rb', line 484

def fields
  Array(@gapi.fields).map do |field_gapi|
    Field.from_gapi field_gapi
  end.freeze
end