created: 2019-08-10T07:24:49.000Z
bigqueryのクエリ結果をgcsに出力するスクリプト
こんな段取りで行う
- テンポラリなテーブルを作って、そこにクエリの結果を入れる
- そのテンポラリなテーブルを、データエクスポート機能を使ってgcsに送る
import os
import datetime
from google.cloud import bigquery
DATASET_ID = os.getenv("BQ_DATASET_ID")
def export_to_gcs(query: str, destination_uri: str):
client = bigquery.Client()
temp_table_name = 'temp_to_gcs_' + datetime.datetime.now().strftime("%Y%m%d_%H%M")
temp_table_ref = client.dataset(DATASET_ID).table(temp_table_name)
# query configuration
job_config = bigquery.QueryJobConfig()
job_config.destination = temp_table_ref
job_config.write_disposition = 'WRITE_TRUNCATE'
query_job = client.query(query, job_config=job_config)
try:
query_job.result() # waiting
# transport to gcs
client.extract_table(temp_table_ref, destination_uri)
finally:
client.delete_table(temp_table_ref)
if __name__ == '__main__':
query = "SELECT * FROM testds20180123.testable"
export_to_gcs(query, 'gs://xxxx-bq-output/public/test/test2.csv')