Bird
Raised Fist0
Apache Airflowdevops~5 mins

DAG concept (Directed Acyclic Graph) in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does DAG stand for in Airflow?
DAG stands for Directed Acyclic Graph. It is a collection of tasks with a defined order and no cycles.
Click to reveal answer
beginner
Why must a DAG be acyclic?
A DAG must be acyclic to avoid infinite loops in task execution. This ensures tasks run in a clear, one-way order.
Click to reveal answer
beginner
In Airflow, what does the direction in a DAG represent?
The direction shows the order tasks should run. An arrow from Task A to Task B means Task A runs before Task B.
Click to reveal answer
intermediate
How does Airflow use DAGs to manage workflows?
Airflow uses DAGs to define workflows as tasks connected by dependencies. It schedules and runs tasks following the DAG order.
Click to reveal answer
intermediate
What happens if a cycle is introduced in an Airflow DAG?
Airflow will raise an error because cycles cause tasks to depend on themselves, making execution impossible.
Click to reveal answer
What is a key property of a DAG in Airflow?
AIt has only one task
BIt allows tasks to run in any order
CIt repeats tasks infinitely
DIt has no cycles
In a DAG, what does an arrow from Task A to Task B mean?
ATask A runs before Task B
BTasks run at the same time
CTask B runs before Task A
DTasks are unrelated
Why does Airflow reject DAGs with cycles?
ACycles speed up execution
BCycles reduce task dependencies
CCycles cause infinite loops
DCycles are allowed in Airflow
What does Airflow use DAGs for?
ATo define and schedule workflows
BTo store data
CTo create user interfaces
DTo monitor servers
Which of these is NOT true about DAGs?
AThey have directed edges
BThey can have cycles
CThey define task order
DThey are used in Airflow
Explain what a Directed Acyclic Graph (DAG) is and why it is important in Airflow.
Think about how tasks depend on each other and why loops would cause problems.
You got /4 concepts.
    Describe what happens if you try to create a cycle in an Airflow DAG and why Airflow prevents it.
    Consider what would happen if tasks kept waiting for each other forever.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is a DAG in Apache Airflow?
      easy
      A. A tool to store data in a database
      B. A programming language for writing tasks
      C. A type of server used to run Airflow
      D. A Directed Acyclic Graph that defines task order without loops

      Solution

      1. Step 1: Understand the meaning of DAG

        DAG stands for Directed Acyclic Graph, which means tasks are connected in one direction without cycles or loops.
      2. Step 2: Relate DAG to Airflow

        In Airflow, DAGs organize tasks so they run in a specific order safely and predictably.
      3. Final Answer:

        A Directed Acyclic Graph that defines task order without loops -> Option D
      4. Quick Check:

        DAG = Directed Acyclic Graph [OK]
      Hint: Remember DAG means tasks flow one way, no loops [OK]
      Common Mistakes:
      • Thinking DAG is a database or server
      • Confusing DAG with a programming language
      • Assuming tasks can loop back in DAG
      2. Which of the following is the correct way to define a DAG in Airflow using Python?
      easy
      A. dag = DAG('my_dag', schedule_interval='@daily')
      B. dag = DAG('my_dag', run_every='daily')
      C. dag = DAG('my_dag', interval='daily')
      D. dag = DAG('my_dag', schedule='daily')

      Solution

      1. Step 1: Recall Airflow DAG parameters

        The correct parameter to set the schedule is schedule_interval.
      2. Step 2: Match the correct syntax

        Only dag = DAG('my_dag', schedule_interval='@daily') uses schedule_interval='@daily', which is valid syntax.
      3. Final Answer:

        dag = DAG('my_dag', schedule_interval='@daily') -> Option A
      4. Quick Check:

        Use schedule_interval to set DAG schedule [OK]
      Hint: Use schedule_interval, not run_every or schedule [OK]
      Common Mistakes:
      • Using wrong parameter names like run_every
      • Forgetting quotes around schedule value
      • Using invalid schedule strings
      3. Given this DAG snippet, what is the order of task execution?
      task1 >> task2 >> task3
      medium
      A. task3 runs first, then task2, then task1
      B. All tasks run at the same time
      C. task1 runs first, then task2, then task3
      D. task2 runs first, then task1, then task3

      Solution

      1. Step 1: Understand the '>>' operator in Airflow

        The '>>' operator means 'set downstream', so task1 runs before task2, and task2 before task3.
      2. Step 2: Determine execution order

        Tasks run in the order task1, then task2, then task3.
      3. Final Answer:

        task1 runs first, then task2, then task3 -> Option C
      4. Quick Check:

        task1 >> task2 >> task3 means sequential order [OK]
      Hint: Remember '>>' means run left task before right task [OK]
      Common Mistakes:
      • Thinking '>>' means run tasks in parallel
      • Reversing the order of tasks
      • Assuming tasks run simultaneously
      4. What is wrong with this DAG task dependency code?
      task1.set_downstream(task2)
      task2.set_downstream(task1)
      medium
      A. It creates a cycle, which is not allowed in DAGs
      B. The syntax for set_downstream is incorrect
      C. Tasks must be named differently
      D. No error, this is valid

      Solution

      1. Step 1: Analyze the dependencies

        task1 depends on task2, and task2 depends on task1, creating a loop.
      2. Step 2: Understand DAG rules

        DAGs cannot have cycles; tasks must not depend on each other circularly.
      3. Final Answer:

        It creates a cycle, which is not allowed in DAGs -> Option A
      4. Quick Check:

        DAGs must be acyclic, no loops allowed [OK]
      Hint: Check for circular dependencies to avoid cycles [OK]
      Common Mistakes:
      • Ignoring circular dependencies
      • Assuming set_downstream syntax is wrong
      • Thinking task names cause errors
      5. You want to create a DAG where task3 runs only after both task1 and task2 complete. Which code correctly sets this dependency?
      hard
      A. task3 >> task1 task3 >> task2
      B. task1 >> task3 task2 >> task3
      C. task1 << task3 task2 << task3
      D. task3.set_downstream([task1, task2])

      Solution

      1. Step 1: Understand dependency direction

        To run task3 after task1 and task2, task1 and task2 must be upstream of task3.
      2. Step 2: Check correct syntax

        Using '>>' from task1 and task2 to task3 sets task3 to run after both complete.
      3. Final Answer:

        task1 >> task3 task2 >> task3 -> Option B
      4. Quick Check:

        Upstream tasks >> downstream task [OK]
      Hint: Use 'task1 >> task3' and 'task2 >> task3' for multiple dependencies [OK]
      Common Mistakes:
      • Reversing dependency arrows
      • Using set_downstream incorrectly with lists
      • Assuming task3 runs before task1 and task2
      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