问题描述
我的下游Airflow BigQuery任务依赖于其他表(日期分区)中特定分区的存在。
我知道BigQueryTableSensor
运算符,该运算符检查表是否存在。有没有简单的方法来检查该表中是否存在特定分区?实际上,操作员应该等到这些分区存在后才能成功退出。
解决方法
我查看了BigQuery的Airflow运算符,但找不到一个可以验证Airflow stable version中的表中是否存在特定分区的人。
最近,Apache Airflow社区接受了merge request,其中包括一个用于检查已分区的BigQuery表中是否存在分区的函数。该贡献已包含在latest version
中如果此更改包含在下一发行版中,则新函数可以这样调用:
- 包括图书馆
from airflow.providers.google.cloud.sensors.bigquery import BigQueryTablePartitionExistenceSensor
- 调用函数
check_table_partition_exists = BigQueryTablePartitionExistenceSensor(
task_id="check_table_partition_exists",project_id=PROJECT_ID,dataset_id=DATASET_NAME,table_id=TABLE_NAME,partition_id=PARTITION_NAME,)
您可以查看这些examples以获得更多详细信息。