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