Class: Google::Cloud::Bigquery::View
- Inherits:
-
Object
- Object
- Google::Cloud::Bigquery::View
- Defined in:
- lib/google/cloud/bigquery/view.rb
Overview
View
A view is a virtual table defined by a SQL query. You can query views in the browser tool, or by using a query job.
BigQuery's views are logical views, not materialized views, which means that the query that defines the view is re-executed every time the view is queried. Queries are billed according to the total amount of data in all table fields referenced directly or indirectly by the top-level query.
Attributes collapse
-
#api_url ⇒ Object
A URL that can be used to access the dataset using the REST API.
-
#created_at ⇒ Object
The time when this table was created.
-
#dataset_id ⇒ Object
The ID of the
Dataset
containing this table. -
#description ⇒ Object
The description of the table.
-
#description=(new_description) ⇒ Object
Updates the description of the table.
-
#etag ⇒ Object
A string hash of the dataset.
-
#expires_at ⇒ Object
The time when this table expires.
-
#fields ⇒ Object
The fields of the view.
-
#headers ⇒ Object
The names of the columns in the view.
-
#id ⇒ Object
The combined Project ID, Dataset ID, and Table ID for this table, in the format specified by the Query Reference:
project_name:datasetId.tableId
. -
#location ⇒ Object
The geographic location where the table should reside.
-
#modified_at ⇒ Object
The date when this table was last modified.
-
#name ⇒ Object
The name of the table.
-
#name=(new_name) ⇒ Object
Updates the name of the table.
-
#project_id ⇒ Object
The ID of the
Project
containing this table. -
#query ⇒ Object
The query that executes each time the view is loaded.
-
#query_id ⇒ Object
The value returned by #id, wrapped in square brackets if the Project ID contains dashes, as specified by the Query Reference.
-
#schema ⇒ Object
The schema of the view.
-
#table? ⇒ Boolean
Checks if the table's type is "TABLE".
-
#table_id ⇒ Object
A unique ID for this table.
-
#view? ⇒ Boolean
Checks if the table's type is "VIEW".
Lifecycle collapse
-
#delete ⇒ Boolean
Permanently deletes the table.
-
#query=(new_query) ⇒ Object
Updates the query that executes each time the view is loaded.
-
#reload! ⇒ Object
(also: #refresh!)
Reloads the table with current data from the BigQuery service.
Data collapse
-
#data(max: nil, timeout: 10000, cache: true, dryrun: nil) ⇒ Google::Cloud::Bigquery::QueryData
Runs a query to retrieve all data from the view.
Instance Method Details
#api_url ⇒ Object
A URL that can be used to access the dataset using the REST API.
169 170 171 172 |
# File 'lib/google/cloud/bigquery/view.rb', line 169 def api_url ensure_full_data! @gapi.self_link end |
#created_at ⇒ Object
The time when this table was created.
199 200 201 202 203 204 205 206 |
# File 'lib/google/cloud/bigquery/view.rb', line 199 def created_at ensure_full_data! begin Time.at(Integer(@gapi.creation_time) / 1000.0) rescue nil end end |
#data(max: nil, timeout: 10000, cache: true, dryrun: nil) ⇒ Google::Cloud::Bigquery::QueryData
Runs a query to retrieve all data from the view.
374 375 376 377 378 379 380 |
# File 'lib/google/cloud/bigquery/view.rb', line 374 def data max: nil, timeout: 10000, cache: true, dryrun: nil sql = "SELECT * FROM #{query_id}" ensure_service! = { max: max, timeout: timeout, cache: cache, dryrun: dryrun } gapi = service.query sql, QueryData.from_gapi gapi, service end |
#dataset_id ⇒ Object
The ID of the Dataset
containing this table.
78 79 80 |
# File 'lib/google/cloud/bigquery/view.rb', line 78 def dataset_id @gapi.table_reference.dataset_id end |
#delete ⇒ Boolean
Permanently deletes the table.
399 400 401 402 403 |
# File 'lib/google/cloud/bigquery/view.rb', line 399 def delete ensure_service! service.delete_table dataset_id, table_id true end |
#description ⇒ Object
The description of the table.
179 180 181 182 |
# File 'lib/google/cloud/bigquery/view.rb', line 179 def description ensure_full_data! @gapi.description end |
#description=(new_description) ⇒ Object
Updates the description of the table.
189 190 191 192 |
# File 'lib/google/cloud/bigquery/view.rb', line 189 def description= new_description @gapi.update! description: new_description patch_gapi! :description end |
#etag ⇒ Object
A string hash of the dataset.
159 160 161 162 |
# File 'lib/google/cloud/bigquery/view.rb', line 159 def etag ensure_full_data! @gapi.etag end |
#expires_at ⇒ Object
The time when this table expires. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed.
215 216 217 218 219 220 221 222 |
# File 'lib/google/cloud/bigquery/view.rb', line 215 def expires_at ensure_full_data! begin Time.at(Integer(@gapi.expiration_time) / 1000.0) rescue nil end end |
#fields ⇒ Object
The fields of the view.
282 283 284 |
# File 'lib/google/cloud/bigquery/view.rb', line 282 def fields schema.fields end |
#headers ⇒ Object
The names of the columns in the view.
291 292 293 |
# File 'lib/google/cloud/bigquery/view.rb', line 291 def headers fields.map(&:name) end |
#id ⇒ Object
The combined Project ID, Dataset ID, and Table ID for this table, in
the format specified by the Query
Reference:
project_name:datasetId.tableId
. To use this value in queries see
#query_id.
109 110 111 |
# File 'lib/google/cloud/bigquery/view.rb', line 109 def id @gapi.id end |
#location ⇒ Object
The geographic location where the table should reside. Possible values include EU and US. The default value is US.
262 263 264 265 |
# File 'lib/google/cloud/bigquery/view.rb', line 262 def location ensure_full_data! @gapi.location end |
#modified_at ⇒ Object
The date when this table was last modified.
229 230 231 232 233 234 235 236 |
# File 'lib/google/cloud/bigquery/view.rb', line 229 def modified_at ensure_full_data! begin Time.at(Integer(@gapi.last_modified_time) / 1000.0) rescue nil end end |
#name ⇒ Object
The name of the table.
140 141 142 |
# File 'lib/google/cloud/bigquery/view.rb', line 140 def name @gapi.friendly_name end |
#name=(new_name) ⇒ Object
Updates the name of the table.
149 150 151 152 |
# File 'lib/google/cloud/bigquery/view.rb', line 149 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 table.
87 88 89 |
# File 'lib/google/cloud/bigquery/view.rb', line 87 def project_id @gapi.table_reference.project_id end |
#query ⇒ Object
The query that executes each time the view is loaded.
300 301 302 |
# File 'lib/google/cloud/bigquery/view.rb', line 300 def query @gapi.view.query if @gapi.view end |
#query=(new_query) ⇒ Object
Updates the query that executes each time the view is loaded.
325 326 327 328 329 |
# File 'lib/google/cloud/bigquery/view.rb', line 325 def query= new_query @gapi.view ||= Google::Apis::BigqueryV2::ViewDefinition.new @gapi.view.update! query: new_query patch_view_gapi! :query end |
#query_id ⇒ Object
The value returned by #id, wrapped in square brackets if the Project ID contains dashes, as specified by the Query Reference. Useful in queries.
131 132 133 |
# File 'lib/google/cloud/bigquery/view.rb', line 131 def query_id project_id["-"] ? "[#{id}]" : id end |
#reload! ⇒ Object Also known as: refresh!
Reloads the table with current data from the BigQuery service.
410 411 412 413 414 |
# File 'lib/google/cloud/bigquery/view.rb', line 410 def reload! ensure_service! gapi = service.get_table dataset_id, table_id @gapi = gapi end |
#schema ⇒ Object
The schema of the view.
272 273 274 275 |
# File 'lib/google/cloud/bigquery/view.rb', line 272 def schema ensure_full_data! Schema.from_gapi(@gapi.schema).freeze end |
#table? ⇒ Boolean
Checks if the table's type is "TABLE".
243 244 245 |
# File 'lib/google/cloud/bigquery/view.rb', line 243 def table? @gapi.type == "TABLE" end |
#table_id ⇒ Object
A unique ID for this table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
69 70 71 |
# File 'lib/google/cloud/bigquery/view.rb', line 69 def table_id @gapi.table_reference.table_id end |
#view? ⇒ Boolean
Checks if the table's type is "VIEW".
252 253 254 |
# File 'lib/google/cloud/bigquery/view.rb', line 252 def view? @gapi.type == "VIEW" end |