Bird
Raised Fist0
Apache Airflowdevops~5 mins

Timetables for complex schedules in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Timetable in Apache Airflow?
A Timetable in Airflow defines when and how often a workflow (DAG) should run. It controls the schedule beyond simple cron expressions, allowing complex timing rules.
Click to reveal answer
intermediate
How does a Timetable differ from a cron schedule in Airflow?
A cron schedule is a simple string defining fixed times, while a Timetable is a Python class that can generate complex schedules dynamically, like irregular intervals or event-based triggers.
Click to reveal answer
intermediate
Which method must be implemented in a custom Airflow Timetable class?
The method 'next_dagrun_info' must be implemented. It returns the next scheduled run time and optional metadata for the DAG run.
Click to reveal answer
advanced
What is the role of 'logical_date' in Airflow Timetables?
The 'logical_date' represents the scheduled time for a DAG run, not the actual execution time. Timetables use it to calculate the next run time accurately.
Click to reveal answer
advanced
Give an example use case for a custom Timetable in Airflow.
When you need to run a DAG on complex patterns like 'every first Monday of the month' or 'only on business days excluding holidays', a custom Timetable can handle these rules.
Click to reveal answer
What does an Airflow Timetable primarily control?
AThe resources used by a DAG
BThe order of tasks inside a DAG
CWhen and how often a DAG runs
DThe logs generated by a DAG
Which method must a custom Timetable class implement?
Astart_dag
Bexecute_task
Cget_logs
Dnext_dagrun_info
What is the 'logical_date' in Airflow scheduling?
AThe scheduled time for a DAG run
BThe actual time a task starts
CThe time a DAG finishes
DThe current system time
Why use a custom Timetable instead of cron?
ATo handle complex or irregular schedules
BTo speed up task execution
CTo reduce memory usage
DTo change task dependencies
Which of these is NOT a feature of Airflow Timetables?
ADynamic schedule generation
BTask retry management
CSupport for complex calendar rules
DCustom logic for run times
Explain what an Airflow Timetable is and why you might create a custom one.
Think about when simple cron is not enough.
You got /3 concepts.
    Describe the role of the 'next_dagrun_info' method in a custom Timetable.
    This method is key to scheduling logic.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a timetable in Apache Airflow?
      easy
      A. To control when workflows (DAGs) are scheduled to run
      B. To store data processed by workflows
      C. To define the tasks inside a workflow
      D. To monitor the status of running tasks

      Solution

      1. Step 1: Understand Airflow scheduling

        Airflow uses timetables to decide when to start running workflows (DAGs).
      2. Step 2: Differentiate timetable from other components

        Timetables do not store data, define tasks, or monitor tasks; they only schedule runs.
      3. Final Answer:

        To control when workflows (DAGs) are scheduled to run -> Option A
      4. Quick Check:

        Timetable = schedule control [OK]
      Hint: Timetables decide when workflows start running [OK]
      Common Mistakes:
      • Confusing timetable with task definitions
      • Thinking timetable stores data
      • Mixing timetable with monitoring features
      2. Which of the following is the correct way to import the built-in cron timetable in Airflow 2.5+?
      easy
      A. import airflow.timetables.Cron as CronTimetable
      B. import airflow.timetable.cron as CronTimetable
      C. from airflow.schedules import CronTimetable
      D. from airflow.timetables.cron import CronTimetable

      Solution

      1. Step 1: Recall Airflow timetable import paths

        Airflow 2.5+ uses airflow.timetables.cron for cron timetable classes.
      2. Step 2: Check syntax correctness

        from airflow.timetables.cron import CronTimetable uses correct module and class name with proper Python import syntax.
      3. Final Answer:

        from airflow.timetables.cron import CronTimetable -> Option D
      4. Quick Check:

        Correct import path = from airflow.timetables.cron import CronTimetable [OK]
      Hint: Use airflow.timetables.cron for cron timetable imports [OK]
      Common Mistakes:
      • Using wrong module name like 'schedules' instead of 'timetables'
      • Incorrect capitalization in module or class names
      • Wrong import syntax causing errors
      3. Given this Airflow timetable code snippet, what schedule does it represent?
      from airflow.timetables.cron import CronTimetable
      cron = CronTimetable('0 6 * * 1-5')
      medium
      A. Runs every day at 6:00 AM
      B. Runs every hour from 6 AM to 5 PM
      C. Runs at 6:00 AM every weekday (Monday to Friday)
      D. Runs only on weekends at 6:00 AM

      Solution

      1. Step 1: Interpret the cron expression '0 6 * * 1-5'

        The fields mean: minute=0, hour=6, day=any, month=any, weekday=1-5 (Monday to Friday).
      2. Step 2: Match cron to schedule meaning

        This means the job runs at 6:00 AM on weekdays only.
      3. Final Answer:

        Runs at 6:00 AM every weekday (Monday to Friday) -> Option C
      4. Quick Check:

        Cron '0 6 * * 1-5' = Weekday 6 AM [OK]
      Hint: Cron weekdays 1-5 means Monday to Friday [OK]
      Common Mistakes:
      • Assuming it runs every day instead of weekdays only
      • Confusing hour and minute fields
      • Thinking it runs on weekends
      4. You wrote this custom timetable code but Airflow raises an error:
      class MyTimetable:
          def __init__(self, cron):
              self.cron = cron
      
      my_tt = MyTimetable('0 0 * * *')

      What is the likely cause of the error?
      medium
      A. Not importing CronTimetable from airflow
      B. Missing required methods like 'next_dagrun_info' in the timetable class
      C. Using a class instead of a function for timetable
      D. Incorrect cron string format

      Solution

      1. Step 1: Understand Airflow timetable requirements

        Custom timetables must implement specific methods like 'next_dagrun_info' to work.
      2. Step 2: Check provided class

        The class only stores cron string but lacks required methods, causing Airflow error.
      3. Final Answer:

        Missing required methods like 'next_dagrun_info' in the timetable class -> Option B
      4. Quick Check:

        Custom timetable needs required methods [OK]
      Hint: Custom timetables must implement Airflow's required methods [OK]
      Common Mistakes:
      • Assuming any class with cron string works as timetable
      • Blaming cron string format without checking methods
      • Confusing timetable class with task definitions
      5. You want to run a DAG every Monday at 8 AM and also on the 1st day of every month at 9 AM. Which Airflow timetable setup correctly combines these schedules?
      hard
      A. Use a custom timetable that combines two CronTimetable instances for '0 8 * * 1' and '0 9 1 * *', then merges their schedules
      B. Create two DAGs, one with '0 8 * * 1' and another with '0 9 1 * *', then combine their runs manually
      C. Use a single CronTimetable with expression '0 8 * * 1,0 9 1 * *'
      D. Set schedule_interval='@weekly' and add a sensor to trigger on the 1st day of month

      Solution

      1. Step 1: Understand the scheduling needs

        We need two different schedules: Mondays at 8 AM and 1st day of month at 9 AM.
      2. Step 2: Evaluate options for combining schedules

        A single cron expression cannot represent both times simultaneously. Two DAGs is possible but not ideal. A custom timetable combining two CronTimetable instances is the correct approach.
      3. Step 3: Why other options fail

        Use a single CronTimetable with expression '0 8 * * 1,0 9 1 * *' is invalid cron syntax. Create two DAGs, one with '0 8 * * 1' and another with '0 9 1 * *', then combine their runs manually is manual and complex. Set schedule_interval='@weekly' and add a sensor to trigger on the 1st day of month uses sensors which is indirect and less clean.
      4. Final Answer:

        Use a custom timetable that combines two CronTimetable instances for '0 8 * * 1' and '0 9 1 * *', then merges their schedules -> Option A
      5. Quick Check:

        Combine schedules with custom timetable = Use a custom timetable that combines two CronTimetable instances for '0 8 * * 1' and '0 9 1 * *', then merges their schedules [OK]
      Hint: Combine multiple cron schedules with a custom timetable class [OK]
      Common Mistakes:
      • Trying to put two cron expressions in one string
      • Creating multiple DAGs instead of one with combined timetable
      • Using sensors instead of proper timetable combination
      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