Reference documentation and code samples for the google-cloud-bigquery class Google::Cloud::Bigquery::External::BigtableSource.
BigtableSource
BigtableSource is a subclass of DataSource and represents a Bigtable external data source that can be queried from directly, 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 bigtable_url = "https://googleapis.com/bigtable/projects/..." bigtable_table = bigquery.external bigtable_url do |bt| bt.rowkey_as_string = true bt.add_family "user" do |u| u.add_string "name" u.add_string "email" u.add_integer "age" u.add_boolean "active" end end data = bigquery.query "SELECT * FROM my_ext_table", external: { my_ext_table: bigtable_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
#add_family
def add_family(family_id, encoding: nil, latest: nil, type: nil) { |family| ... } -> BigtableSource::ColumnFamily
Add a column family to expose in the table schema along with its types. Columns belonging to the column family may also be exposed.
- family_id (String) — Identifier of the column family. See ColumnFamily#family_id.
-
encoding (String) (defaults to: nil) — The encoding of the values when the type is
not
STRING
. See ColumnFamily#encoding. - latest (Boolean) (defaults to: nil) — Whether only the latest version of value are exposed for all columns in this column family. See ColumnFamily#latest.
- type (String) (defaults to: nil) — The type to convert the value in cells of this column. See ColumnFamily#type.
- (family) — a block for setting the family
- family (BigtableSource::ColumnFamily) — the family object
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new bigtable_url = "https://googleapis.com/bigtable/projects/..." bigtable_table = bigquery.external bigtable_url do |bt| bt.rowkey_as_string = true bt.add_family "user" do |u| u.add_string "name" u.add_string "email" u.add_integer "age" u.add_boolean "active" end end
#families
def families() -> Array<BigtableSource::ColumnFamily>
List of column families to expose in the table schema along with
their types. This list restricts the column families that can be
referenced in queries and specifies their value types. You can use
this list to do type conversions - see
ColumnFamily#type for more details. If you leave
this list empty, all column families are present in the table schema
and their values are read as BYTES
. During a query only the column
families referenced in that query are read from Bigtable.
- (Array<BigtableSource::ColumnFamily>)
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new bigtable_url = "https://googleapis.com/bigtable/projects/..." bigtable_table = bigquery.external bigtable_url do |bt| bt.rowkey_as_string = true bt.add_family "user" do |u| u.add_string "name" u.add_string "email" u.add_integer "age" u.add_boolean "active" end end bigtable_table.families.count #=> 1
#rowkey_as_string
def rowkey_as_string() -> Boolean
Whether the rowkey column families will be read and converted to
string. Otherwise they are read with BYTES
type values and users
need to manually cast them with CAST
if necessary. The default
value is false
.
- (Boolean)
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new bigtable_url = "https://googleapis.com/bigtable/projects/..." bigtable_table = bigquery.external bigtable_url do |bt| bt.rowkey_as_string = true end bigtable_table.rowkey_as_string #=> true
#rowkey_as_string=
def rowkey_as_string=(row_rowkey)
Set the number of rows at the top of a sheet that BigQuery will skip when reading the data.
- row_rowkey (Boolean) — New rowkey_as_string value
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new bigtable_url = "https://googleapis.com/bigtable/projects/..." bigtable_table = bigquery.external bigtable_url do |bt| bt.rowkey_as_string = true end bigtable_table.rowkey_as_string #=> true