我正在尝试创建一个气流DAG,该DAG会根据服务器的响应来生成任务。
这是我的方法:
从bigquery中获取表的列表->遍历列表并创建任务
这是我的最新代码,我已经尝试了所有在堆栈溢出中找到的可能代码。似乎没有任何作用。我在做什么错了?
with models.DAG(dag_id="xt", default_args=default_args, schedule_interval="0 1 * * *", catchup=True) as dag:
tables = get_tables_from_bq()
bridge = DummyOperator(
task_id='bridge',
dag=dag
)
for t in tables:
sql = ("SELECT * FROM `{project}.{dataset}.{table}` LIMIT 5;".format(
project=project, dataset=dataset, table=t))
materialize_t = BigQueryOperator(bql=sql,
destination_dataset_table=dataset+'.' + table_prefix + t,
task_id = 'x_' + t,
bigquery_conn_id = 'bigquery_default',
use_legacy_sql = False,
write_disposition = 'WRITE_APPEND',
create_disposition = 'CREATE_IF_NEEDED',
query_params = {},
allow_large_results = True,
dag = dag)
bridge >> materialize_t
即使运行选项未与此代码一起显示。我尝试了多种代码,最终到达了这里,但还是没有运气。有帮助吗?
答案 0 :(得分:0)
我不知道DAG的复制和粘贴中是否是错字,但tables = get_tables_from_bq()
应该在with models.DAG(...)
之前,而且bridge >> materialize_t
似乎缺少缩进,因此不在with models.DAG(...)
范围。附带说明,您不需要桥接任务。