gpt4 book ai didi

python - Airflow DAG 中的外部文件

转载 作者:太空狗 更新时间:2023-10-29 18:29:24 28 4
gpt4 key购买 nike

我正在尝试访问 Airflow 任务中的外部文件以读取一些 sql,但出现“找不到文件”。有人遇到过这个吗?

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta

dag = DAG(
'my_dat',
start_date=datetime(2017, 1, 1),
catchup=False,
schedule_interval=timedelta(days=1)
)

def run_query():
# read the query
query = open('sql/queryfile.sql')
# run the query
execute(query)

tas = PythonOperator(
task_id='run_query', dag=dag, python_callable=run_query)

日志状态如下:

IOError: [Errno 2] No such file or directory: 'sql/queryfile.sql'

我知道我可以简单地将查询复制并粘贴到同一个文件中,这确实不是一个很好的解决方案。有多个查询并且文本非常大,用 Python 代码嵌入它会降低可读性。

最佳答案

下面是一个使用Variable 来简化操作的示例。

  • 首先在Airflow UI -> Admin -> Variable 中添加Variable,例如。 {key: 'sql_path', values: 'your_sql_script_folder'}

  • 然后在您的 DAG 中添加以下代码,以使用刚刚添加的 Airflow 中的变量。

DAG代码:

import airflow
from airflow.models import Variable

tmpl_search_path = Variable.get("sql_path")

dag = airflow.DAG(
'tutorial',
schedule_interval="@daily",
template_searchpath=tmpl_search_path, # this
default_args=default_args
)
  • 现在可以使用文件夹变量下的sql脚本名或路径

  • 您可以在 this 中了解更多信息

关于python - Airflow DAG 中的外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42982986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com