Building Data Pipelines with Airflow
Volker Janz
Senior Developer Advocate at Astronomer

from airflow.sdk import Asset
sales_data = Asset("s3://bucket/sales/daily.parquet")

sales_data = Asset("s3://bucket/sales/daily.parquet")@task(outlets=[sales_data]) def write_sales(): # Write data to S3 ...
sales_data = Asset("s3://bucket/sales/daily.parquet")@dag(schedule=[sales_data]) def build_dashboard(): ...
sales = Asset("s3://bucket/sales.parquet") inventory = Asset("s3://bucket/inventory.parquet")# Wait for BOTH assets to update @dag(schedule=(sales & inventory)) def full_report(): ...# Trigger when ANY asset updates @dag(schedule=(sales | inventory)) def quick_refresh(): ...
$ airflow assets list
name | group | uri
s3://data-lake/sales/daily.csv | asset | s3://data-lake/sales/daily.csv
$ airflow assets details --name "s3://data-lake/sales/daily.csv"
property_name | property_value
=================+=====================
name | s3://data-lake/sales/daily.csv
...
updated_at | 2026-04-14T10:00:50.820041Z
airflow assets list shows all registered assetsairflow assets details shows metadata including updated_atBuilding Data Pipelines with Airflow