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

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/bigquery/external/bigtable_source/column_family.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 }

# 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?

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:



526
527
528
529
530
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 526

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:



386
387
388
389
390
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 386

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:



346
347
348
349
350
351
352
353
354
355
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 346

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:



491
492
493
494
495
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 491

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:



456
457
458
459
460
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 456

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:



421
422
423
424
425
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 421

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:



304
305
306
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 304

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)


84
85
86
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 84

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



113
114
115
116
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 113

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)


135
136
137
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 135

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



158
159
160
161
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 158

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)


183
184
185
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 183

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



207
208
209
210
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 207

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)


242
243
244
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 242

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



276
277
278
279
# File 'lib/google/cloud/bigquery/external/bigtable_source/column_family.rb', line 276

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