🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
NEWSLIVESearch All Content
💞 Servicesâ„đïļ About✉ïļ ContactView Pricing Plansfrom $10

Variable Management and Templates in Apache Airflow

ðŸŸĒ Free Lesson

Advertisement

Variable Management and Templates

Variable Management ArchitectureAirflow UIAdmin {'>'} VarsCLIairflow variablesREST API/api/v1/varsEnv VarsAIRFLOW_VAR_*Metadata DBVariable TableVariable.get()In-memory cacheJinja Templating{'{{ var.value.my_key }}'} {'{{ var.json.get("key") }}'}Performance TipUse env vars for fast reads, DB for dynamic valuesVariable access is O(1) after cache, avoid in tight loops

Architecture Diagram

Formal Definitions

Detailed Explanation

Variable Basics

Variables provide a simple way to store configuration values across DAGs and tasks.


Operations:

OperationMethodExample
GetVariable.get(key, default_var)Variable.get("api_key", "default")
Get JSONVariable.get(key, deserialize_json=True)Returns Python dict
SetVariable.set(key, value)Variable.set("config", {"key": "val"})
CLI Getairflow variables get my_variableCommand line
CLI Setairflow variables set my_variable "value"Command line

Jinja Template Variables

Airflow provides built-in template variables for task parameters.

Common Template Variables:

VariableDescription
{{ ds }}Execution date (YYYY-MM-DD)
{{ ds_nodash }}Execution date (YYYYMMDD)
{{ ts }}Execution timestamp
{{ prev_execution_date }}Previous execution date
{{ params }}DAG run parameters
{{ ds_nodash }}Date without dashes
SELECT * FROM events 
WHERE event_date = '{{ ds }}'
AND hour = {{ params.hour }}

Variable Best Practices

PracticeDescription
Avoid in LoopDon't call Variable.get() in DAG top-level — causes DB query per parse
Use JSONStore complex configs as JSON variables
Secrets BackendUse Vault/AWS Secrets Manager for sensitive values
Default ValuesAlways provide default_var for optional variables

Variable Templates

Key Concepts Table

Variable TypeStorageAccess MethodUse Case
StringMetadata DBVariable.get("key")Simple config
JSONMetadata DBVariable.get("key", deserialize_json=True)Complex config
EnvironmentOS EnvironmentVariable.get("key") with env prefixSecrets, Docker
Secrets BackendExternal vaultVariable.get("key") with backendProduction secrets
DAG ParametersDAG run{{ params.key }}Runtime config

Code Examples

Advanced Templating Patterns

Variable Caching Strategy

Variable-Based DAG Configuration

Performance Metrics

Variable Access Patterns

Access PatternLatencyUse Case
Direct Variable.get()~5msOne-time access
Cached access~1ΞsRepeated access
Template variable~0ms (pre-rendered)DAG parameter
Secrets Backend~50msSecure values

Variable vs Parameter Comparison

FeatureVariableDAG ParameterTemplate Variable
StorageMetadata DBDAG RunPre-rendered
ScopeGlobalPer-runPer-task
MutabilityMutableImmutableImmutable
Access PatternVariable.get()params.key{{ var.value.key }}
Performance~5ms~0ms~0ms
Use CaseShared configRuntime configTask config

See Also

—
☆☆☆☆☆
0 ratings

Rate & Feedback

Need Expert Airflow Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement