Schemalägga DAG:ar

Introduktion till Apache Airflow i Python

Mike Metzger

Data Engineer

DAG-körningar

  • En specifik instans av ett arbetsflöde vid en given tidpunkt
  • Kan köras manuellt eller via schedule
  • Bevarar tillstånd för varje arbetsflöde och dess uppgifter
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Introduktion till Apache Airflow i Python

Vyn DAG-körningar

Airflow DAG-körningssida med en lista över senaste körningar för alla DAG:ar

Introduktion till Apache Airflow i Python

DAG-körningarnas status

Airflow DAG-körningssida som visar statuskolumnen för varje körning

Introduktion till Apache Airflow i Python

Schemaläggningsdetaljer

Vid schemaläggning av en DAG finns det flera viktiga attribut:

  • start_date – Datum/tid för den första schemalagda DAG-körningen
  • end_date – Valfritt attribut som anger när nya DAG-instanser ska sluta köras
    • start_date och end_date använder båda ett datetime(year, month, day)-objekt, till exempel:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Introduktion till Apache Airflow i Python

Schedule

schedule anger:

  • Hur ofta DAG:en ska schemaläggas
  • Inom intervallet mellan start_date och end_date
  • Kan definieras med cron-syntax, inbyggda förinställningar eller timedeltas.
Introduktion till Apache Airflow i Python

cron-syntax

Diagram över cron-syntax med fem mellanslagsseparerade tidsfält

  • Från Unix cron-formatet
  • 5 fält separerade med mellanslag
  • * innebär körning för varje intervall (t.ex. varje minut, varje dag)
  • Kommaseparerade värden i fält kan användas för en lista med värden
Introduktion till Apache Airflow i Python

cron-exempel

Diagram över cron-syntax med fem mellanslagsseparerade tidsfält

0 12 * * *              # Run daily at noon
* * 25 2 *              # Run once per minute on February 25
0,15,30,45 * * * *      # Run every 15 minutes
Introduktion till Apache Airflow i Python

Airflows schemaläggningsförinställningar

Förinställning:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

cron-motsvarighet:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Introduktion till Apache Airflow i Python

Speciella förinställningar

Airflow har tre speciella schedule-förinställningar:

  • None – Schemalägger aldrig; används för manuellt utlösta DAG:ar
  • @once – Schemalägger endast en gång
  • @continuous – Körs omedelbart efter att föregående körning är klar
Introduktion till Apache Airflow i Python

timedelta

  • Kan även använda pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Introduktion till Apache Airflow i Python

Tillämpa scheman

  • Schema definieras på DAG:en
  • Använder parametern schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Introduktion till Apache Airflow i Python

Schemaläggningsproblem

Vid schemaläggning av en DAG gäller i Airflow:

  • Ett fullt intervall måste passera efter startdatumet
  • Uppgiften schemaläggs vid start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Tidigaste möjliga körtid för DAG:en är den 26 februari 2026

Introduktion till Apache Airflow i Python

Nu kör vi en övning!

Introduktion till Apache Airflow i Python

Preparing Video For Download...