class BigQuery
Constants
- DEFAULT_KEY_PASS
- NAME
- VERSION
Attributes
dataset_id[RW]
project_id[RW]
Public Class Methods
new(project_id: nil, dataset_id: nil, api: nil, auth_email: nil, auth_key: nil, auth_pass: DEFAULT_KEY_PASS, client_id: nil, client_secret: nil)
click to toggle source
# File lib/bigquery.rb, line 13 def initialize(project_id: nil, dataset_id: nil, api: nil, auth_email: nil, auth_key: nil, auth_pass: DEFAULT_KEY_PASS, client_id: nil, client_secret: nil) @project_id = project_id @dataset_id = dataset_id if !api.nil? @api = api else auth = do_auth(auth_email, auth_key, auth_pass, client_id, client_secret) @api = BigQueryApi.new(auth) end end
Public Instance Methods
create_table(table_id, schema)
click to toggle source
# File lib/bigquery.rb, line 54 def create_table(table_id, schema) check_dataset! @api.tables_insert(@project_id, @dataset_id, table_id, schema) end
datasets()
click to toggle source
# File lib/bigquery.rb, line 35 def datasets check_project! result = @api.datasets_list(@project_id) result['datasets'].map {|d| BigQuery::Resource.new(d) } end
jobs()
click to toggle source
# File lib/bigquery.rb, line 41 def jobs check_project! result = @api.jobs_list(@project_id) result['jobs'].map {|d| BigQuery::Resource.new(d) } end
projects()
click to toggle source
# File lib/bigquery.rb, line 29 def projects result = @api.projects_list result['projects'].map {|d| BigQuery::Resource.new(d) } end
query(sql, dry_run: false)
click to toggle source
# File lib/bigquery.rb, line 59 def query(sql, dry_run: false) check_dataset! result = do_query(sql, dry_run) (dry_run) ? [] : BigQuery::QueryResult.new(result) end
query_async(sql, dry_run: false)
click to toggle source
# File lib/bigquery.rb, line 65 def query_async(sql, dry_run: false) check_dataset! result = @api.jobs_insert(@project_id, @dataset_id, sql, dry_run) job_id = result['jobReference']['jobId'] (dry_run) ? nil : BigQuery::QueryAsync.new(@api, @project_id, job_id) end
tables()
click to toggle source
# File lib/bigquery.rb, line 48 def tables check_dataset! result = @api.tables_list(@project_id, @dataset_id) result['tables'].map {|d| BigQuery::Resource.new(d) } end
Private Instance Methods
check_dataset!()
click to toggle source
# File lib/bigquery.rb, line 104 def check_dataset! check_project! raise 'dataset is not selected. set dataset_id.' if @dataset_id.nil? end
check_project!()
click to toggle source
# File lib/bigquery.rb, line 100 def check_project! raise 'project is not selected. set project_id.' if @project_id.nil? end
do_auth(auth_email, auth_key, auth_pass, client_id, client_secret)
click to toggle source
# File lib/bigquery.rb, line 74 def do_auth(auth_email, auth_key, auth_pass, client_id, client_secret) if !auth_email.nil? auth = BigQueryApi.auth_account_by_cert(auth_email, auth_key, auth_pass) end if !client_id.nil? auth = BigQueryApi.auth_installed_app(client_id, client_secret) end raise 'not authenticated' if auth.nil? auth end
do_query(sql, dry_run = false)
click to toggle source
# File lib/bigquery.rb, line 87 def do_query(sql, dry_run = false) job_id = nil res = @api.jobs_query(@project_id, @dataset_id, sql, dry_run) 10.times do return res if res['jobComplete'] job_id ||= res['jobReference']['jobId'] res = @api.jobs_get_query_results(@project_id, job_id) end raise 'bigquery query failed' end