Class: Google::Cloud::Bigquery::Schema::Field

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

Overview

Schema Field

The fields of a table schema.

Examples:

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset "my_dataset"
table = dataset.table "my_table"

field = table.schema.field "name"
field.required? #=> true

See Also:

Instance Method Summary collapse

Instance Method Details

#bignumeric(name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil) ⇒ Object

Adds a bignumeric number field to the schema. BIGNUMERIC is a decimal type with fixed precision and scale. Precision is the number of digits that the number contains. Scale is how many of these digits appear after the decimal point. It supports:

Precision: 76.76 (the 77th digit is partial) Scale: 38 Min: -5.7896044618658097711785492504343953926634992332820282019728792003956564819968E+38 Max: 5.7896044618658097711785492504343953926634992332820282019728792003956564819967E+38

This type can represent decimal fractions exactly, and is suitable for financial calculations.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

  • precision (Integer) (defaults to: nil)

    The precision (maximum number of total digits) for the field. Acceptable values for precision must be: 1 ≤ (precision - scale) ≤ 38. Values for scale must be: 0 ≤ scale ≤ 38. If the scale value is set, the precision value must be set as well.

  • scale (Integer) (defaults to: nil)

    The scale (maximum number of digits in the fractional part) for the field. Acceptable values for precision must be: 1 ≤ (precision - scale) ≤ 38. Values for scale must be: 0 ≤ scale ≤ 38. If the scale value is set, the precision value must be set as well.



662
663
664
665
666
667
668
669
670
671
672
# File 'lib/google/cloud/bigquery/schema/field.rb', line 662

def bignumeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil
  record_check!

  add_field name,
            :bignumeric,
            description: description,
            mode: mode,
            policy_tags: policy_tags,
            precision: precision,
            scale: scale
end

#bignumeric?Boolean

Checks if the type of the field is BIGNUMERIC.

Returns:

  • (Boolean)

    true when BIGNUMERIC, false otherwise.



345
346
347
# File 'lib/google/cloud/bigquery/schema/field.rb', line 345

def bignumeric?
  type == "BIGNUMERIC"
end

#boolean(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a boolean field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



692
693
694
695
696
# File 'lib/google/cloud/bigquery/schema/field.rb', line 692

def boolean name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :boolean, description: description, mode: mode, policy_tags: policy_tags
end

#boolean?Boolean

Checks if the type of the field is BOOLEAN.

Returns:

  • (Boolean)

    true when BOOLEAN, false otherwise.



354
355
356
# File 'lib/google/cloud/bigquery/schema/field.rb', line 354

def boolean?
  type == "BOOLEAN" || type == "BOOL"
end

#bytes(name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil) ⇒ Object

Adds a bytes field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

  • max_length (Integer) (defaults to: nil)

    The maximum the maximum number of bytes in the field.



718
719
720
721
722
723
724
725
726
727
# File 'lib/google/cloud/bigquery/schema/field.rb', line 718

def bytes name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil
  record_check!

  add_field name,
            :bytes,
            description: description,
            mode: mode,
            policy_tags: policy_tags,
            max_length: max_length
end

#bytes?Boolean

Checks if the type of the field is BYTES.

Returns:

  • (Boolean)

    true when BYTES, false otherwise.



363
364
365
# File 'lib/google/cloud/bigquery/schema/field.rb', line 363

def bytes?
  type == "BYTES"
end

#date(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a date field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



819
820
821
822
823
# File 'lib/google/cloud/bigquery/schema/field.rb', line 819

def date name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :date, description: description, mode: mode, policy_tags: policy_tags
end

#date?Boolean

Checks if the type of the field is DATE.

Returns:

  • (Boolean)

    true when DATE, false otherwise.



399
400
401
# File 'lib/google/cloud/bigquery/schema/field.rb', line 399

def date?
  type == "DATE"
end

#datetime(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a datetime field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



795
796
797
798
799
# File 'lib/google/cloud/bigquery/schema/field.rb', line 795

def datetime name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :datetime, description: description, mode: mode, policy_tags: policy_tags
end

#datetime?Boolean

Checks if the type of the field is DATETIME.

Returns:

  • (Boolean)

    true when DATETIME, false otherwise.



390
391
392
# File 'lib/google/cloud/bigquery/schema/field.rb', line 390

def datetime?
  type == "DATETIME"
end

#descriptionString

The description of the field.

Returns:

  • (String)

    The field description. The maximum length is 1,024 characters.



174
175
176
# File 'lib/google/cloud/bigquery/schema/field.rb', line 174

def description
  @gapi.description
end

#description=(new_description) ⇒ Object

Updates the description of the field.

Parameters:

  • new_description (String)

    The field description. The maximum length is 1,024 characters.



184
185
186
# File 'lib/google/cloud/bigquery/schema/field.rb', line 184

def description= new_description
  @gapi.update! description: new_description
end

#field(name) {|f| ... } ⇒ Field?

Retrieve a nested field by name, if the type property is set to RECORD. Will return nil otherwise.

Yields:

  • (f)

Returns:

  • (Field, nil)

    The nested schema field object, or nil.



485
486
487
488
489
490
# File 'lib/google/cloud/bigquery/schema/field.rb', line 485

def field name
  f = fields.find { |fld| fld.name == name.to_s }
  return nil if f.nil?
  yield f if block_given?
  f
end

#fieldsArray<Field>?

The nested fields if the type property is set to RECORD. Will be empty otherwise.

Returns:

  • (Array<Field>, nil)

    The nested schema fields if the type is set to RECORD.



429
430
431
432
433
434
435
# File 'lib/google/cloud/bigquery/schema/field.rb', line 429

def fields
  if frozen?
    Array(@gapi.fields).map { |f| Field.from_gapi(f).freeze }.freeze
  else
    Array(@gapi.fields).map { |f| Field.from_gapi f }
  end
end

#float(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a floating-point number field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



566
567
568
569
570
# File 'lib/google/cloud/bigquery/schema/field.rb', line 566

def float name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :float, description: description, mode: mode, policy_tags: policy_tags
end

#float?Boolean

Checks if the type of the field is FLOAT.

Returns:

  • (Boolean)

    true when FLOAT, false otherwise.



327
328
329
# File 'lib/google/cloud/bigquery/schema/field.rb', line 327

def float?
  type == "FLOAT" || type == "FLOAT64"
end

#geography(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a geography field to the nested schema of a record field.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

See Also:



843
844
845
846
847
# File 'lib/google/cloud/bigquery/schema/field.rb', line 843

def geography name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :geography, description: description, mode: mode, policy_tags: policy_tags
end

#geography?Boolean

Checks if the type of the field is GEOGRAPHY.

Returns:

  • (Boolean)

    true when GEOGRAPHY, false otherwise.



408
409
410
# File 'lib/google/cloud/bigquery/schema/field.rb', line 408

def geography?
  type == "GEOGRAPHY"
end

#headersArray<Symbol>?

The names of the nested fields as symbols if the type property is set to RECORD. Will be empty otherwise.

Returns:

  • (Array<Symbol>, nil)

    The names of the nested schema fields if the type is set to RECORD.



444
445
446
# File 'lib/google/cloud/bigquery/schema/field.rb', line 444

def headers
  fields.map(&:name).map(&:to_sym)
end

#integer(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds an integer field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



541
542
543
544
545
# File 'lib/google/cloud/bigquery/schema/field.rb', line 541

def integer name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :integer, description: description, mode: mode, policy_tags: policy_tags
end

#integer?Boolean

Checks if the type of the field is INTEGER.

Returns:

  • (Boolean)

    true when INTEGER, false otherwise.



318
319
320
# File 'lib/google/cloud/bigquery/schema/field.rb', line 318

def integer?
  type == "INTEGER" || type == "INT64"
end

#max_lengthInteger?

The maximum length of values of this field for #string? or #bytes? fields. If max_length is not specified, no maximum length constraint is imposed on this field. If type = STRING, then max_length represents the maximum UTF-8 length of strings in this field. If type = BYTES, then max_length represents the maximum number of bytes in this field.

Returns:

  • (Integer, nil)

    The maximum length of values of this field, or nil.



274
275
276
# File 'lib/google/cloud/bigquery/schema/field.rb', line 274

def max_length
  @gapi.max_length
end

#modeString

The mode of the field.

Returns:

  • (String)

    The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.



194
195
196
# File 'lib/google/cloud/bigquery/schema/field.rb', line 194

def mode
  @gapi.mode
end

#mode=(new_mode) ⇒ Object

Updates the mode of the field.

Parameters:

  • new_mode (String)

    The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.



205
206
207
# File 'lib/google/cloud/bigquery/schema/field.rb', line 205

def mode= new_mode
  @gapi.update! mode: verify_mode(new_mode)
end

#nameString

The name of the field.

Returns:

  • (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.



71
72
73
# File 'lib/google/cloud/bigquery/schema/field.rb', line 71

def name
  @gapi.name
end

#name=(new_name) ⇒ Object

Updates the name of the field.

Parameters:

  • new_name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.



83
84
85
# File 'lib/google/cloud/bigquery/schema/field.rb', line 83

def name= new_name
  @gapi.update! name: String(new_name)
end

#nullable?Boolean

Checks if the type of the field is NULLABLE.

Returns:

  • (Boolean)

    true when NULLABLE, false otherwise.



146
147
148
# File 'lib/google/cloud/bigquery/schema/field.rb', line 146

def nullable?
  mode == "NULLABLE"
end

#numeric(name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil) ⇒ Object

Adds a numeric number field to the schema. NUMERIC is a decimal type with fixed precision and scale. Precision is the number of digits that the number contains. Scale is how many of these digits appear after the decimal point. It supports:

Precision: 38 Scale: 9 Min: -9.9999999999999999999999999999999999999E+28 Max: 9.9999999999999999999999999999999999999E+28

This type can represent decimal fractions exactly, and is suitable for financial calculations.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

  • precision (Integer) (defaults to: nil)

    The precision (maximum number of total digits) for the field. Acceptable values for precision must be: 1 ≤ (precision - scale) ≤ 29. Values for scale must be: 0 ≤ scale ≤ 9. If the scale value is set, the precision value must be set as well.

  • scale (Integer) (defaults to: nil)

    The scale (maximum number of digits in the fractional part) for the field. Acceptable values for precision must be: 1 ≤ (precision - scale) ≤ 29. Values for scale must be: 0 ≤ scale ≤ 9. If the scale value is set, the precision value must be set as well.



611
612
613
614
615
616
617
618
619
620
621
# File 'lib/google/cloud/bigquery/schema/field.rb', line 611

def numeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil
  record_check!

  add_field name,
            :numeric,
            description: description,
            mode: mode,
            policy_tags: policy_tags,
            precision: precision,
            scale: scale
end

#numeric?Boolean

Checks if the type of the field is NUMERIC.

Returns:

  • (Boolean)

    true when NUMERIC, false otherwise.



336
337
338
# File 'lib/google/cloud/bigquery/schema/field.rb', line 336

def numeric?
  type == "NUMERIC"
end

#param_typeSymbol, ...

The types of the field, using the same format as the optional query parameter types.

The parameter types are one of the following BigQuery type codes:

  • :BOOL
  • :INT64
  • :FLOAT64
  • :NUMERIC
  • :BIGNUMERIC
  • :STRING
  • :DATETIME
  • :DATE
  • :TIMESTAMP
  • :TIME
  • :BYTES
  • Array - Lists are specified by providing the type code in an array. For example, an array of integers are specified as [:INT64].
  • Hash - Types for STRUCT values (Hash objects) are specified using a Hash object, where the keys are the nested field names, and the values are the the nested field types.

Returns:

  • (Symbol, Array, Hash)

    The type.



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

def param_type
  param_type = type.to_sym
  param_type = Hash[fields.map { |field| [field.name.to_sym, field.param_type] }] if record?
  param_type = [param_type] if repeated?
  param_type
end

#policy_tagsArray<String>?

The policy tag list for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

Examples:

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset "my_dataset"
table = dataset.table "my_table"

table.schema.field("age").policy_tags

Returns:

  • (Array<String>, nil)

    The policy tag list for the field, or nil.

See Also:



228
229
230
231
# File 'lib/google/cloud/bigquery/schema/field.rb', line 228

def policy_tags
  names = @gapi.policy_tags&.names
  names.to_a if names && !names.empty?
end

#policy_tags=(new_policy_tags) ⇒ Object

Updates the policy tag list for the field.

Examples:

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset "my_dataset"
table = dataset.table "my_table"

policy_tag = "projects/my-project/locations/us/taxonomies/my-taxonomy/policyTags/my-policy-tag"
table.schema do |schema|
  schema.field("age").policy_tags = policy_tag
end

table.schema.field("age").policy_tags

Parameters:

  • new_policy_tags (Array<String>, String, nil)

    The policy tag list or single policy tag for the field, or nil to remove the existing policy tags. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

See Also:



258
259
260
261
262
263
264
# File 'lib/google/cloud/bigquery/schema/field.rb', line 258

def policy_tags= new_policy_tags
  # If new_policy_tags is nil, send an empty array.
  # Sending a nil value for policy_tags results in no change.
  new_policy_tags = Array(new_policy_tags)
  policy_tag_list = Google::Apis::BigqueryV2::TableFieldSchema::PolicyTags.new names: new_policy_tags
  @gapi.update! policy_tags: policy_tag_list
end

#precisionInteger?

The precision (maximum number of total digits) for NUMERIC or BIGNUMERIC types. For #numeric? fields, acceptable values for precision must be 1 ≤ (precision - scale) ≤ 29 and values for scale must be 0 ≤ scale ≤ 9. For #bignumeric? fields, acceptable values for precision must be 1 ≤ (precision - scale) ≤ 38 and values for scale must be 0 ≤ scale ≤ 38. If the scale value is set, the precision value must be set as well.

Returns:

  • (Integer, nil)

    The precision for the field, or nil.



287
288
289
# File 'lib/google/cloud/bigquery/schema/field.rb', line 287

def precision
  @gapi.precision
end

#record(name, description: nil, mode: nil) {|nested_schema| ... } ⇒ Object

Adds a record field to the nested schema of a record field. A block must be passed describing the nested fields of the record. For more information about nested and repeated records, see Preparing Data for BigQuery.

This can only be called on fields that are of type RECORD.

Examples:

require "google/cloud/bigquery"

bigquery = Google::Cloud::Bigquery.new
dataset = bigquery.dataset "my_dataset"
table = dataset.create_table "my_table"

table.schema do |schema|
  schema.string "first_name", mode: :required
  schema.record "cities_lived", mode: :repeated do |cities_lived|
    cities_lived.record "city", mode: :required do |city|
      city.string "name", mode: :required
      city.string "country", mode: :required
    end
    cities_lived.integer "number_of_years", mode: :required
  end
end

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: nil)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

Yields:

  • (nested_schema)

    a block for setting the nested schema

Yield Parameters:

  • nested_schema (Schema)

    the object accepting the nested schema

Raises:

  • (ArgumentError)


887
888
889
890
891
892
893
894
895
896
# File 'lib/google/cloud/bigquery/schema/field.rb', line 887

def record name, description: nil, mode: nil
  record_check!

  # TODO: do we need to raise if no block was given?
  raise ArgumentError, "a block is required" unless block_given?

  nested_field = add_field name, :record, description: description, mode: mode
  yield nested_field
  nested_field
end

#record?Boolean Also known as: struct?

Checks if the type of the field is RECORD.

Returns:

  • (Boolean)

    true when RECORD, false otherwise.



417
418
419
# File 'lib/google/cloud/bigquery/schema/field.rb', line 417

def record?
  type == "RECORD" || type == "STRUCT"
end

#repeated?Boolean

Checks if the type of the field is REPEATED.

Returns:

  • (Boolean)

    true when REPEATED, false otherwise.



164
165
166
# File 'lib/google/cloud/bigquery/schema/field.rb', line 164

def repeated?
  mode == "REPEATED"
end

#required?Boolean

Checks if the type of the field is REQUIRED.

Returns:

  • (Boolean)

    true when REQUIRED, false otherwise.



155
156
157
# File 'lib/google/cloud/bigquery/schema/field.rb', line 155

def required?
  mode == "REQUIRED"
end

#scaleInteger?

The scale (maximum number of digits in the fractional part) for NUMERIC or BIGNUMERIC types. For #numeric? fields, acceptable values for precision must be 1 ≤ (precision - scale) ≤ 29 and values for scale must be 0 ≤ scale ≤ 9. For #bignumeric? fields, acceptable values for precision must be 1 ≤ (precision - scale) ≤ 38 and values for scale must be 0 ≤ scale ≤ 38. If the scale value is set, the precision value must be set as well.

Returns:

  • (Integer, nil)

    The scale for the field, or nil.



300
301
302
# File 'lib/google/cloud/bigquery/schema/field.rb', line 300

def scale
  @gapi.scale
end

#string(name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil) ⇒ Object

Adds a string field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.

  • max_length (Integer) (defaults to: nil)

    The maximum UTF-8 length of strings allowed in the field.



512
513
514
515
516
517
518
519
520
521
# File 'lib/google/cloud/bigquery/schema/field.rb', line 512

def string name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil
  record_check!

  add_field name,
            :string,
            description: description,
            mode: mode,
            policy_tags: policy_tags,
            max_length: max_length
end

#string?Boolean

Checks if the type of the field is STRING.

Returns:

  • (Boolean)

    true when STRING, false otherwise.



309
310
311
# File 'lib/google/cloud/bigquery/schema/field.rb', line 309

def string?
  type == "STRING"
end

#time(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a time field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



771
772
773
774
775
# File 'lib/google/cloud/bigquery/schema/field.rb', line 771

def time name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :time, description: description, mode: mode, policy_tags: policy_tags
end

#time?Boolean

Checks if the type of the field is TIME.

Returns:

  • (Boolean)

    true when TIME, false otherwise.



381
382
383
# File 'lib/google/cloud/bigquery/schema/field.rb', line 381

def time?
  type == "TIME"
end

#timestamp(name, description: nil, mode: :nullable, policy_tags: nil) ⇒ Object

Adds a timestamp field to the nested schema of a record field.

This can only be called on fields that are of type RECORD.

Parameters:

  • name (String)

    The field name. The name must contain only letters ([A-Za-z]), numbers ([0-9]), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.

  • description (String) (defaults to: nil)

    A description of the field.

  • mode (Symbol) (defaults to: :nullable)

    The field's mode. The possible values are :nullable, :required, and :repeated. The default value is :nullable.

  • policy_tags (Array<String>, String) (defaults to: nil)

    The policy tag list or single policy tag for the field. Policy tag identifiers are of the form projects/*/locations/*/taxonomies/*/policyTags/*. At most 1 policy tag is currently allowed.



747
748
749
750
751
# File 'lib/google/cloud/bigquery/schema/field.rb', line 747

def timestamp name, description: nil, mode: :nullable, policy_tags: nil
  record_check!

  add_field name, :timestamp, description: description, mode: mode, policy_tags: policy_tags
end

#timestamp?Boolean

Checks if the type of the field is TIMESTAMP.

Returns:

  • (Boolean)

    true when TIMESTAMP, false otherwise.



372
373
374
# File 'lib/google/cloud/bigquery/schema/field.rb', line 372

def timestamp?
  type == "TIMESTAMP"
end

#typeString

The data type of the field.

Returns:

  • (String)

    The field data type. Possible values include:

    • BIGNUMERIC
    • BOOL
    • BOOLEAN (same as BOOL)
    • BYTES
    • DATE
    • DATETIME
    • FLOAT
    • FLOAT64 (same as FLOAT)
    • GEOGRAPHY
    • INTEGER
    • INT64 (same as INTEGER)
    • NUMERIC
    • RECORD (where RECORD indicates that the field contains a nested schema)
    • STRING
    • STRUCT (same as RECORD)
    • TIME
    • TIMESTAMP


110
111
112
# File 'lib/google/cloud/bigquery/schema/field.rb', line 110

def type
  @gapi.type
end

#type=(new_type) ⇒ Object

Updates the data type of the field.

Parameters:

  • new_type (String)

    The data type. Possible values include:

    • BIGNUMERIC
    • BOOL
    • BOOLEAN (same as BOOL)
    • BYTES
    • DATE
    • DATETIME
    • FLOAT
    • FLOAT64 (same as FLOAT)
    • GEOGRAPHY
    • INTEGER
    • INT64 (same as INTEGER)
    • NUMERIC
    • RECORD (where RECORD indicates that the field contains a nested schema)
    • STRING
    • STRUCT (same as RECORD)
    • TIME
    • TIMESTAMP


137
138
139
# File 'lib/google/cloud/bigquery/schema/field.rb', line 137

def type= new_type
  @gapi.update! type: verify_type(new_type)
end