Bird
Raised Fist0
Apache Airflowdevops~5 mins

Catchup and backfill behavior in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does 'catchup' mean in Airflow?
Catchup means Airflow runs all the missed scheduled tasks from the past until the current date when the scheduler starts or DAG is enabled.
Click to reveal answer
beginner
How do you disable catchup in an Airflow DAG?
Set the parameter catchup=False in the DAG definition to prevent Airflow from running past missed tasks.
Click to reveal answer
beginner
What is backfill in Airflow?
Backfill is a manual command to run tasks for a specific past date range, useful for filling missing data or rerunning tasks.
Click to reveal answer
intermediate
What happens if catchup is enabled and the DAG was paused for several days?
Airflow will run all the missed DAG runs for each scheduled interval from the last run date until now, catching up on all missed work.
Click to reveal answer
intermediate
How does backfill differ from catchup in Airflow?
Catchup runs missed DAG runs automatically on scheduler start or DAG enable, while backfill is a manual command to run DAG runs for specific past dates.
Click to reveal answer
What does setting catchup=False do in an Airflow DAG?
APrevents running missed past DAG runs automatically
BRuns all past DAG runs immediately
CDisables the DAG permanently
DRuns the DAG only once
Which Airflow feature lets you manually run tasks for past dates?
ACatchup
BTrigger Rule
CScheduler
DBackfill
If a DAG was paused for a week and catchup is enabled, what happens when it is unpaused?
AOnly today's tasks run
BAll missed DAG runs for the week run automatically
CNo tasks run until next schedule
DThe DAG is deleted
Which parameter controls catchup behavior in an Airflow DAG?
Acatchup
Bschedule_interval
Cstart_date
Ddepends_on_past
What is the main difference between catchup and backfill?
ACatchup is manual, backfill is automatic
BCatchup runs future tasks, backfill runs past tasks
CCatchup runs missed tasks automatically, backfill runs tasks manually for past dates
DThey are the same
Explain what catchup means in Airflow and how to control it.
Think about what happens when Airflow starts after missing scheduled runs.
You got /4 concepts.
    Describe the backfill command in Airflow and when you would use it.
    Consider how to run tasks for specific past dates on demand.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does setting catchup=True do in an Airflow DAG?
      easy
      A. It manually triggers DAG runs for a specific date range.
      B. It disables all scheduled DAG runs.
      C. It deletes all past DAG runs.
      D. It runs all missed DAG runs automatically to catch up.

      Solution

      1. Step 1: Understand catchup parameter

        The catchup parameter controls whether Airflow runs missed DAG runs automatically.
      2. Step 2: Effect of catchup=True

        When catchup=True, Airflow schedules and runs all DAG runs that were missed since the last run.
      3. Final Answer:

        It runs all missed DAG runs automatically to catch up. -> Option D
      4. Quick Check:

        catchup=True means run missed DAG runs [OK]
      Hint: Catchup=True means Airflow fills missed runs automatically [OK]
      Common Mistakes:
      • Confusing catchup with manual backfill
      • Thinking catchup disables scheduling
      • Assuming catchup deletes runs
      2. Which of the following is the correct way to disable catchup in an Airflow DAG definition?
      easy
      A. dag = DAG('my_dag', backfill=False)
      B. dag = DAG('my_dag', catchup=True)
      C. dag = DAG('my_dag', catchup=False)
      D. dag = DAG('my_dag', schedule_interval=None)

      Solution

      1. Step 1: Identify catchup parameter usage

        The catchup parameter is used to enable or disable catchup behavior in DAGs.
      2. Step 2: Disable catchup by setting catchup=False

        Setting catchup=False disables automatic running of missed DAG runs.
      3. Final Answer:

        dag = DAG('my_dag', catchup=False) -> Option C
      4. Quick Check:

        Disable catchup with catchup=False [OK]
      Hint: Use catchup=False to stop automatic missed runs [OK]
      Common Mistakes:
      • Using backfill parameter instead of catchup
      • Setting schedule_interval to None disables scheduling, not catchup
      • Setting catchup=True enables, not disables
      3. Given a DAG with start_date='2024-04-01', schedule_interval='@daily', and catchup=True, if the DAG was paused and resumed on 2024-04-05, which DAG runs will Airflow execute immediately after resuming?
      medium
      A. Runs for 2024-04-01 to 2024-04-05
      B. Only the run for 2024-04-05
      C. No runs will be executed automatically
      D. Runs for 2024-04-02 to 2024-04-04 only

      Solution

      1. Step 1: Understand catchup=True behavior

        With catchup=True, Airflow runs all missed DAG runs from start_date to current date.
      2. Step 2: Identify missed runs

        The DAG was paused from 2024-04-01 to 2024-04-04, so runs for 2024-04-01, 02, 03, 04 were missed. On resuming 2024-04-05, Airflow runs all missed plus current.
      3. Final Answer:

        Runs for 2024-04-01 to 2024-04-05 -> Option A
      4. Quick Check:

        Catchup runs all missed dates including current [OK]
      Hint: Catchup runs all missed dates from start_date to now [OK]
      Common Mistakes:
      • Thinking only current date runs after resume
      • Ignoring runs before resume date
      • Assuming no runs run automatically after pause
      4. You want to run DAG runs manually for the dates 2024-03-01 to 2024-03-05 without enabling catchup. Which command should you use?
      medium
      A. airflow dags backfill -s 2024-03-01 -e 2024-03-05 my_dag
      B. airflow dags trigger my_dag --start-date 2024-03-01 --end-date 2024-03-05
      C. airflow dags run my_dag 2024-03-01 to 2024-03-05
      D. airflow dags catchup my_dag -s 2024-03-01 -e 2024-03-05

      Solution

      1. Step 1: Identify manual run command for date range

        The airflow dags backfill command runs DAG runs manually for a specified date range.
      2. Step 2: Confirm correct syntax

        Using -s and -e flags with backfill specifies start and end dates for manual runs.
      3. Final Answer:

        airflow dags backfill -s 2024-03-01 -e 2024-03-05 my_dag -> Option A
      4. Quick Check:

        Backfill runs DAG manually for date range [OK]
      Hint: Use airflow dags backfill with -s and -e for manual runs [OK]
      Common Mistakes:
      • Using trigger command with date range flags (not supported)
      • Trying to use catchup command (does not exist)
      • Using dags run with invalid date range syntax
      5. You have a DAG with catchup=False and a start_date set to 2024-01-01. You want to run all DAG runs from 2024-01-01 to 2024-01-10 manually. What is the best approach to achieve this without enabling catchup?
      hard
      A. Set catchup=True and wait for Airflow to run all missed DAG runs automatically.
      B. Use the backfill command for the date range 2024-01-01 to 2024-01-10.
      C. Manually trigger the DAG once on 2024-01-10; Airflow will run all previous runs.
      D. Change the start_date to 2024-01-10 and run the DAG normally.

      Solution

      1. Step 1: Understand catchup=False effect

        With catchup=False, Airflow skips running missed DAG runs automatically.
      2. Step 2: Use backfill to run missed DAG runs manually

        To run missed DAG runs without enabling catchup, use the backfill command specifying the date range.
      3. Final Answer:

        Use the backfill command for the date range 2024-01-01 to 2024-01-10. -> Option B
      4. Quick Check:

        Backfill runs missed DAG runs manually without catchup [OK]
      Hint: Backfill runs missed DAG runs manually when catchup is off [OK]
      Common Mistakes:
      • Enabling catchup when not desired
      • Assuming one trigger runs all missed dates
      • Changing start_date to skip missed runs
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard