google-bigquery - 如何使用 Airflow 的 BigQuery 运算符引用外部 SQL 文件?

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

我目前正在使用 Airflow 和 BigQuery 运算符来触发各种 SQL 脚本。当 SQL 直接写入 Airflow DAG 文件中时,这可以正常工作。例如:

bigquery_transform = BigQueryOperator(
        task_id='bq-transform',
        bql='SELECT * FROM `example.table`',
        destination_dataset_table='example.destination'
    )

但是,我想将 SQL 存储在保存到存储桶的单独文件中。例如:

bql='gs://example_bucket/sample_script.sql'

调用此外部文件时,我收到“找不到模板”错误。

我见过一些将 SQL 文件加载到 Airflow DAG 文件夹中的示例,但是,我真的很想访问保存到单独存储桶中的文件。这可能吗?

最佳答案

您可以引用 Google Cloud Storage 存储桶中的任何 SQL 文件。在下面的示例中,我在 Airflow dag 存储桶的 sql 目录中调用文件 Query_File.sql。

CONNECTION_ID = 'project_name'

with DAG('dag', schedule_interval='0 9 * * *', template_searchpath=['/home/airflow/gcs/dags/'], max_active_runs=15, catchup=True, default_args=default_args) as dag:

battery_data_quality = BigQueryOperator(
  task_id='task-id',
  sql='/SQL/Query_File.sql',
  destination_dataset_table='project-name.DataSetName.TableName${{ds_nodash}}',
  write_disposition='WRITE_TRUNCATE',
  bigquery_conn_id=CONNECTION_ID,
  use_legacy_sql=False,
  dag=dag
)

关于google-bigquery - 如何使用 Airflow 的 BigQuery 运算符引用外部 SQL 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57186675/

相关文章:

google-bigquery - 谷歌 bigquery 的 collect_set

node.js - "path"参数必须是字符串类型。接收类型对象nodejs谷歌云存储对象上传

python - 无法在运行时修改 mapred.job.name。它不在允许在运行时修改的参数列表中

java - 使用 BigQuery 读取 JSON 文件以制作表格

python - BigQuery 到 Hadoop 集群 - 如何传输数据?

firebase - 从使用 firebase-admin 上传的文件中获取公共(public) URL

google-app-engine - 我的 GCP 项目正在自动创建存储桶

mysql - apache airflow initdb 在 mysql 的 kubernetes_resource_checkingpoint 失败

python - 传递字符串列表作为 Airflow 中依赖任务的参数

python - 将特定文件从 Amazon S3 导入到 Google Cloud Storage