Reference documentation and code samples for the BigQuery API class Google::Cloud::Bigquery::Table::Updater.
Yielded to a block to accumulate changes for a create request. See Dataset#create_table.
Inherits
Methods
#bignumeric
def bignumeric(name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil, default_value_expression: nil)
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.
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.bignumeric "total_cost", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.bignumeric "total_cost", default_value_expression: "1.0e4" end
#boolean
def boolean(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.boolean "active", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.boolean "active", default_value_expression: "true" end
#bytes
def bytes(name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil, default_value_expression: nil)
-
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.
-
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.bytes "avatar", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.bytes "avatar", default_value_expression: "b'101'" end
#clustering_fields=
def clustering_fields=(fields)
Sets the list of fields on which data should be clustered.
Only top-level, non-repeated, simple-type fields are supported. When you cluster a table using multiple columns, the order of columns you specify is important. The order of the specified columns determines the sort order of the data.
BigQuery supports clustering for both partitioned and non-partitioned tables.
See #clustering_fields and #clustering_fields=.
- fields (Array<String>) — The clustering fields. Only top-level, non-repeated, simple-type fields are supported.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.schema do |schema| schema.timestamp "dob", mode: :required schema.string "first_name", mode: :required schema.string "last_name", mode: :required end t.time_partitioning_type = "DAY" t.time_partitioning_field = "dob" t.clustering_fields = ["last_name", "first_name"] end
#copy
def copy()
- (RuntimeError) — not implemented
#copy_job
def copy_job()
- (RuntimeError) — not implemented
#data
def data()
- (RuntimeError) — not implemented
#date
def date(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.date "birthday", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.date "birthday", default_value_expression: "CURRENT_DATE" end
#datetime
def datetime(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.datetime "target_end", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.datetime "target_end", default_value_expression: "CURRENT_DATETIME" end
#delete
def delete()
- (RuntimeError) — not implemented
#external
def external()
- (RuntimeError) — not implemented
#extract
def extract()
- (RuntimeError) — not implemented
#extract_job
def extract_job()
- (RuntimeError) — not implemented
#float
def float(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.float "price", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.float "price", default_value_expression: "1.0" end
#geography
def geography(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
Adds a geography field to the schema.
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.geography "home", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.geography "home", default_value_expression: "ST_GEOGPOINT(-122.084801, 37.422131)" end
#insert
def insert()
- (RuntimeError) — not implemented
#insert_async
def insert_async()
- (RuntimeError) — not implemented
#integer
def integer(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.integer "age", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.integer "age", default_value_expression: "1" end
#load
def load()
- (RuntimeError) — not implemented
#load_job
def load_job()
- (RuntimeError) — not implemented
#numeric
def numeric(name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil, default_value_expression: nil)
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.
See Schema#numeric
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.numeric "total_cost", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.numeric "total_cost", default_value_expression: "1.0e4" end
#query
def query()
- (RuntimeError) — not implemented
#query_job
def query_job()
- (RuntimeError) — not implemented
#range_partitioning_end=
def range_partitioning_end=(range_end)
Sets the end of range partitioning, exclusive, for the table. See Creating and using integer range partitioned tables.
You can only set range partitioning when creating a table as in the example below. BigQuery does not allow you to change partitioning on an existing table.
See #range_partitioning_start=, #range_partitioning_interval= and #range_partitioning_field=.
- range_end (Integer) — The end of range partitioning, exclusive.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.schema do |schema| schema.integer "my_table_id", mode: :required schema.string "my_table_data", mode: :required end t.range_partitioning_field = "my_table_id" t.range_partitioning_start = 0 t.range_partitioning_interval = 10 t.range_partitioning_end = 100 end
#range_partitioning_field=
def range_partitioning_field=(field)
Sets the field on which to range partition the table. See Creating and using integer range partitioned tables.
See #range_partitioning_start=, #range_partitioning_interval= and #range_partitioning_end=.
You can only set range partitioning when creating a table as in the example below. BigQuery does not allow you to change partitioning on an existing table.
-
field (String) — The range partition field. The table is partitioned by this
field. The field must be a top-level
NULLABLE/REQUIRED
field. The only supported type isINTEGER/INT64
.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.schema do |schema| schema.integer "my_table_id", mode: :required schema.string "my_table_data", mode: :required end t.range_partitioning_field = "my_table_id" t.range_partitioning_start = 0 t.range_partitioning_interval = 10 t.range_partitioning_end = 100 end
#range_partitioning_interval=
def range_partitioning_interval=(range_interval)
Sets width of each interval for data in range partitions. See Creating and using integer range partitioned tables.
You can only set range partitioning when creating a table as in the example below. BigQuery does not allow you to change partitioning on an existing table.
See #range_partitioning_field=, #range_partitioning_start= and #range_partitioning_end=.
- range_interval (Integer) — The width of each interval, for data in partitions.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.schema do |schema| schema.integer "my_table_id", mode: :required schema.string "my_table_data", mode: :required end t.range_partitioning_field = "my_table_id" t.range_partitioning_start = 0 t.range_partitioning_interval = 10 t.range_partitioning_end = 100 end
#range_partitioning_start=
def range_partitioning_start=(range_start)
Sets the start of range partitioning, inclusive, for the table. See Creating and using integer range partitioned tables.
You can only set range partitioning when creating a table as in the example below. BigQuery does not allow you to change partitioning on an existing table.
See #range_partitioning_field=, #range_partitioning_interval= and #range_partitioning_end=.
- range_start (Integer) — The start of range partitioning, inclusive.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.schema do |schema| schema.integer "my_table_id", mode: :required schema.string "my_table_data", mode: :required end t.range_partitioning_field = "my_table_id" t.range_partitioning_start = 0 t.range_partitioning_interval = 10 t.range_partitioning_end = 100 end
#record
def record(name, description: nil, mode: nil, default_value_expression: nil, &block) { |nested_schema| ... }
Adds a record field to the schema. A block must be passed describing the nested fields of the record. For more information about nested and repeated records, see Loading denormalized, nested, and repeated data .
See Schema#record.
-
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
. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
- (nested_schema) — a block for setting the nested schema
- nested_schema (Schema) — the object accepting the nested schema
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.record "cities_lived", mode: :repeated do |cities_lived| cities_lived.string "place", mode: :required cities_lived.integer "number_of_years", mode: :required end end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.record "cities_lived", mode: :repeated, "[STRUCT('place',10)]" do |cities_lived| cities_lived.string "place", mode: :required cities_lived.integer "number_of_years", mode: :required end end
#refresh!
def refresh!()
- (RuntimeError) — not implemented
#reload!
def reload!()
- (RuntimeError) — not implemented
#schema
def schema(replace: false) { |schema| ... } -> Google::Cloud::Bigquery::Schema
Returns the table's schema. This method can also be used to set, replace, or add to the schema by passing a block. See Schema for available methods.
-
replace (Boolean) (defaults to: false) — Whether to replace the existing schema with
the new schema. If
true
, the fields will replace the existing schema. Iffalse
, the fields will be added to the existing schema. When a table already contains data, schema changes must be additive. Thus, the default value isfalse
. When loading from a file this will always replace the schema, no matter whatreplace
is set to. You can update the schema (for example, for a table that already contains data) by providing a schema file that includes the existing schema plus any new fields.
- (schema) — a block for setting the schema
- schema (Schema) — the object accepting the schema
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.name = "My Table" t.description = "A description of my table." t.schema do |s| s.string "first_name", mode: :required s.record "cities_lived", mode: :repeated do |r| r.string "place", mode: :required r.integer "number_of_years", mode: :required end end end
Load the schema from a file
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |t| t.name = "My Table" t.description = "A description of my table." t.schema do |s| s.load File.open("schema.json") end end
#string
def string(name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil, default_value_expression: nil)
-
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.
-
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.string "first_name", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.string "first_name", default_value_expression: "'name'" end
#time
def time(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.time "duration", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.time "duration", default_value_expression: "CURRENT_TIME" end
#timestamp
def timestamp(name, description: nil, mode: :nullable, policy_tags: nil, default_value_expression: nil)
-
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. -
default_value_expression (String) (defaults to: nil) —
The default value of a field using a SQL expression. It can only be set for top level fields (columns). Use a struct or array expression to specify default value for the entire struct or array. The valid SQL expressions are:
- Literals for all data types, including STRUCT and ARRAY.
- The following functions:
CURRENT_TIMESTAMP
CURRENT_TIME
CURRENT_DATE
CURRENT_DATETIME
GENERATE_UUID
RAND
SESSION_USER
ST_GEOPOINT
- Struct or array composed with the above allowed functions, for example: "[CURRENT_DATE(), DATE '2020-01-01'"]
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.timestamp "creation_date", mode: :required end
Add field with default value.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" table = dataset.create_table "my_table" do |schema| schema.timestamp "creation_date", default_value_expression: "CURRENT_TIMESTAMP" end