Lors de la définition d'une fonction à utiliser ultérieurement comme python_callable, pourquoi "ds" est-il inclus comme premier argument de la fonction?
Par exemple:
def python_func(ds, **kwargs):
pass
J'ai regardé la documentation d'Airflow, mais je n'ai trouvé aucune explication.
Ceci est lié au provide_context=True
paramètre. Selon la documentation Airflow,
s'il est défini sur true, Airflow transmettra un ensemble d'arguments de mots clés pouvant être utilisés dans votre fonction. Cet ensemble de kwargs correspond exactement à ce que vous pouvez utiliser dans vos modèles jinja. Pour que cela fonctionne, vous devez définir ** kwargs dans votre en-tête de fonction.
ds
est l'un de ces arguments de mot-clé et représente la date d'exécution au format "AAAA-MM-JJ". Pour les paramètres marqués comme (modèles) dans la documentation, vous pouvez utiliser '{{ ds }}'
variable par défaut pour passer la date d'exécution. Vous pouvez en savoir plus sur les variables par défaut ici:
https://pythonhosted.org/airflow/code.html?highlight=pythonoperator#default-variables (obsolète)
https://airflow.incubator.Apache.org/concepts.html?highlight=python_callable
PythonOperator n'a pas de paramètres modèles, donc faire quelque chose comme
python_callable=print_execution_date('{{ ds }}')
ne fonctionnera pas. Pour imprimer la date d'exécution à l'intérieur de la fonction appelable de votre PythonOperator, vous devrez le faire comme
def print_execution_date(ds, **kwargs):
print(ds)
ou
def print_execution_date(**kwargs):
print(kwargs.get('ds'))
J'espère que cela t'aides.