class GoogleApis::Api::BigQuery
Public Instance Methods
dataset()
click to toggle source
# File lib/google_apis/api/big_query.rb, line 15 def dataset default_params[:datasetId] end
project()
click to toggle source
# File lib/google_apis/api/big_query.rb, line 11 def project default_params[:projectId] end
select_rows(statement)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 19 def select_rows(statement) result = jobs.query :query => statement types = result["schema"]["fields"].collect{|x| x["type"].downcase.to_sym} (result["rows"] || []).collect do |row| row["f"].inject([]) do |values, x| values << parse_value(types[values.size], x["v"]) end end end
select_value(query)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 34 def select_value(query) row = select_rows(query)[0] row[0] if row end
select_values(query)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 30 def select_values(query) select_rows(query).collect{|x| x[0]} end
Private Instance Methods
parse_boolean_value(value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 72 def parse_boolean_value(value) (value == "true") || (value == "1") end
parse_float_value(value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 68 def parse_float_value(value) value.to_f end
parse_integer_value(value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 64 def parse_integer_value(value) value.to_i end
parse_string_value(value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 60 def parse_string_value(value) value end
parse_timestamp_value(value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 76 def parse_timestamp_value(value) Time.at value.to_f.to_i end
parse_value(type, value)
click to toggle source
# File lib/google_apis/api/big_query.rb, line 41 def parse_value(type, value) unless [nil, "NULL"].include?(value) case type when :string parse_string_value value when :integer parse_integer_value value when :float parse_float_value value when :boolean parse_boolean_value value when :timestamp parse_timestamp_value value else raise NotImplementedError, "Cannot parse value of type #{type.inspect}" end end end