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