SELECT * FROM `project.dataset.existing_table1`; # table2.sql SELECT * FROM `project.dataset.existing_table2`; # table3.sql SELECT * FROM `project.dataset.table2`; # table4.sql SELECT * FROM `project.dataset.table1` UNION ALL SELECT * FROM `project.dataset.table3`; # table5.sql SELECT * FROM `project.dataset.table3`; (?i)(?<=FROM|JOIN)[\s \n]*`(.+?)` 正規表現で参照先データマートを抽出 例: existing_table[12]というソーステーブルと下記SQLのtable[1-5]というデータマートがある場合
for dbt_model in dbt_models: # dbtモデルが依存するnodeのunique_idでループ for depends_on_node_unique_id in dbt_model.depends_on_models: # 依存先nodeがmodelの場合依存関係定義 if depends_on_node_unique_id.split('.')[0] == "model": depends_on_model = depends_on_node_unique_id.split('.')[-1] task_dict[depends_on_model] >> task_dict[dbt_model.table]
for source in sources: task_dict[source.table] = PythonOperator( task_id=f'wait_{source.table}', python_callable=_wait_source_created, ) # 依存関係リストから依存関係を定義 for dependency in dependencies: before = dependency['before'] after = dependency['after'] task_dict[before] >> task_dict[after]