Class: BigQuery::BigQueryApi
- Inherits:
-
Object
- Object
- BigQuery::BigQueryApi
- Defined in:
- lib/bigquery/bigquery_api.rb
Constant Summary collapse
- AUTH_SCOPE =
'https://www.googleapis.com/auth/bigquery'
- MAX_RESULTS =
10000
Class Method Summary collapse
- .auth_account_by_cert(auth_email, auth_key, auth_pass) ⇒ Object
- .auth_installed_app(client_id, client_secret) ⇒ Object
Instance Method Summary collapse
- #datasets_get(dataset_id) ⇒ Object
- #datasets_list(project_id) ⇒ Object
-
#initialize(auth) ⇒ BigQueryApi
constructor
A new instance of BigQueryApi.
- #jobs_get(project_id, job_id) ⇒ Object
- #jobs_get_query_results(project_id, job_id) ⇒ Object
- #jobs_insert(project_id, dataset_id, sql, dry_run = false) ⇒ Object
- #jobs_list(project_id) ⇒ Object
- #jobs_query(project_id, dataset_id, sql, dry_run = false) ⇒ Object
- #projects_list ⇒ Object
- #tables_insert(project_id, dataset_id, table_id, schema) ⇒ Object
- #tables_list(project_id, dataset_id) ⇒ Object
Constructor Details
#initialize(auth) ⇒ BigQueryApi
Returns a new instance of BigQueryApi.
31 32 33 34 35 36 |
# File 'lib/bigquery/bigquery_api.rb', line 31 def initialize(auth) @client = Google::APIClient.new(application_name: NAME, application_version: VERSION) @client. = auth @bq = @client.discovered_api('bigquery', 'v2') end |
Class Method Details
.auth_account_by_cert(auth_email, auth_key, auth_pass) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/bigquery/bigquery_api.rb', line 11 def auth_account_by_cert(auth_email, auth_key, auth_pass) key = Google::APIClient::KeyUtils.load_from_pkcs12(auth_key, auth_pass) asserter = Google::APIClient::JWTAsserter.new(auth_email, AUTH_SCOPE, key) asserter. end |
.auth_installed_app(client_id, client_secret) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/bigquery/bigquery_api.rb', line 18 def auth_installed_app(client_id, client_secret) params = { :client_id => client_id, :client_secret => client_secret, :scope => AUTH_SCOPE, } flow = Google::APIClient::InstalledAppFlow.new(params) flow. end |
Instance Method Details
#datasets_get(dataset_id) ⇒ Object
48 49 50 |
# File 'lib/bigquery/bigquery_api.rb', line 48 def datasets_get(dataset_id) execute(@bq.datasets.get, params: { projectId: project_id, datasetId: dataset_id }) end |
#datasets_list(project_id) ⇒ Object
44 45 46 |
# File 'lib/bigquery/bigquery_api.rb', line 44 def datasets_list(project_id) execute(@bq.datasets.list, params: { projectId: project_id }) end |
#jobs_get(project_id, job_id) ⇒ Object
75 76 77 |
# File 'lib/bigquery/bigquery_api.rb', line 75 def jobs_get(project_id, job_id) execute(@bq.jobs.get, params: { projectId: project_id, jobId: job_id }) end |
#jobs_get_query_results(project_id, job_id) ⇒ Object
108 109 110 111 112 113 114 115 116 117 |
# File 'lib/bigquery/bigquery_api.rb', line 108 def jobs_get_query_results(project_id, job_id) params = { projectId: project_id, jobId: job_id, maxResults: MAX_RESULTS, timeoutMs: 10000, } execute(@bq.jobs.get_query_results, params: params) end |
#jobs_insert(project_id, dataset_id, sql, dry_run = false) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/bigquery/bigquery_api.rb', line 91 def jobs_insert(project_id, dataset_id, sql, dry_run = false) body = { configuration: { query: { query: sql, defaultDataset: { datasetId: dataset_id }, priority: 'INTERACTIVE', # or 'BATCH' allowLargeResults: false, useQueryCache: true, }, dryRun: dry_run, }, } execute(@bq.jobs.insert, params: { projectId: project_id }, body: body) end |
#jobs_list(project_id) ⇒ Object
71 72 73 |
# File 'lib/bigquery/bigquery_api.rb', line 71 def jobs_list(project_id) execute(@bq.jobs.list, params: { projectId: project_id }) end |
#jobs_query(project_id, dataset_id, sql, dry_run = false) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/bigquery/bigquery_api.rb', line 79 def jobs_query(project_id, dataset_id, sql, dry_run = false) body = { query: sql, defaultDataset: { datasetId: dataset_id }, maxResults: MAX_RESULTS, timeoutMs: 10000, dryRun: dry_run, } execute(@bq.jobs.query, params: { projectId: project_id }, body: body) end |
#projects_list ⇒ Object
39 40 41 |
# File 'lib/bigquery/bigquery_api.rb', line 39 def projects_list execute(@bq.projects.list) end |
#tables_insert(project_id, dataset_id, table_id, schema) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/bigquery/bigquery_api.rb', line 57 def tables_insert(project_id, dataset_id, table_id, schema) body = { tableReference: { "projectId": project_id, "datasetId": dataset_id, "tableId": table_id, }, schema: { fields: schema }, } execute(@bq.tables.insert, params: { projectId: project_id, datasetId: dataset_id }, body: body) end |
#tables_list(project_id, dataset_id) ⇒ Object
53 54 55 |
# File 'lib/bigquery/bigquery_api.rb', line 53 def tables_list(project_id, dataset_id) execute(@bq.tables.list, params: { projectId: project_id, datasetId: dataset_id }) end |