A DAG (Directed Acyclic Graph) is a collection of tasks organized to reflect their relationships and dependencies. It defines the workflow in Airflow.
Click to reveal answer
beginner
Which Python module do you import to create a DAG in Airflow?
You import <code>airflow</code> modules like <code>from airflow import DAG</code> and operators such as <code>from airflow.operators.bash import BashOperator</code>.
Click to reveal answer
beginner
What is the purpose of the default_args dictionary in a DAG file?
It sets default parameters for tasks like start date, retries, and retry delay, so you don't have to repeat them for each task.
Click to reveal answer
beginner
How do you schedule a DAG to run every day at midnight?
Set the schedule_interval parameter to '0 0 * * *' or use @daily in the DAG definition.
Click to reveal answer
beginner
How do you define task dependencies in a DAG?
Use the bitshift operators task1 >> task2 to say task1 runs before task2, or task2 << task1 for the same effect.
Click to reveal answer
What does DAG stand for in Airflow?
ADirected Acyclic Graph
BData Analysis Group
CDynamic Application Generator
DDistributed Async Gateway
✗ Incorrect
DAG means Directed Acyclic Graph, which is a way to organize tasks with dependencies.
Which Airflow component defines the workflow?
AOperator
BDAG
CTask Instance
DExecutor
✗ Incorrect
The DAG defines the workflow by organizing tasks and their order.
How do you import the BashOperator in a DAG file?
Afrom airflow.operators.bash import BashOperator
Bimport BashOperator from airflow
Cfrom airflow import BashOperator
Dimport airflow.bash.BashOperator
✗ Incorrect
The correct import is from airflow.operators.bash import BashOperator.
What is the purpose of the start_date in default_args?
ATo specify the task retries
BTo set the time tasks should finish
CTo define the task owner
DTo set when the DAG should start running
✗ Incorrect
start_date tells Airflow when to start scheduling the DAG.
How do you make task2 run after task1?
Atask1 + task2
Btask2 >> task1
Ctask1 >> task2
Dtask1 & task2
✗ Incorrect
Using task1 >> task2 sets task2 to run after task1.
Describe the steps to create a basic DAG file in Airflow.
Think about the order of code and what each part does.
You got /5 concepts.
Explain how task dependencies work in an Airflow DAG and why they are important.
Imagine tasks as steps in a recipe that must happen in sequence.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a DAG file in Apache Airflow?
easy
A. To configure the Airflow webserver settings
B. To store logs generated by tasks
C. To install Python packages required by tasks
D. To define tasks and their schedule for workflow automation
Solution
Step 1: Understand what a DAG file represents
A DAG file in Airflow is a Python script that defines a Directed Acyclic Graph, which represents tasks and their dependencies.
Step 2: Identify the role of the DAG file
The DAG file schedules and organizes tasks to automate workflows, not for logging, configuration, or package installation.
Final Answer:
To define tasks and their schedule for workflow automation -> Option D
Quick Check:
DAG file purpose = Define tasks and schedule [OK]
Hint: DAG files define workflows, not configs or logs [OK]
Common Mistakes:
Confusing DAG file with Airflow config files
Thinking DAG files store logs
Assuming DAG files install packages
2. Which of the following is the correct way to import the DAG class in an Airflow DAG file?
easy
A. import DAG from airflow.models
B. import airflow.DAG
C. from airflow.models import DAG
D. from airflow import DAG
Solution
Step 1: Recall the correct import syntax in Python
Python imports use 'from module import class' syntax for specific classes.
Step 2: Match with Airflow's module structure
The recommended import used in official Airflow documentation is 'from airflow.models import DAG'.
Final Answer:
from airflow.models import DAG -> Option C
Quick Check:
Correct import syntax = from airflow.models import DAG [OK]
Hint: Use 'from airflow.models import DAG' to import DAG class [OK]
Common Mistakes:
Using incorrect import syntax
Trying to import DAG directly from airflow
Using invalid Python import statements
3. Given the following DAG snippet, what will be the task_id of the BashOperator task?
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime
default_args = {'start_date': datetime(2024, 1, 1)}
with DAG('example_dag', default_args=default_args, schedule_interval='@daily') as dag:
task = BashOperator(task_id='print_date', bash_command='date')
medium
A. print_date
B. task
C. example_dag
D. bash_command
Solution
Step 1: Identify the task_id parameter in BashOperator
The BashOperator is created with task_id='print_date', which names the task.
Step 2: Understand task_id usage
task_id is the unique identifier for the task in the DAG, so the task's id is 'print_date'.
Final Answer:
print_date -> Option A
Quick Check:
task_id value = print_date [OK]
Hint: Look for task_id argument in operator constructor [OK]
Common Mistakes:
Confusing variable name with task_id
Using DAG id as task_id
Mistaking bash_command as task_id
4. Identify the error in this DAG file snippet:
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime
with DAG('my_dag', start_date=datetime(2024, 1, 1), schedule_interval='@daily') as dag:
task1 = BashOperator(task_id='task1', bash_command='echo Hello')
task2 = BashOperator(task_id='task2', bash_command='echo World')
task1 >> task2
print('DAG created')
medium
A. No error, DAG is correctly defined
B. Missing default_args dictionary for start_date
C. Incorrect import of BashOperator
D. Using print statement inside DAG context
Solution
Step 1: Check imports and DAG definition
Imports are correct, DAG is created with start_date and schedule_interval directly in constructor.
Step 2: Verify task creation and dependencies
Tasks are created with valid task_ids and bash commands, and dependency is set with 'task1 >> task2'.
Step 3: Confirm print statement usage
Print outside DAG context is allowed and does not affect DAG creation.
Final Answer:
No error, DAG is correctly defined -> Option A
Quick Check:
DAG syntax correct = No error [OK]
Hint: Check if DAG and tasks follow Airflow syntax rules [OK]
Common Mistakes:
Assuming default_args is mandatory
Thinking print inside DAG causes error
Confusing import paths for operators
5. You want to create a DAG that runs a task every Monday at 7 AM starting from March 1, 2024. Which schedule_interval and start_date combination is correct in the DAG definition?
hard
A. schedule_interval='@weekly', start_date=datetime(2024, 3, 4)
B. schedule_interval='0 7 * * 1', start_date=datetime(2024, 3, 1)
C. schedule_interval='@daily', start_date=datetime(2024, 3, 1, 7, 0)
D. schedule_interval='0 7 * * 0', start_date=datetime(2024, 3, 1)
Solution
Step 1: Determine the cron expression for Monday 7 AM
Cron '0 7 * * 1' runs every Monday at 7:00 AM (1=Monday).
Step 2: Validate start_date
March 1, 2024 (Friday) is before the first Monday (March 4), so first run on March 4, 7 AM.