I am trying to implement basic ETL job, using Airflow, but stucked in one point:
I have 3 functions. And I want to define global variables for each of them like:
function a():
   return a_result
function b():
     use a
     return b_result
function c():
     use a and b
And then use these functions in python_callable.
Defining as usual global a_result is not working. Any solutions?
As I wrote in my comment,
When you return something in your
python_callable, you can access the returned value if you pass the task context to the next operator. https://airflow.apache.org/concepts.html?highlight=xcom
The following is semi-pseudo code that illustrates the idea
# 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 ...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With