Class: Gcloud::Bigquery::QueryData
- Defined in:
- lib/gcloud/bigquery/query_data.rb
Overview
# QueryData
Represents Data returned from a query a a list of name/value pairs.
Instance Attribute Summary collapse
Attributes inherited from Data
Class Method Summary collapse
Instance Method Summary collapse
- #all(request_limit: nil) {|row| ... } ⇒ Enumerator
-
#cache_hit? ⇒ Boolean
Whether the query result was fetched from the query cache.
-
#complete? ⇒ Boolean
Whether the query has completed or not.
-
#fields ⇒ Object
The fields of the data.
-
#headers ⇒ Object
The name of the columns in the data.
-
#initialize(arr = []) ⇒ QueryData
constructor
A new instance of QueryData.
-
#job ⇒ Object
The BigQuery Job that was created to run the query.
-
#next ⇒ QueryData
Retrieve the next page of query data.
-
#next? ⇒ Boolean
Whether there is a next page of query data.
-
#schema ⇒ Object
The schema of the data.
-
#total_bytes ⇒ Object
The total number of bytes processed for this query.
Methods inherited from Data
#etag, format_rows, format_values, #kind, #raw, #token, #total
Constructor Details
#initialize(arr = []) ⇒ QueryData
Returns a new instance of QueryData.
31 32 33 34 |
# File 'lib/gcloud/bigquery/query_data.rb', line 31 def initialize arr = [] @job = nil super end |
Instance Attribute Details
#service ⇒ Object
28 29 30 |
# File 'lib/gcloud/bigquery/query_data.rb', line 28 def service @service end |
Class Method Details
.from_gapi(gapi, service) ⇒ Object
203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/gcloud/bigquery/query_data.rb', line 203 def self.from_gapi gapi, service if gapi.schema.nil? formatted_rows = [] else formatted_rows = format_rows gapi.rows, gapi.schema.fields end data = new formatted_rows data.gapi = gapi data.service = service data end |
Instance Method Details
#all(request_limit: nil) {|row| ... } ⇒ Enumerator
Retrieves all rows by repeatedly loading #next until #next? returns ‘false`. Calls the given block once for each row, which is passed as the parameter.
An Enumerator is returned if no block is given.
This method may make several API calls until all rows are retrieved. Be sure to use as narrow a search criteria as possible. Please use with caution.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/gcloud/bigquery/query_data.rb', line 174 def all request_limit: nil request_limit = request_limit.to_i if request_limit return enum_for(:all, request_limit: request_limit) unless block_given? results = self loop do results.each { |r| yield r } if request_limit request_limit -= 1 break if request_limit < 0 end break unless results.next? results = results.next end end |
#cache_hit? ⇒ Boolean
Whether the query result was fetched from the query cache.
50 51 52 |
# File 'lib/gcloud/bigquery/query_data.rb', line 50 def cache_hit? @gapi.cache_hit end |
#complete? ⇒ Boolean
Whether the query has completed or not. When data is present this will always be ‘true`. When `false`, `total` will not be available.
45 46 47 |
# File 'lib/gcloud/bigquery/query_data.rb', line 45 def complete? @gapi.job_complete end |
#fields ⇒ Object
The fields of the data.
62 63 64 65 66 67 |
# File 'lib/gcloud/bigquery/query_data.rb', line 62 def fields f = schema.fields f = f.to_hash if f.respond_to? :to_hash f = [] if f.nil? f end |
#headers ⇒ Object
The name of the columns in the data.
71 72 73 |
# File 'lib/gcloud/bigquery/query_data.rb', line 71 def headers fields.map(&:name) end |
#job ⇒ Object
The BigQuery Job that was created to run the query.
191 192 193 194 195 196 197 198 199 |
# File 'lib/gcloud/bigquery/query_data.rb', line 191 def job return @job if @job return nil unless job? ensure_service! gapi = service.get_job job_id @job = Job.from_gapi gapi, service rescue Gcloud::NotFoundError nil end |
#next ⇒ QueryData
Retrieve the next page of query data.
113 114 115 116 117 118 |
# File 'lib/gcloud/bigquery/query_data.rb', line 113 def next return nil unless next? ensure_service! gapi = service.job_query_results job_id, token: token QueryData.from_gapi gapi, service end |
#next? ⇒ Boolean
Whether there is a next page of query data.
92 93 94 |
# File 'lib/gcloud/bigquery/query_data.rb', line 92 def next? !token.nil? end |
#schema ⇒ Object
The schema of the data.
56 57 58 |
# File 'lib/gcloud/bigquery/query_data.rb', line 56 def schema Schema.from_gapi(@gapi.schema).freeze end |
#total_bytes ⇒ Object
The total number of bytes processed for this query.
37 38 39 40 41 |
# File 'lib/gcloud/bigquery/query_data.rb', line 37 def total_bytes Integer @gapi.total_bytes_processed rescue nil end |