如何将 gzipped json 文件从 bigquery 上传到 gcs 存储桶

时间:2021-01-19 15:58:34

标签: google-bigquery google-cloud-storage airflow

我需要将 bigquery 数据(使用一些过滤器选择)以 json 格式加载到 gcs 存储桶,然后进行压缩。当前的气流操作员正在将表从 bq 导出到 gcs,有没有办法将一些带有过滤器的选择数据从 BQ 推送到 GCS?

2 个答案:

答案 0 :(得分:1)

你可以只设置BigQueryToGCSOperatorcompression参数:

from airflow.providers.google.cloud.transfers.bigquery_to_gcs import BigQueryToGCSOperator
bigquery_to_gcs = BigQueryToGCSOperator(
    task_id="bigquery_to_gcs",
    source_project_dataset_table="DATASET_NAME.TABLE",
    destination_cloud_storage_uris=["gs://folder/your_file"],
    compression='gzip'
)

答案 1 :(得分:0)

在 BigQuery 中使用 EXPORT DATA 语句可以解决此问题的纯 SQL 解决方案。请参见以下示例:

EXPORT DATA
OPTIONS (
    compression = GZIP, 
    format = JSON, 
    uri = 'gs://bucket/path/file_*'
) AS
-- query_statement
select 1 as x, 2 as y;

从 GCS 下载文件并从档案中提取后,我得到以下数据:

{"x":"1","y":"2"}