Class: Google::Cloud::Bigquery::Schema::Field
- Inherits:
-
Object
- Object
- Google::Cloud::Bigquery::Schema::Field
- Defined in:
- lib/google/cloud/bigquery/schema/field.rb
Overview
Schema Field
The fields of a table schema.
Instance Method Summary collapse
-
#boolean(name, description: nil, mode: :nullable) ⇒ Object
Adds a boolean field to the nested schema of a record field.
-
#boolean? ⇒ Boolean
Checks if the type of the field is
BOOLEAN
. -
#bytes(name, description: nil, mode: :nullable) ⇒ Object
Adds a bytes field to the nested schema of a record field.
-
#bytes? ⇒ Boolean
Checks if the type of the field is
BYTES
. -
#date(name, description: nil, mode: :nullable) ⇒ Object
Adds a date field to the nested schema of a record field.
-
#date? ⇒ Boolean
Checks if the type of the field is
DATE
. -
#datetime(name, description: nil, mode: :nullable) ⇒ Object
Adds a datetime field to the nested schema of a record field.
-
#datetime? ⇒ Boolean
Checks if the type of the field is
DATETIME
. -
#description ⇒ String
The description of the field.
-
#description=(new_description) ⇒ Object
Updates the description of the field.
-
#field(name) {|f| ... } ⇒ Field?
Retrieve a nested field by name, if the type property is set to
RECORD
. -
#fields ⇒ Array<Field>?
The nested fields if the type property is set to
RECORD
. -
#float(name, description: nil, mode: :nullable) ⇒ Object
Adds a floating-point number field to the nested schema of a record field.
-
#float? ⇒ Boolean
Checks if the type of the field is
FLOAT
. -
#headers ⇒ Array<Symbol>?
The names of the nested fields as symbols if the type property is set to
RECORD
. -
#integer(name, description: nil, mode: :nullable) ⇒ Object
Adds an integer field to the nested schema of a record field.
-
#integer? ⇒ Boolean
Checks if the type of the field is
INTEGER
. -
#mode ⇒ String
The mode of the field.
-
#mode=(new_mode) ⇒ Object
Updates the mode of the field.
-
#name ⇒ String
The name of the field.
-
#name=(new_name) ⇒ Object
Updates the name of the field.
-
#nullable? ⇒ Boolean
Checks if the type of the field is
NULLABLE
. -
#numeric(name, description: nil, mode: :nullable) ⇒ Object
Adds a numeric number field to the schema.
-
#numeric? ⇒ Boolean
Checks if the type of the field is
NUMERIC
. -
#param_type ⇒ Symbol, ...
The types of the field, using the same format as the optional query parameter types.
-
#record(name, description: nil, mode: nil) {|nested_schema| ... } ⇒ Object
Adds a record field to the nested schema of a record field.
-
#record? ⇒ Boolean
(also: #struct?)
Checks if the type of the field is
RECORD
. -
#repeated? ⇒ Boolean
Checks if the type of the field is
REPEATED
. -
#required? ⇒ Boolean
Checks if the type of the field is
REQUIRED
. -
#string(name, description: nil, mode: :nullable) ⇒ Object
Adds a string field to the nested schema of a record field.
-
#string? ⇒ Boolean
Checks if the type of the field is
STRING
. -
#time(name, description: nil, mode: :nullable) ⇒ Object
Adds a time field to the nested schema of a record field.
-
#time? ⇒ Boolean
Checks if the type of the field is
TIME
. -
#timestamp(name, description: nil, mode: :nullable) ⇒ Object
Adds a timestamp field to the nested schema of a record field.
-
#timestamp? ⇒ Boolean
Checks if the type of the field is
TIMESTAMP
. -
#type ⇒ String
The data type of the field.
-
#type=(new_type) ⇒ Object
Updates the data type of the field.
Instance Method Details
#boolean(name, description: nil, mode: :nullable) ⇒ 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
.
432 433 434 435 436 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 432 def boolean name, description: nil, mode: :nullable record_check! add_field name, :boolean, description: description, mode: mode end |
#boolean? ⇒ Boolean
Checks if the type of the field is BOOLEAN
.
207 208 209 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 207 def boolean? type == "BOOLEAN" || type == "BOOL" end |
#bytes(name, description: nil, mode: :nullable) ⇒ 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
.
452 453 454 455 456 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 452 def bytes name, description: nil, mode: :nullable record_check! add_field name, :bytes, description: description, mode: mode end |
#bytes? ⇒ Boolean
Checks if the type of the field is BYTES
.
216 217 218 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 216 def bytes? type == "BYTES" end |
#date(name, description: nil, mode: :nullable) ⇒ 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
.
532 533 534 535 536 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 532 def date name, description: nil, mode: :nullable record_check! add_field name, :date, description: description, mode: mode end |
#date? ⇒ Boolean
Checks if the type of the field is DATE
.
252 253 254 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 252 def date? type == "DATE" end |
#datetime(name, description: nil, mode: :nullable) ⇒ 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
.
512 513 514 515 516 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 512 def datetime name, description: nil, mode: :nullable record_check! add_field name, :datetime, description: description, mode: mode end |
#datetime? ⇒ Boolean
Checks if the type of the field is DATETIME
.
243 244 245 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 243 def datetime? type == "DATETIME" end |
#description ⇒ String
The description of the field.
131 132 133 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 131 def description @gapi.description end |
#description=(new_description) ⇒ Object
Updates the description of the field.
141 142 143 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 141 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.
328 329 330 331 332 333 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 328 def field name f = fields.find { |fld| fld.name == name.to_s } return nil if f.nil? yield f if block_given? f end |
#fields ⇒ Array<Field>?
The nested fields if the type property is set to RECORD
. Will be
empty otherwise.
273 274 275 276 277 278 279 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 273 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) ⇒ 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
.
390 391 392 393 394 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 390 def float name, description: nil, mode: :nullable record_check! add_field name, :float, description: description, mode: mode end |
#float? ⇒ Boolean
Checks if the type of the field is FLOAT
.
189 190 191 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 189 def float? type == "FLOAT" || type == "FLOAT64" end |
#headers ⇒ Array<Symbol>?
The names of the nested fields as symbols if the type property is
set to RECORD
. Will be empty otherwise.
288 289 290 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 288 def headers fields.map(&:name).map(&:to_sym) end |
#integer(name, description: nil, mode: :nullable) ⇒ 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
.
369 370 371 372 373 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 369 def integer name, description: nil, mode: :nullable record_check! add_field name, :integer, description: description, mode: mode end |
#integer? ⇒ Boolean
Checks if the type of the field is INTEGER
.
180 181 182 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 180 def integer? type == "INTEGER" || type == "INT64" end |
#mode ⇒ String
The mode of the field.
151 152 153 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 151 def mode @gapi.mode end |
#mode=(new_mode) ⇒ Object
Updates the mode of the field.
162 163 164 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 162 def mode= new_mode @gapi.update! mode: verify_mode(new_mode) end |
#name ⇒ String
The name of the field.
54 55 56 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 54 def name @gapi.name end |
#name=(new_name) ⇒ Object
Updates the name of the field.
66 67 68 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 66 def name= new_name @gapi.update! name: String(new_name) end |
#nullable? ⇒ Boolean
Checks if the type of the field is NULLABLE
.
103 104 105 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 103 def nullable? mode == "NULLABLE" end |
#numeric(name, description: nil, mode: :nullable) ⇒ Object
Adds a numeric number field to the schema. Numeric is a fixed-precision numeric type with 38 decimal digits, 9 that follow the decimal point.
This can only be called on fields that are of type RECORD
.
412 413 414 415 416 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 412 def numeric name, description: nil, mode: :nullable record_check! add_field name, :numeric, description: description, mode: mode end |
#numeric? ⇒ Boolean
Checks if the type of the field is NUMERIC
.
198 199 200 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 198 def numeric? type == "NUMERIC" end |
#param_type ⇒ Symbol, ...
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
: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 aHash
object, where the keys are the nested field names, and the values are the the nested field types.
315 316 317 318 319 320 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 315 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 |
#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
.
576 577 578 579 580 581 582 583 584 585 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 576 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
.
261 262 263 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 261 def record? type == "RECORD" || type == "STRUCT" end |
#repeated? ⇒ Boolean
Checks if the type of the field is REPEATED
.
121 122 123 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 121 def repeated? mode == "REPEATED" end |
#required? ⇒ Boolean
Checks if the type of the field is REQUIRED
.
112 113 114 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 112 def required? mode == "REQUIRED" end |
#string(name, description: nil, mode: :nullable) ⇒ 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
.
349 350 351 352 353 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 349 def string name, description: nil, mode: :nullable record_check! add_field name, :string, description: description, mode: mode end |
#string? ⇒ Boolean
Checks if the type of the field is STRING
.
171 172 173 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 171 def string? type == "STRING" end |
#time(name, description: nil, mode: :nullable) ⇒ 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
.
492 493 494 495 496 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 492 def time name, description: nil, mode: :nullable record_check! add_field name, :time, description: description, mode: mode end |
#time? ⇒ Boolean
Checks if the type of the field is TIME
.
234 235 236 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 234 def time? type == "TIME" end |
#timestamp(name, description: nil, mode: :nullable) ⇒ 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
.
472 473 474 475 476 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 472 def name, description: nil, mode: :nullable record_check! add_field name, :timestamp, description: description, mode: mode end |
#timestamp? ⇒ Boolean
Checks if the type of the field is TIMESTAMP
.
225 226 227 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 225 def type == "TIMESTAMP" end |
#type ⇒ String
The data type of the field.
80 81 82 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 80 def type @gapi.type end |
#type=(new_type) ⇒ Object
Updates the data type of the field.
94 95 96 |
# File 'lib/google/cloud/bigquery/schema/field.rb', line 94 def type= new_type @gapi.update! type: verify_type(new_type) end |