Bird
Raised Fist0
Apache Airflowdevops~20 mins

DAG performance tracking in Apache Airflow - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
DAG Performance Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
Identify DAG run duration from Airflow CLI output
You run the command airflow dags list-runs -d example_dag and get the following output snippet:
run_id          | state   | execution_date       | start_date          | end_date            
--------------- | ------- | --------------------| ------------------- | ------------------- 
manual__2024-06-01T00:00:00+00:00 | success | 2024-06-01 00:00:00 | 2024-06-01 00:01:00 | 2024-06-01 00:05:00

What is the duration of this DAG run?
A4 minutes
B5 minutes
C1 minute
D6 minutes
Attempts:
2 left
💡 Hint
Subtract the start_date from the end_date to find the duration.
🧠 Conceptual
intermediate
1:00remaining
Understanding Airflow task duration metrics
Which Airflow metric best helps you track how long individual tasks take to complete within a DAG run?
AScheduler heartbeat
BTask duration
CDAG concurrency
DPool slots
Attempts:
2 left
💡 Hint
Think about what measures time spent per task.
🔀 Workflow
advanced
2:00remaining
Steps to enable DAG run duration logging in Airflow
You want to track DAG run durations by logging start and end times automatically. Which sequence of steps is correct?
A3,1,2,4
B1,3,2,4
C1,2,3,4
D2,1,3,4
Attempts:
2 left
💡 Hint
Start with enabling logging, then configure callbacks, then write functions.
❓ Troubleshoot
advanced
1:30remaining
Diagnosing missing DAG run duration data in Airflow UI
You notice that DAG run durations are not showing in the Airflow UI. Which of the following is the most likely cause?
AThe Airflow webserver is down
BThe Airflow scheduler is running normally
CThe DAG has completed successfully with recorded start and end times
DThe DAG runs are stuck in queued state and never start
Attempts:
2 left
💡 Hint
If runs never start, duration cannot be calculated.
✅ Best Practice
expert
2:00remaining
Best practice for long-term DAG performance tracking in Airflow
What is the best practice to maintain historical DAG performance data over months without impacting Airflow database performance?
AExport DAG run and task instance metrics regularly to an external monitoring system
BKeep all DAG run data indefinitely in Airflow's metadata database
CDisable DAG run logging to reduce database size
DManually delete DAG run records weekly
Attempts:
2 left
💡 Hint
Think about separating monitoring data from the main Airflow database.

Practice

(1/5)
1. What is the main purpose of tracking DAG performance in Airflow?
easy
A. To measure how long workflows and tasks take to run
B. To change the order of tasks in a DAG
C. To create new DAGs automatically
D. To delete old task logs

Solution

  1. Step 1: Understand DAG performance tracking

    DAG performance tracking focuses on measuring execution times of workflows and tasks.
  2. Step 2: Identify the main goal

    The goal is to find how long tasks and DAG runs take to help improve pipeline speed.
  3. Final Answer:

    To measure how long workflows and tasks take to run -> Option A
  4. Quick Check:

    DAG performance tracking = measuring run times [OK]
Hint: Think: performance means measuring speed or time [OK]
Common Mistakes:
  • Confusing performance tracking with task ordering
  • Thinking it creates or deletes DAGs
  • Mixing logs management with performance tracking
2. Which Airflow model stores information about individual task execution times?
easy
A. DagRun
B. Variable
C. TaskInstance
D. Connection

Solution

  1. Step 1: Identify models related to execution times

    DagRun stores info about the whole DAG run, TaskInstance stores info about each task run.
  2. Step 2: Match model to task execution time

    TaskInstance tracks start and end times for each task, so it holds execution time data.
  3. Final Answer:

    TaskInstance -> Option C
  4. Quick Check:

    TaskInstance = task execution info [OK]
Hint: TaskInstance = single task run details [OK]
Common Mistakes:
  • Choosing DagRun which tracks whole DAG, not tasks
  • Confusing Variables or Connections with timing data
  • Assuming all info is in one model
3. Given this code snippet, what will be printed?
from airflow.models import TaskInstance
from datetime import datetime, timedelta

start = datetime(2024, 6, 1, 10, 0, 0)
end = datetime(2024, 6, 1, 10, 5, 30)
ti = TaskInstance(dag_id='example_dag', task_id='task1', execution_date=start)
ti.start_date = start
ti.end_date = end
print((ti.end_date - ti.start_date).total_seconds())
medium
A. 5.5
B. 330
C. SyntaxError
D. 330.0

Solution

  1. Step 1: Identify variable name mismatch

    The code assigns TaskInstance to 'ti' but prints using 'ti', which is correct. However, the code snippet uses 'ti' consistently, so no mismatch here.
  2. Step 2: Check for syntax errors

    The code is syntactically correct, but the TaskInstance constructor requires a DAG object or context in recent Airflow versions, so this code may raise a runtime error.
  3. Step 3: Consider the actual output

    Assuming the code runs, the output would be 330.0 seconds.
  4. Final Answer:

    330.0 -> Option D
  5. Quick Check:

    5 min 30 sec = 330.0 seconds [OK]
Hint: Subtract datetimes, use total_seconds() for float seconds [OK]
Common Mistakes:
  • Confusing minutes with seconds
  • Expecting integer instead of float
  • Syntax errors from missing imports (not here)
4. You wrote this code to get task duration but it raises an error:
ti = TaskInstance(dag_id='example_dag', task_id='task1', execution_date='2024-06-01T10:00:00')
ti.start_date = datetime(2024, 6, 1, 10, 0, 0)
ti.end_date = datetime(2024, 6, 1, 10, 5, 0)
duration = (ti.end_date - ti.start_date).total_seconds()
print(duration)
What is the likely cause of the error?
medium
A. execution_date should be a datetime, not a string
B. start_date and end_date must be strings
C. TaskInstance requires a DAG object on creation
D. total_seconds() is not a valid method

Solution

  1. Step 1: Check execution_date type

    execution_date must be a datetime object, not a string, to avoid errors.
  2. Step 2: Confirm other parts are correct

    start_date and end_date are datetime objects, total_seconds() is valid method.
  3. Final Answer:

    execution_date should be a datetime, not a string -> Option A
  4. Quick Check:

    execution_date type error = execution_date should be a datetime, not a string [OK]
Hint: Pass datetime objects, not strings, for execution_date [OK]
Common Mistakes:
  • Passing string instead of datetime for execution_date
  • Thinking start_date/end_date must be strings
  • Believing total_seconds() is invalid
5. You want to track the average duration of all tasks in a DAG run using Airflow's ORM models. Which approach is best?
hard
A. Calculate average duration by counting TaskInstance rows only
B. Query TaskInstance for all tasks of the DAG run, calculate average of (end_date - start_date)
C. Use Airflow Variables to store durations manually
D. Query DagRun for duration and divide by number of tasks

Solution

  1. Step 1: Understand data sources for task durations

    TaskInstance has start_date and end_date for each task, so durations come from there.
  2. Step 2: Calculate average duration correctly

    Query all TaskInstances for the DAG run, compute (end_date - start_date) for each, then average.
  3. Final Answer:

    Query TaskInstance for all tasks of the DAG run, calculate average of (end_date - start_date) -> Option B
  4. Quick Check:

    Average task duration = average of TaskInstance times [OK]
Hint: Average durations come from TaskInstance times, not DagRun [OK]
Common Mistakes:
  • Using DagRun duration divided by task count (wrong average)
  • Storing durations manually in Variables (extra work)
  • Counting rows without timing info
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