Глобальные переменные в Airflow - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь реализовать базовую работу ETL, используя Airflow, но застрял в одной точке:

У меня 3 функции. И я хочу определить глобальные переменные для каждой из них, например:

function a():
   return a_result

function b():
     use a
     return b_result
function c():
     use a and b

И затем использовать эти функции в python_callable.

Определение как обычно global a_result не работает. Любые решения?

1 Ответ

1 голос
/ 11 ноября 2019

Как я написал в своем комментарии,

Когда вы возвращаете что-то в вашем python_callable, вы можете получить доступ к возвращенному значению, если передадите контекст задачи следующему оператору. https://airflow.apache.org/concepts.html?highlight=xcom

Ниже приведен полупсевдокод, иллюстрирующий идею

# inside a PythonOperator called 'pushing_task' 
def push_function(): 
    return value 

# inside another PythonOperator where provide_context=True 
def pull_function(**context): 
    value = context['task_instance'].xcom_pull(task_ids='pushing_task')

pushing_task = PythonOperator('pushing_task', 
                              push_function, ...)

pulling_task = PythonOperator('pulling_task', 
                              pull_function, 
                              provide_context=True ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...