後でpython_callableとして使用される関数を定義しているときに、関数の最初の引数として「ds」が含まれているのはなぜですか?
例えば:
def python_func(ds, **kwargs):
pass
Airflowのドキュメントを調べましたが、説明は見つかりませんでした。
これは、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'))
お役に立てれば。