我可以 运行 没有模板的 dag 中的 sql 语句吗
Can I run a sql statement from a dag without a template
我尝试使用 BigQueryInsertJobOperator 运行 一个 .sql 文件将数据插入 table。我收到一条错误消息,提示未找到模板。查看模板,它们看起来构建起来相当复杂......是否有从 airflow dag 到仅 运行 具有给定 SA 的一次性脚本?还是没那么容易?
您可以使用下面的代码实现同样的效果
t1 = BashOperator(
task_id='Export_to_gcs',
bash_command ='python /home/airflow/gcs/dags/Scripts/insert_into_bigquery.py',
dag=dag)
您可以在您的 dags 主文件夹中创建一个名为 Scripts 的文件夹,然后将您的主脚本放在一个文件夹中。
您可以在 bash 命令中传递此文件路径。
这是我发现最优化的方式。
如果您需要使用 python 将数据加载到 BigQuery 的示例代码,请告诉我,我可以帮助您
按您的要求添加代码。
project_id = ''
client = bigquery.Client()
query_job = client.query("""
INSERT INTO `ProjectC.dataset.table` (Col1, Col2, Col3) SELECT (Col1, Col2,
Col3) FROM `ProjectB.dataset.table`
""")
results = query_job.result()
我尝试使用 BigQueryInsertJobOperator 运行 一个 .sql 文件将数据插入 table。我收到一条错误消息,提示未找到模板。查看模板,它们看起来构建起来相当复杂......是否有从 airflow dag 到仅 运行 具有给定 SA 的一次性脚本?还是没那么容易?
您可以使用下面的代码实现同样的效果
t1 = BashOperator(
task_id='Export_to_gcs',
bash_command ='python /home/airflow/gcs/dags/Scripts/insert_into_bigquery.py',
dag=dag)
您可以在您的 dags 主文件夹中创建一个名为 Scripts 的文件夹,然后将您的主脚本放在一个文件夹中。
您可以在 bash 命令中传递此文件路径。
这是我发现最优化的方式。
如果您需要使用 python 将数据加载到 BigQuery 的示例代码,请告诉我,我可以帮助您
按您的要求添加代码。
project_id = ''
client = bigquery.Client()
query_job = client.query("""
INSERT INTO `ProjectC.dataset.table` (Col1, Col2, Col3) SELECT (Col1, Col2,
Col3) FROM `ProjectB.dataset.table`
""")
results = query_job.result()