Reference documentation and code samples for the google-cloud-bigtable class Google::Cloud::Bigtable::Table.
Table
A collection of user data indexed by row, column, and timestamp. Each table is served using the resources of its parent cluster.
Inherits
- Object
Example
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table" if table.exists? p "Table exists." else p "Table does not exist" end
Methods
#app_profile_id
def app_profile_id() -> String
- (String) — App profile ID for request routing.
#app_profile_id=
def app_profile_id=(value) -> String
- value (String) — App profile ID for request routing.
- (String) — App profile ID for request routing.
#check_consistency
def check_consistency(token) -> Boolean
Checks replication consistency based on a consistency token. Replication is considered consistent if replication has caught up based on the conditions specified in the token and the check request.
- token (String) — Consistency token
-
(Boolean) —
true
if replication is consistent
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new instance = bigtable.instance "my-instance" table = instance.table "my-table" token = "l947XelENinaxJQP0nnrZJjHnAF7YrwW8HCJLotwrF" if table.check_consistency token puts "Replication is consistent" end
#cluster_states
def cluster_states() -> Array<Google::Cloud::Bigtable::Table::ClusterState>
Returns an array of ClusterState objects that map cluster ID to per-cluster table state.
If it could not be determined whether or not the table has data in a
particular cluster (for example, if its zone is unavailable), then
the cluster state's replication_state
will be UNKNOWN
.
Reloads the table with the FULL
view type to retrieve the cluster states
data, unless the table was previously loaded with view type ENCRYPTION_VIEW
,
REPLICATION_VIEW
or FULL
.
Retrieve a table with cluster states.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", view: :FULL, perform_lookup: true table.cluster_states.each do |cs| puts cs.cluster_name puts cs.replication_state puts cs.encryption_infos.first.encryption_type end
#column_families
def column_families() { |column_families| ... } -> ColumnFamilyMap
Returns a frozen object containing the column families configured for the table, mapped by column family name.
Reloads the table if necessary to retrieve the column families data,
since it is only available in a table with view type SCHEMA_VIEW
or FULL
. Previously loaded data is retained.
Also accepts a block for making modifications to the table's column families. After the modifications are completed, the table will be updated with the changes, and the updated column families will be returned.
- (column_families) — A block for modifying the table's column families. Applies multiple column modifications. Performs a series of column family modifications on the specified table. Either all or none of the modifications will occur before this method returns, but data requests received prior to that point may see a table where only some modifications have taken effect.
- column_families (ColumnFamilyMap) — A mutable object containing the column families for the table, mapped by column family name. Any changes made to this object will be stored in API.
- (ColumnFamilyMap) — A frozen object containing the column families for the table, mapped by column family name.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true table.column_families.each do |name, cf| puts name puts cf.gc_rule end # Get a column family by name cf1 = table.column_families["cf1"]
Modify the table's column families
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true table.column_families do |cfm| cfm.add "cf4", gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600) cfm.add "cf5", gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5) rule_1 = Google::Cloud::Bigtable::GcRule.max_versions 3 rule_2 = Google::Cloud::Bigtable::GcRule.max_age 600 rule_union = Google::Cloud::Bigtable::GcRule.union rule_1, rule_2 cfm.update "cf2", gc_rule: rule_union cfm.delete "cf3" end puts table.column_families["cf3"] #=> nil
#delete
def delete() -> Boolean
Permanently deletes the table from a instance.
-
(Boolean) — Returns
true
if the table was deleted.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table" table.delete
#delete_all_rows
def delete_all_rows(timeout: nil) -> Boolean
Deletes all rows.
- timeout (Integer) (defaults to: nil) — Call timeout in seconds. Use in case of insufficient deadline for DropRowRange, then try again with a longer request deadline.
- (Boolean)
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new instance = bigtable.instance "my-instance" table = instance.table "my-table" table.delete_all_rows # With timeout table.delete_all_rows timeout: 120 # 120 seconds.
#delete_rows_by_prefix
def delete_rows_by_prefix(prefix, timeout: nil) -> Boolean
Deletes rows using row key prefix.
- prefix (String) — Row key prefix (for example, "user").
- timeout (Integer) (defaults to: nil) — Call timeout in seconds.
- (Boolean)
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table" table.delete_rows_by_prefix "user-100" # With timeout table.delete_rows_by_prefix "user-1", timeout: 120 # 120 seconds.
#drop_row_range
def drop_row_range(row_key_prefix: nil, delete_all_data: nil, timeout: nil) -> Boolean
Drops row range by row key prefix or deletes all.
- row_key_prefix (String) (defaults to: nil) — Row key prefix (for example, "user").
- delete_all_data (Boolean) (defaults to: nil)
- timeout (Integer) (defaults to: nil) — Call timeout in seconds.
- (Boolean)
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table" # Delete rows using row key prefix. table.drop_row_range row_key_prefix: "user-100" # Delete all data With timeout table.drop_row_range delete_all_data: true, timeout: 120 # 120 seconds.
#exists?
def exists?() -> Boolean
Checks to see if the table exists.
- (Boolean)
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table" if table.exists? p "Table exists." else p "Table does not exist" end
Using Cloud Bigtable instance
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new instance = bigtable.instance "my-instance" table = instance.table "my-table" if table.exists? p "Table exists." else p "Table does not exist" end
#generate_consistency_token
def generate_consistency_token() -> String
Generates a consistency token for a table. The token can be used in CheckConsistency to check whether mutations to the table that finished before this call started have been replicated. The tokens will be available for 90 days.
- (String) — The generated consistency token
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new instance = bigtable.instance "my-instance" table = instance.table "my-table" table.generate_consistency_token # "l947XelENinaxJQP0nnrZJjHnAF7YrwW8HCJLotwrF"
#granularity
def granularity() -> Symbol
The granularity (e.g. MILLIS
, MICROS
) at which timestamps are stored in
this table. Timestamps not matching the granularity will be rejected.
If unspecified at creation time, the value will be set to MILLIS
.
Reloads the table if necessary to retrieve the column families data,
since it is only available in a table with view type SCHEMA_VIEW
or FULL
. Previously loaded data is retained.
- (Symbol)
#granularity_millis?
def granularity_millis?() -> Boolean
The table keeps data versioned at a granularity of 1 ms.
- (Boolean)
#instance_id
def instance_id() -> String
The unique identifier for the instance to which the table belongs.
- (String)
#name
def name() -> String
The unique identifier for the table.
- (String)
#path
def path() -> String
The full path for the table resource. Values are of the form
projects/<project_id>/instances/<instance_id>/table/<table_id>
.
- (String)
#policy
def policy() { |policy| ... } -> Policy
Gets the Cloud IAM access control policy for the table.
- (policy) — A block for updating the policy. The latest policy will be read from the Bigtable service and passed to the block. After the block completes, the modified policy will be written to the service.
- policy (Policy) — the current Cloud IAM Policy for this table.
- (Policy) — The current Cloud IAM Policy for the table.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true policy = table.policy
Update the policy by passing a block.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true table.policy do |p| p.add "roles/owner", "user:owner@example.com" end # 2 API calls
#policy=
def policy=(new_policy) -> Policy
Updates the Cloud IAM access control
policy for the table. The policy should be read from #policy.
See Policy for an explanation of the policy
etag
property and how to modify policies.
You can also update the policy by passing a block to #policy, which will call this method internally after the block completes.
- new_policy (Policy) — a new or modified Cloud IAM Policy for this table
- (Policy) — The policy returned by the API update operation.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true policy = table.policy policy.add "roles/owner", "user:owner@example.com" updated_policy = table.update_policy policy puts updated_policy.roles
#project_id
def project_id() -> String
The unique identifier for the project to which the table belongs.
- (String)
#reload!
def reload!(view: nil) -> Google::Cloud::Bigtable::Table
Reloads table data with the provided view
, or with SCHEMA_VIEW
if none is provided. Previously loaded data is not retained.
-
view (Symbol) (defaults to: nil) —
Table view type. Default view type is
:SCHEMA_VIEW
. Valid view types are::NAME_ONLY
- Only populatesname
.:SCHEMA_VIEW
- Only populatesname
and fields related to the table's schema.:REPLICATION_VIEW
- Only populatesname
and fields related to the table's replication state.:FULL
- Populates all fields.
#table_id
def table_id() -> String
The unique identifier for the table.
- (String)
#test_iam_permissions
def test_iam_permissions(*permissions) -> Array<String>
Tests the specified permissions against the Cloud IAM access control policy.
-
permissions (String, Array<String>) — permissions The set of permissions to
check access for. Permissions with wildcards (such as
*
orbigtable.*
) are not allowed. See Access Control.
- (Array<String>) — The permissions that are configured for the policy.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true permissions = table.test_iam_permissions( "bigtable.tables.delete", "bigtable.tables.get" ) permissions.include? "bigtable.tables.delete" #=> false permissions.include? "bigtable.tables.get" #=> true
#update_policy
def update_policy(new_policy) -> Policy
Updates the Cloud IAM access control
policy for the table. The policy should be read from #policy.
See Policy for an explanation of the policy
etag
property and how to modify policies.
You can also update the policy by passing a block to #policy, which will call this method internally after the block completes.
- new_policy (Policy) — a new or modified Cloud IAM Policy for this table
- (Policy) — The policy returned by the API update operation.
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true policy = table.policy policy.add "roles/owner", "user:owner@example.com" updated_policy = table.update_policy policy puts updated_policy.roles
#wait_for_replication
def wait_for_replication(timeout: 600, check_interval: 5) -> Boolean
Wait for replication to check replication consistency.
Checks replication consistency by generating a consistency token and
making the check_consistency
API call 5 times (by default).
If the response is consistent, returns true
. Otherwise tries again
repeatedly until the timeout. If the check does not succeed by the
timeout, returns false
.
- timeout (Integer) (defaults to: 600) — Timeout in seconds. Defaults value is 600 seconds.
- check_interval (Integer) (defaults to: 5) — Consistency check interval in seconds. Default is 5 seconds.
-
(Boolean) —
true
if replication is consistent
- (InvalidArgumentError)
require "google/cloud/bigtable" bigtable = Google::Cloud::Bigtable.new table = bigtable.table "my-instance", "my-table", perform_lookup: true if table.wait_for_replication puts "Replication done" end # With custom timeout and interval if table.wait_for_replication timeout: 300, check_interval: 10 puts "Replication done" end
Constants
FIELDS_BY_VIEW
value: { SCHEMA_VIEW: ["granularity", "column_families"], ENCRYPTION_VIEW: ["cluster_states"], REPLICATION_VIEW: ["cluster_states"], FULL: ["granularity", "column_families", "cluster_states"] }.freeze