气流:PythonOperator:为什么要包含 'ds' arg?
Airflow: PythonOperator: why to include 'ds' arg?
在定义稍后用作 python_callable 的函数时,为什么 'ds' 包含在函数的第一个参数中?
例如:
def python_func(ds, **kwargs):
pass
我查看了 Airflow 文档,但找不到任何解释。
这与provide_context=True
参数有关。根据 Airflow 文档,
if set to true, Airflow will pass a set of keyword arguments that can be used in your function. This set of kwargs correspond exactly to what you can use in your jinja templates. For this to work, you need to define **kwargs in your function header.
ds
是这些关键字参数之一,以 "YYYY-MM-DD" 格式表示执行日期。对于文档中标记为(模板化)的参数,您可以使用 '{{ ds }}'
默认变量来传递执行日期。您可以在此处阅读有关默认变量的更多信息:
https://pythonhosted.org/airflow/code.html?highlight=pythonoperator#default-variables(过时)
https://airflow.incubator.apache.org/concepts.html?highlight=python_callable
PythonOperator 没有模板化参数,所以做类似
的事情
python_callable=print_execution_date('{{ ds }}')
行不通。要在 PythonOperator 的可调用函数中打印执行日期,您必须按
def print_execution_date(ds, **kwargs):
print(ds)
或
def print_execution_date(**kwargs):
print(kwargs.get('ds'))
希望对您有所帮助。
在定义稍后用作 python_callable 的函数时,为什么 'ds' 包含在函数的第一个参数中?
例如:
def python_func(ds, **kwargs):
pass
我查看了 Airflow 文档,但找不到任何解释。
这与provide_context=True
参数有关。根据 Airflow 文档,
if set to true, Airflow will pass a set of keyword arguments that can be used in your function. This set of kwargs correspond exactly to what you can use in your jinja templates. For this to work, you need to define **kwargs in your function header.
ds
是这些关键字参数之一,以 "YYYY-MM-DD" 格式表示执行日期。对于文档中标记为(模板化)的参数,您可以使用 '{{ ds }}'
默认变量来传递执行日期。您可以在此处阅读有关默认变量的更多信息:
https://pythonhosted.org/airflow/code.html?highlight=pythonoperator#default-variables(过时)
https://airflow.incubator.apache.org/concepts.html?highlight=python_callable
PythonOperator 没有模板化参数,所以做类似
的事情python_callable=print_execution_date('{{ ds }}')
行不通。要在 PythonOperator 的可调用函数中打印执行日期,您必须按
def print_execution_date(ds, **kwargs):
print(ds)
或
def print_execution_date(**kwargs):
print(kwargs.get('ds'))
希望对您有所帮助。