Variables — Airflow 3.2.2 Documentation (original) (raw)

Variables are Airflow’s runtime configuration concept - a general key/value store that is global and can be queried from your tasks, and easily set via Airflow’s user interface, or bulk-uploaded as a JSON file.

To use them, just import and call get on the Variable model:

from airflow.sdk import Variable

Normal call style

foo = Variable.get("foo")

Auto-deserializes a JSON value

bar = Variable.get("bar", deserialize_json=True)

Returns the value of default (None) if the variable is not set

baz = Variable.get("baz", default=None)

You can also access variables through the Task Context usingget_current_context():

from airflow.sdk import get_current_context

def my_task(): context = get_current_context() var = context["var"] my_variable = var["value"].get("my_variable_name") return my_variable

The context["var"] dictionary provides two ways to access variables:

You can also use them from templates:

Raw value

echo {{ var.value. }}

Auto-deserialize JSON value

echo {{ var.json. }}

Variables are global unless created for a specific Airflow Team (if your environment is configured to use Multi-Team). Global Variables should only be used for overall configuration that covers the entire installation. Team based Variables should be used for overall configuration related to one specific Team. To pass data from one Task/Operator to another, you should use XComs instead.

We also recommend that you try to keep most of your settings and configuration in your Dag files, so it can be versioned using source control; Variables are really only for values that are truly runtime-dependent.

For more information on setting and managing variables, see Managing Variables.