Class: Gcloud::Bigquery::Dataset
- Inherits:
-
Object
- Object
- Gcloud::Bigquery::Dataset
- Defined in:
- lib/gcloud/bigquery/dataset.rb,
lib/gcloud/bigquery/dataset/list.rb,
lib/gcloud/bigquery/dataset/access.rb
Overview
# Dataset
Represents a Dataset. A dataset is a grouping mechanism that holds zero or more tables. Datasets are the lowest level unit of access control; you cannot control access at the table level. A dataset is contained within a specific project.
Direct Known Subclasses
Defined Under Namespace
Classes: Access, List, Updater
Instance Attribute Summary collapse
Attributes collapse
-
#access {|access| ... } ⇒ Gcloud::Bigquery::Dataset::Access
Retrieves the access rules for a Dataset.
-
#api_url ⇒ Object
A URL that can be used to access the dataset using the REST API.
-
#created_at ⇒ Object
The time when this dataset was created.
-
#dataset_id ⇒ Object
A unique ID for this dataset, without the project name.
-
#dataset_ref ⇒ Object
The gapi fragment containing the Project ID and Dataset ID as a camel-cased hash.
-
#default_expiration ⇒ Object
The default lifetime of all tables in the dataset, in milliseconds.
-
#default_expiration=(new_default_expiration) ⇒ Object
Updates the default lifetime of all tables in the dataset, in milliseconds.
-
#description ⇒ Object
A user-friendly description of the dataset.
-
#description=(new_description) ⇒ Object
Updates the user-friendly description of the dataset.
-
#etag ⇒ Object
A string hash of the dataset.
-
#location ⇒ Object
The geographic location where the dataset should reside.
-
#modified_at ⇒ Object
The date when this dataset or any of its tables was last modified.
-
#name ⇒ Object
A descriptive name for the dataset.
-
#name=(new_name) ⇒ Object
Updates the descriptive name for the dataset.
-
#project_id ⇒ Object
The ID of the project containing this dataset.
Lifecycle collapse
-
#delete(force: nil) ⇒ Boolean
Permanently deletes the dataset.
Table collapse
-
#create_table(table_id, name: nil, description: nil, fields: nil) {|table| ... } ⇒ Gcloud::Bigquery::Table
Creates a new table.
-
#create_view(table_id, query, name: nil, description: nil) ⇒ Gcloud::Bigquery::View
Creates a new view table from the given query.
-
#table(table_id) ⇒ Gcloud::Bigquery::Table, ...
Retrieves an existing table by ID.
-
#tables(token: nil, max: nil) ⇒ Array<Gcloud::Bigquery::Table>, Array<Gcloud::Bigquery::View>
Retrieves the list of tables belonging to the dataset.
Data collapse
- .from_gapi(gapi, conn) ⇒ Object
-
#query(query, max: nil, timeout: 10000, dryrun: nil, cache: true) ⇒ Gcloud::Bigquery::QueryData
Queries data using the [synchronous method](cloud.google.com/bigquery/querying-data).
-
#query_job(query, priority: "INTERACTIVE", cache: true, table: nil, create: nil, write: nil, large_results: nil, flatten: nil) ⇒ Gcloud::Bigquery::QueryJob
Queries data using the [asynchronous method](cloud.google.com/bigquery/querying-data).
Instance Method Summary collapse
-
#initialize ⇒ Dataset
constructor
A new instance of Dataset.
Constructor Details
#initialize ⇒ Dataset
Returns a new instance of Dataset.
55 56 57 58 |
# File 'lib/gcloud/bigquery/dataset.rb', line 55 def initialize @service = nil @gapi = {} end |
Instance Attribute Details
#gapi ⇒ Object
51 52 53 |
# File 'lib/gcloud/bigquery/dataset.rb', line 51 def gapi @gapi end |
#service ⇒ Object
47 48 49 |
# File 'lib/gcloud/bigquery/dataset.rb', line 47 def service @service end |
Class Method Details
.from_gapi(gapi, conn) ⇒ Object
661 662 663 664 665 666 |
# File 'lib/gcloud/bigquery/dataset.rb', line 661 def self.from_gapi gapi, conn new.tap do |f| f.gapi = gapi f.service = conn end end |
Instance Method Details
#access {|access| ... } ⇒ Gcloud::Bigquery::Dataset::Access
Retrieves the access rules for a Dataset. The rules can be updated when passing a block, see Access for all the methods available.
257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/gcloud/bigquery/dataset.rb', line 257 def access ensure_full_data! access_builder = Access.from_gapi @gapi if block_given? yield access_builder if access_builder.changed? @gapi.update! access: access_builder.to_gapi patch_gapi! :access end end access_builder.freeze end |
#api_url ⇒ Object
A URL that can be used to access the dataset using the REST API.
124 125 126 127 |
# File 'lib/gcloud/bigquery/dataset.rb', line 124 def api_url ensure_full_data! @gapi.self_link end |
#create_table(table_id, name: nil, description: nil, fields: nil) {|table| ... } ⇒ Gcloud::Bigquery::Table
Creates a new table. If you are adapting existing code that was written for the [Rest API ](cloud.google.com/bigquery/docs/reference/v2/tables#resource), you can pass the table’s schema as a hash (see example.)
390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 |
# File 'lib/gcloud/bigquery/dataset.rb', line 390 def create_table table_id, name: nil, description: nil, fields: nil ensure_service! new_tb = Google::Apis::BigqueryV2::Table.new( table_reference: Google::Apis::BigqueryV2::TableReference.new( project_id: project_id, dataset_id: dataset_id, table_id: table_id)) updater = Table::Updater.new(new_tb).tap do |tb| tb.name = name unless name.nil? tb.description = description unless description.nil? tb.schema.fields = fields unless fields.nil? end yield updater if block_given? gapi = service.insert_table dataset_id, updater.to_gapi Table.from_gapi gapi, service end |
#create_view(table_id, query, name: nil, description: nil) ⇒ Gcloud::Bigquery::View
Creates a new view table from the given query.
441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 |
# File 'lib/gcloud/bigquery/dataset.rb', line 441 def create_view table_id, query, name: nil, description: nil new_view_opts = { table_reference: Google::Apis::BigqueryV2::TableReference.new( project_id: project_id, dataset_id: dataset_id, table_id: table_id ), friendly_name: name, description: description, view: Google::Apis::BigqueryV2::ViewDefinition.new( query: query ) }.delete_if { |_, v| v.nil? } new_view = Google::Apis::BigqueryV2::Table.new new_view_opts gapi = service.insert_table dataset_id, new_view Table.from_gapi gapi, service end |
#created_at ⇒ Object
The time when this dataset was created.
179 180 181 182 183 184 185 186 |
# File 'lib/gcloud/bigquery/dataset.rb', line 179 def created_at ensure_full_data! begin Time.at(Integer(@gapi.creation_time) / 1000.0) rescue nil end end |
#dataset_id ⇒ Object
A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
67 68 69 |
# File 'lib/gcloud/bigquery/dataset.rb', line 67 def dataset_id @gapi.dataset_reference.dataset_id end |
#dataset_ref ⇒ Object
The gapi fragment containing the Project ID and Dataset ID as a camel-cased hash.
84 85 86 87 88 |
# File 'lib/gcloud/bigquery/dataset.rb', line 84 def dataset_ref dataset_ref = @gapi.dataset_reference dataset_ref = dataset_ref.to_h if dataset_ref.respond_to? :to_h dataset_ref end |
#default_expiration ⇒ Object
The default lifetime of all tables in the dataset, in milliseconds.
154 155 156 157 158 159 160 161 |
# File 'lib/gcloud/bigquery/dataset.rb', line 154 def default_expiration ensure_full_data! begin Integer @gapi.default_table_expiration_ms rescue nil end end |
#default_expiration=(new_default_expiration) ⇒ Object
Updates the default lifetime of all tables in the dataset, in milliseconds.
169 170 171 172 |
# File 'lib/gcloud/bigquery/dataset.rb', line 169 def default_expiration= new_default_expiration @gapi.update! default_table_expiration_ms: new_default_expiration patch_gapi! :default_table_expiration_ms end |
#delete(force: nil) ⇒ Boolean
Permanently deletes the dataset. The dataset must be empty before it can be deleted unless the ‘force` option is set to `true`.
291 292 293 294 295 |
# File 'lib/gcloud/bigquery/dataset.rb', line 291 def delete force: nil ensure_service! service.delete_dataset dataset_id, force true end |
#description ⇒ Object
A user-friendly description of the dataset.
134 135 136 137 |
# File 'lib/gcloud/bigquery/dataset.rb', line 134 def description ensure_full_data! @gapi.description end |
#description=(new_description) ⇒ Object
Updates the user-friendly description of the dataset.
144 145 146 147 |
# File 'lib/gcloud/bigquery/dataset.rb', line 144 def description= new_description @gapi.update! description: new_description patch_gapi! :description end |
#etag ⇒ Object
A string hash of the dataset.
114 115 116 117 |
# File 'lib/gcloud/bigquery/dataset.rb', line 114 def etag ensure_full_data! @gapi.etag end |
#location ⇒ Object
The geographic location where the dataset should reside. Possible values include EU and US. The default value is US.
208 209 210 211 |
# File 'lib/gcloud/bigquery/dataset.rb', line 208 def location ensure_full_data! @gapi.location end |
#modified_at ⇒ Object
The date when this dataset or any of its tables was last modified.
193 194 195 196 197 198 199 200 |
# File 'lib/gcloud/bigquery/dataset.rb', line 193 def modified_at ensure_full_data! begin Time.at(Integer(@gapi.last_modified_time) / 1000.0) rescue nil end end |
#name ⇒ Object
A descriptive name for the dataset.
95 96 97 |
# File 'lib/gcloud/bigquery/dataset.rb', line 95 def name @gapi.friendly_name end |
#name=(new_name) ⇒ Object
Updates the descriptive name for the dataset.
104 105 106 107 |
# File 'lib/gcloud/bigquery/dataset.rb', line 104 def name= new_name @gapi.update! friendly_name: new_name patch_gapi! :friendly_name end |
#project_id ⇒ Object
The ID of the project containing this dataset.
76 77 78 |
# File 'lib/gcloud/bigquery/dataset.rb', line 76 def project_id @gapi.dataset_reference.project_id end |
#query(query, max: nil, timeout: 10000, dryrun: nil, cache: true) ⇒ Gcloud::Bigquery::QueryData
Queries data using the [synchronous method](cloud.google.com/bigquery/querying-data).
Sets the current dataset as the default dataset in the query. Useful for using unqualified table names.
650 651 652 653 654 655 656 657 |
# File 'lib/gcloud/bigquery/dataset.rb', line 650 def query query, max: nil, timeout: 10000, dryrun: nil, cache: true = { max: max, timeout: timeout, dryrun: dryrun, cache: cache } [:dataset] ||= dataset_id [:project] ||= project_id ensure_service! gapi = service.query query, QueryData.from_gapi gapi, service end |
#query_job(query, priority: "INTERACTIVE", cache: true, table: nil, create: nil, write: nil, large_results: nil, flatten: nil) ⇒ Gcloud::Bigquery::QueryJob
Queries data using the [asynchronous method](cloud.google.com/bigquery/querying-data).
Sets the current dataset as the default dataset in the query. Useful for using unqualified table names.
591 592 593 594 595 596 597 598 599 600 |
# File 'lib/gcloud/bigquery/dataset.rb', line 591 def query_job query, priority: "INTERACTIVE", cache: true, table: nil, create: nil, write: nil, large_results: nil, flatten: nil = { priority: priority, cache: cache, table: table, create: create, write: write, large_results: large_results, flatten: flatten } [:dataset] ||= self ensure_service! gapi = service.query_job query, Job.from_gapi gapi, service end |
#table(table_id) ⇒ Gcloud::Bigquery::Table, ...
Retrieves an existing table by ID.
477 478 479 480 481 482 483 |
# File 'lib/gcloud/bigquery/dataset.rb', line 477 def table table_id ensure_service! gapi = service.get_table dataset_id, table_id Table.from_gapi gapi, service rescue Gcloud::NotFoundError nil end |
#tables(token: nil, max: nil) ⇒ Array<Gcloud::Bigquery::Table>, Array<Gcloud::Bigquery::View>
Retrieves the list of tables belonging to the dataset.
519 520 521 522 523 524 |
# File 'lib/gcloud/bigquery/dataset.rb', line 519 def tables token: nil, max: nil ensure_service! = { token: token, max: max } gapi = service.list_tables dataset_id, Table::List.from_gapi gapi, service, dataset_id, max end |