web-dev-qa-db-ja.com

Airflow:PythonOperator: 'ds' argを含める理由

後でpython_callableとして使用される関数を定義しているときに、関数の最初の引数として「ds」が含まれているのはなぜですか?

例えば:

def python_func(ds, **kwargs):
    pass

Airflowのドキュメントを調べましたが、説明は見つかりませんでした。

14
subba

これは、provide_context=Trueパラメータに関連しています。 Airflowのドキュメントに従って、

trueに設定すると、Airflowは関数で使用できるキーワード引数のセットを渡します。このクワーグのセットは、ジンジャテンプレートで使用できるものと正確に対応しています。これを機能させるには、関数ヘッダーで** kwargsを定義する必要があります。

dsは、これらのキーワード引数の1つであり、「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'))

お役に立てれば。

29
Dmitri Safine