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.
167 168 169 170 |
# File 'lib/google/cloud/bigquery/view.rb', line 167 def api_url ensure_full_data! @gapi.self_link end |
#created_at ⇒ Object
The time when this table was created.
197 198 199 200 201 202 203 204 |
# File 'lib/google/cloud/bigquery/view.rb', line 197 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.
370 371 372 373 374 375 376 |
# File 'lib/google/cloud/bigquery/view.rb', line 370 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.
77 78 79 |
# File 'lib/google/cloud/bigquery/view.rb', line 77 def dataset_id @gapi.table_reference.dataset_id end |
#delete ⇒ Boolean
Permanently deletes the table.
394 395 396 397 398 |
# File 'lib/google/cloud/bigquery/view.rb', line 394 def delete ensure_service! service.delete_table dataset_id, table_id true end |
#description ⇒ Object
The description of the table.
177 178 179 180 |
# File 'lib/google/cloud/bigquery/view.rb', line 177 def description ensure_full_data! @gapi.description end |
#description=(new_description) ⇒ Object
Updates the description of the table.
187 188 189 190 |
# File 'lib/google/cloud/bigquery/view.rb', line 187 def description= new_description @gapi.update! description: new_description patch_gapi! :description end |
#etag ⇒ Object
A string hash of the dataset.
157 158 159 160 |
# File 'lib/google/cloud/bigquery/view.rb', line 157 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.
213 214 215 216 217 218 219 220 |
# File 'lib/google/cloud/bigquery/view.rb', line 213 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.
280 281 282 |
# File 'lib/google/cloud/bigquery/view.rb', line 280 def fields schema.fields end |
#headers ⇒ Object
The names of the columns in the view.
289 290 291 |
# File 'lib/google/cloud/bigquery/view.rb', line 289 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.
108 109 110 |
# File 'lib/google/cloud/bigquery/view.rb', line 108 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.
260 261 262 263 |
# File 'lib/google/cloud/bigquery/view.rb', line 260 def location ensure_full_data! @gapi.location end |
#modified_at ⇒ Object
The date when this table was last modified.
227 228 229 230 231 232 233 234 |
# File 'lib/google/cloud/bigquery/view.rb', line 227 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.
138 139 140 |
# File 'lib/google/cloud/bigquery/view.rb', line 138 def name @gapi.friendly_name end |
#name=(new_name) ⇒ Object
Updates the name of the table.
147 148 149 150 |
# File 'lib/google/cloud/bigquery/view.rb', line 147 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.
86 87 88 |
# File 'lib/google/cloud/bigquery/view.rb', line 86 def project_id @gapi.table_reference.project_id end |
#query ⇒ Object
The query that executes each time the view is loaded.
298 299 300 |
# File 'lib/google/cloud/bigquery/view.rb', line 298 def query @gapi.view.query if @gapi.view end |
#query=(new_query) ⇒ Object
Updates the query that executes each time the view is loaded.
322 323 324 325 326 |
# File 'lib/google/cloud/bigquery/view.rb', line 322 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.
129 130 131 |
# File 'lib/google/cloud/bigquery/view.rb', line 129 def query_id project_id["-"] ? "[#{id}]" : id end |
#reload! ⇒ Object Also known as: refresh!
Reloads the table with current data from the BigQuery service.
405 406 407 408 409 |
# File 'lib/google/cloud/bigquery/view.rb', line 405 def reload! ensure_service! gapi = service.get_table dataset_id, table_id @gapi = gapi end |
#schema ⇒ Object
The schema of the view.
270 271 272 273 |
# File 'lib/google/cloud/bigquery/view.rb', line 270 def schema ensure_full_data! Schema.from_gapi(@gapi.schema).freeze end |
#table? ⇒ Boolean
Checks if the table's type is "TABLE".
241 242 243 |
# File 'lib/google/cloud/bigquery/view.rb', line 241 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.
68 69 70 |
# File 'lib/google/cloud/bigquery/view.rb', line 68 def table_id @gapi.table_reference.table_id end |
#view? ⇒ Boolean
Checks if the table's type is "VIEW".
250 251 252 |
# File 'lib/google/cloud/bigquery/view.rb', line 250 def view? @gapi.type == "VIEW" end |