是否可以从Airflow向Google BigQuery Data Transfer传递运行参数?
实现方案
该需求可以实现,无需每次新建BigQuery传输配置,历史运行日志会完整保留在预先创建的传输服务下。
操作步骤
- 第一步:预先创建带参数占位的BQ传输配置
在BigQuery控制台创建传输任务(类型选择对应CSV数据源,例如GCS到BigQuery传输),在数据源路径配置处使用{自定义参数名}作为占位符,比如GCS URI填写gs://你的存储桶/输入目录/{csv_file_path}/*.csv,同时在传输配置的「自定义参数」模块声明对应的参数名、类型为字符串,保存传输配置后记录下该配置的资源ID。 - 第二步:配置Airflow算子传递运行时参数
要求apache-airflow-providers-google包版本≥8.1.0,BigQueryDataTransferServiceStartTransferRunsOperator提供了runtime_params参数用于传递运行时覆盖的参数,该参数支持Airflow原生模板语法,可直接传入动态路径。
示例代码:
from airflow.providers.google.cloud.operators.bigquery_dts import BigQueryDataTransferServiceStartTransferRunsOperator start_transfer_task = BigQueryDataTransferServiceStartTransferRunsOperator( task_id="start_bq_transfer", project_id="你的GCP项目ID", config_id="你预先创建的传输配置ID", # 运行时参数,key要和BQ传输配置里定义的参数名完全一致 runtime_params={ # 示例1:传入Airflow模板渲染的日期文件夹路径 "csv_file_path": "{{ ds_nodash }}", # 示例2:直接传入固定路径 # "csv_file_path": "20240501/test" }, gcp_conn_id="你的GCP连接ID", location="传输配置所在区域", )
注意事项
- BQ传输配置中定义的参数名需要和
runtime_params中的key完全匹配,大小写敏感 - 若需要传递文件夹路径,直接调整占位符的位置即可,无需修改传输配置的其他设置
- 所有通过该算子触发的运行记录,都会统一归属到你预先创建的传输配置下,不会丢失历史日志
内容的提问来源于stack exchange,提问作者elaspog
相关产品推荐
相关产品推荐

