Reference documentation and code samples for the BigQuery API class Google::Cloud::Bigquery::External::JsonSource.
JsonSource
JsonSource is a subclass of DataSource and represents a JSON external data source that can be queried from directly, such as Google Cloud Storage or Google Drive, even though the data is not stored in BigQuery. Instead of loading or streaming the data, this object references the external data source.
Example
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new json_url = "gs://bucket/path/to/data.json" json_table = bigquery.external json_url do |json| json.schema do |schema| schema.string "name", mode: :required schema.string "email", mode: :required schema.integer "age", mode: :required schema.boolean "active", mode: :required end end data = bigquery.query "SELECT * FROM my_ext_table", external: { my_ext_table: json_table } # Iterate over the first page of results data.each do |row| puts row[:name] end # Retrieve the next page of results data = data.next if data.next?
Methods
#fields
def fields() -> Array<Schema::Field>
The fields of the schema.
- (Array<Schema::Field>) — An array of field objects.
#headers
def headers() -> Array<Symbol>
The names of the columns in the schema.
- (Array<Symbol>) — An array of column names.
#param_types
def param_types() -> Hash
The types of the fields in the data in the schema, using the same format as the optional query parameter types.
- (Hash) — A hash with field names as keys, and types as values.
#schema
def schema(replace: false) { |schema| ... } -> Google::Cloud::Bigquery::Schema
The schema for the data.
-
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. The default value isfalse
.
- (schema) — a block for setting the schema
- schema (Schema) — the object accepting the schema
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new json_url = "gs://bucket/path/to/data.json" json_table = bigquery.external json_url do |json| json.schema do |schema| schema.string "name", mode: :required schema.string "email", mode: :required schema.integer "age", mode: :required schema.boolean "active", mode: :required end end
#schema=
def schema=(new_schema)
Set the schema for the data.
- new_schema (Schema) — The schema object.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new json_shema = bigquery.schema do |schema| schema.string "name", mode: :required schema.string "email", mode: :required schema.integer "age", mode: :required schema.boolean "active", mode: :required end json_url = "gs://bucket/path/to/data.json" json_table = bigquery.external json_url json_table.schema = json_shema