Class: Google::Cloud::Bigquery::Dataset
- Inherits:
-
Object
- Object
- Google::Cloud::Bigquery::Dataset
- Defined in:
- lib/google/cloud/bigquery/dataset.rb,
lib/google/cloud/bigquery/dataset/list.rb,
lib/google/cloud/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
Attributes collapse
-
#access {|access| ... } ⇒ Google::Cloud::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.
-
#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| ... } ⇒ Google::Cloud::Bigquery::Table
Creates a new table.
-
#create_view(table_id, query, name: nil, description: nil) ⇒ Google::Cloud::Bigquery::View
Creates a new view table from the given query.
-
#table(table_id) ⇒ Google::Cloud::Bigquery::Table, ...
Retrieves an existing table by ID.
-
#tables(token: nil, max: nil) ⇒ Array<Google::Cloud::Bigquery::Table>, Array<Google::Cloud::Bigquery::View>
Retrieves the list of tables belonging to the dataset.
Data collapse
-
#query(query, max: nil, timeout: 10000, dryrun: nil, cache: true) ⇒ Google::Cloud::Bigquery::QueryData
Queries data using the synchronous method.
-
#query_job(query, priority: "INTERACTIVE", cache: true, table: nil, create: nil, write: nil, large_results: nil, flatten: nil) ⇒ Google::Cloud::Bigquery::QueryJob
Queries data using the asynchronous method.
Instance Method Details
#access {|access| ... } ⇒ Google::Cloud::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.
258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 258 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.
125 126 127 128 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 125 def api_url ensure_full_data! @gapi.self_link end |
#create_table(table_id, name: nil, description: nil, fields: nil) {|table| ... } ⇒ Google::Cloud::Bigquery::Table
Creates a new table. If you are adapting existing code that was written for the Rest API , you can pass the table's schema as a hash (see example.)
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 391 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) ⇒ Google::Cloud::Bigquery::View
Creates a new view table from the given query.
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 443 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.
180 181 182 183 184 185 186 187 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 180 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.
68 69 70 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 68 def dataset_id @gapi.dataset_reference.dataset_id end |
#default_expiration ⇒ Object
The default lifetime of all tables in the dataset, in milliseconds.
155 156 157 158 159 160 161 162 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 155 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.
170 171 172 173 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 170 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
.
292 293 294 295 296 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 292 def delete force: nil ensure_service! service.delete_dataset dataset_id, force true end |
#description ⇒ Object
A user-friendly description of the dataset.
135 136 137 138 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 135 def description ensure_full_data! @gapi.description end |
#description=(new_description) ⇒ Object
Updates the user-friendly description of the dataset.
145 146 147 148 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 145 def description= new_description @gapi.update! description: new_description patch_gapi! :description end |
#etag ⇒ Object
A string hash of the dataset.
115 116 117 118 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 115 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.
209 210 211 212 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 209 def location ensure_full_data! @gapi.location end |
#modified_at ⇒ Object
The date when this dataset or any of its tables was last modified.
194 195 196 197 198 199 200 201 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 194 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.
96 97 98 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 96 def name @gapi.friendly_name end |
#name=(new_name) ⇒ Object
Updates the descriptive name for the dataset.
105 106 107 108 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 105 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.
77 78 79 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 77 def project_id @gapi.dataset_reference.project_id end |
#query(query, max: nil, timeout: 10000, dryrun: nil, cache: true) ⇒ Google::Cloud::Bigquery::QueryData
Queries data using the synchronous method.
Sets the current dataset as the default dataset in the query. Useful for using unqualified table names.
654 655 656 657 658 659 660 661 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 654 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) ⇒ Google::Cloud::Bigquery::QueryJob
Queries data using the asynchronous method.
Sets the current dataset as the default dataset in the query. Useful for using unqualified table names.
595 596 597 598 599 600 601 602 603 604 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 595 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) ⇒ Google::Cloud::Bigquery::Table, ...
Retrieves an existing table by ID.
480 481 482 483 484 485 486 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 480 def table table_id ensure_service! gapi = service.get_table dataset_id, table_id Table.from_gapi gapi, service rescue Google::Cloud::NotFoundError nil end |
#tables(token: nil, max: nil) ⇒ Array<Google::Cloud::Bigquery::Table>, Array<Google::Cloud::Bigquery::View>
Retrieves the list of tables belonging to the dataset.
523 524 525 526 527 528 |
# File 'lib/google/cloud/bigquery/dataset.rb', line 523 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 |