Class: Google::Cloud::Bigquery::External::BigtableSource::ColumnFamily

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

Overview

BigtableSource::ColumnFamily

A Bigtable column family used to expose in the table schema along with its types and columns.

Examples:

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 }

data.each do |row|
  puts row[:name]
end

Instance Method Summary collapse

Instance Method Details

#add_boolean(qualifier, as: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema that is specified as the BOOLEAN type.

Examples:

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_boolean "active"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1930
1931
1932
1933
1934
# File 'lib/google/cloud/bigquery/external.rb', line 1930

def add_boolean qualifier, as: nil
  col = add_column qualifier, as: as, type: "BOOLEAN"
  yield col if block_given?
  col
end

#add_bytes(qualifier, as: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema that is specified as the BYTES type.

Examples:

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_bytes "avatar"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1790
1791
1792
1793
1794
# File 'lib/google/cloud/bigquery/external.rb', line 1790

def add_bytes qualifier, as: nil
  col = add_column qualifier, as: as, type: "BYTES"
  yield col if block_given?
  col
end

#add_column(qualifier, as: nil, type: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema along with its types.

  • BYTES
  • STRING
  • INTEGER
  • FLOAT
  • BOOLEAN

Examples:

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_column "name", type: "STRING"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
# File 'lib/google/cloud/bigquery/external.rb', line 1750

def add_column qualifier, as: nil, type: nil
  frozen_check!
  col = BigtableSource::Column.new
  col.qualifier = qualifier
  col.field_name = as if as
  col.type = type if type
  yield col if block_given?
  @columns << col
  col
end

#add_float(qualifier, as: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema that is specified as the FLOAT type.

Examples:

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_float "score"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1895
1896
1897
1898
1899
# File 'lib/google/cloud/bigquery/external.rb', line 1895

def add_float qualifier, as: nil
  col = add_column qualifier, as: as, type: "FLOAT"
  yield col if block_given?
  col
end

#add_integer(qualifier, as: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema that is specified as the INTEGER type.

Examples:

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_integer "age"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1860
1861
1862
1863
1864
# File 'lib/google/cloud/bigquery/external.rb', line 1860

def add_integer qualifier, as: nil
  col = add_column qualifier, as: as, type: "INTEGER"
  yield col if block_given?
  col
end

#add_string(qualifier, as: nil) {|column| ... } ⇒ Array<BigtableSource::Column>

Add a column to the column family to expose in the table schema that is specified as the STRING type.

Examples:

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"
  end
end

Parameters:

Yields:

  • (column)

    a block for setting the column

Yield Parameters:

Returns:



1825
1826
1827
1828
1829
# File 'lib/google/cloud/bigquery/external.rb', line 1825

def add_string qualifier, as: nil
  col = add_column qualifier, as: as, type: "STRING"
  yield col if block_given?
  col
end

#columnsArray<BigtableSource::Column>

Lists of columns that should be exposed as individual fields.

Examples:

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[0].columns.count #=> 4

Returns:



1708
1709
1710
# File 'lib/google/cloud/bigquery/external.rb', line 1708

def columns
  @columns
end

#encodingString

The encoding of the values when the type is not STRING.

Examples:

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.add_family "user" do |u|
    u.encoding = "UTF-8"
  end
end

bigtable_table.families[0].encoding #=> "UTF-8"

Returns:

  • (String)


1488
1489
1490
# File 'lib/google/cloud/bigquery/external.rb', line 1488

def encoding
  @gapi.encoding
end

#encoding=(new_encoding) ⇒ Object

Set the encoding of the values when the type is not STRING. Acceptable encoding values are:

  • TEXT - indicates values are alphanumeric text strings.
  • BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden on a column.

Examples:

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.add_family "user" do |u|
    u.encoding = "UTF-8"
  end
end

bigtable_table.families[0].encoding #=> "UTF-8"

Parameters:

  • new_encoding (String)

    New encoding value



1517
1518
1519
1520
# File 'lib/google/cloud/bigquery/external.rb', line 1517

def encoding= new_encoding
  frozen_check!
  @gapi.encoding = new_encoding
end

#family_idString

Identifier of the column family.

Examples:

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.add_family "user"
end

bigtable_table.families[0].family_id #=> "user"

Returns:

  • (String)


1539
1540
1541
# File 'lib/google/cloud/bigquery/external.rb', line 1539

def family_id
  @gapi.family_id
end

#family_id=(new_family_id) ⇒ Object

Set the identifier of the column family.

Examples:

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.add_family "user"
end

bigtable_table.families[0].family_id #=> "user"
bigtable_table.families[0].family_id = "User"
bigtable_table.families[0].family_id #=> "User"

Parameters:

  • new_family_id (String)

    New family_id value



1562
1563
1564
1565
# File 'lib/google/cloud/bigquery/external.rb', line 1562

def family_id= new_family_id
  frozen_check!
  @gapi.family_id = new_family_id
end

#latestBoolean

Whether only the latest version of value are exposed for all columns in this column family.

Examples:

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.add_family "user" do |u|
    u.latest = true
  end
end

bigtable_table.families[0].latest #=> true

Returns:

  • (Boolean)


1587
1588
1589
# File 'lib/google/cloud/bigquery/external.rb', line 1587

def latest
  @gapi.only_read_latest
end

#latest=(new_latest) ⇒ Object

Set whether only the latest version of value are exposed for all columns in this column family.

Examples:

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.add_family "user" do |u|
    u.latest = true
  end
end

bigtable_table.families[0].latest #=> true

Parameters:

  • new_latest (Boolean)

    New latest value



1611
1612
1613
1614
# File 'lib/google/cloud/bigquery/external.rb', line 1611

def latest= new_latest
  frozen_check!
  @gapi.only_read_latest = new_latest
end

#typeString

The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. The following BigQuery types are allowed:

  • BYTES
  • STRING
  • INTEGER
  • FLOAT
  • BOOLEAN

Default type is BYTES. This can be overridden on a column.

Examples:

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.add_family "user" do |u|
    u.type = "STRING"
  end
end

bigtable_table.families[0].type #=> "STRING"

Returns:

  • (String)


1646
1647
1648
# File 'lib/google/cloud/bigquery/external.rb', line 1646

def type
  @gapi.type
end

#type=(new_type) ⇒ Object

Set the type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. The following BigQuery types are allowed:

  • BYTES
  • STRING
  • INTEGER
  • FLOAT
  • BOOLEAN

Default type is BYTES. This can be overridden on a column.

Examples:

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.add_family "user" do |u|
    u.type = "STRING"
  end
end

bigtable_table.families[0].type #=> "STRING"

Parameters:

  • new_type (String)

    New type value



1680
1681
1682
1683
# File 'lib/google/cloud/bigquery/external.rb', line 1680

def type= new_type
  frozen_check!
  @gapi.type = new_type
end