Bird
Raised Fist0
Apache Airflowdevops~5 mins

Default args and DAG parameters in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of default_args in an Airflow DAG?

default_args is a dictionary used to set default parameters for all tasks in a DAG. It helps avoid repeating common settings like retries, start date, or email notifications.

Click to reveal answer
beginner
Name three common parameters you might include in default_args.

Common parameters include start_date, retries, and retry_delay. These control when the DAG starts, how many times to retry a failed task, and the wait time between retries.

Click to reveal answer
intermediate
How do DAG parameters differ from default_args?

DAG parameters are settings that define the DAG itself, like its schedule_interval or description. default_args apply to tasks inside the DAG, setting defaults for task behavior.

Click to reveal answer
intermediate
What happens if you set a start_date in default_args that is in the future?

The DAG will not run until the start_date is reached. Airflow schedules tasks only after this date, so no runs happen before it.

Click to reveal answer
intermediate
How can you override a default_args parameter for a specific task?

You can pass the parameter directly when creating the task. For example, if retries is 3 in default_args, you can set retries=1 in the task to override it.

Click to reveal answer
What is the role of default_args in an Airflow DAG?
ACreate new tasks dynamically
BDefine the DAG's schedule interval
CSet default parameters for all tasks in the DAG
DStore logs of task runs
Which parameter in default_args controls how many times a task retries on failure?
Aretry_delay
Bretries
Cstart_date
Dschedule_interval
If you want a DAG to run every day at midnight, which DAG parameter should you set?
Adefault_args
Bretries
Cstart_date
Dschedule_interval
What happens if a task does not have a parameter set in default_args or in the task itself?
AAirflow uses a global default value
BThe task will fail immediately
CThe DAG will not start
DThe parameter is ignored
How can you specify a different retry delay for a single task than the one in default_args?
ASet <code>retry_delay</code> when defining the task
BChange <code>retry_delay</code> in <code>default_args</code>
CModify the DAG's <code>schedule_interval</code>
DYou cannot override it per task
Explain what default_args is and why it is useful in Airflow DAGs.
Think about how to set common settings for many tasks at once.
You got /3 concepts.
    Describe the difference between DAG parameters and default_args in Airflow.
    One controls the whole workflow, the other controls tasks inside it.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of default_args in an Airflow DAG?
      easy
      A. To define the schedule interval of the DAG
      B. To specify the Python version used by the DAG
      C. To set common parameters like retries and owner for all tasks
      D. To list all the tasks in the DAG

      Solution

      1. Step 1: Understand the role of default_args

        default_args is a dictionary used to set common settings for tasks, such as retries, owner, start date, etc.
      2. Step 2: Differentiate from DAG parameters

        DAG parameters like schedule_interval control when the DAG runs, not task defaults.
      3. Final Answer:

        To set common parameters like retries and owner for all tasks -> Option C
      4. Quick Check:

        default_args = common task settings [OK]
      Hint: default_args sets task defaults, not DAG schedule [OK]
      Common Mistakes:
      • Confusing default_args with DAG schedule_interval
      • Thinking default_args lists tasks
      • Assuming default_args sets Python version
      2. Which of the following is the correct way to define default_args with retries set to 3 and owner as 'airflow'?
      easy
      A. default_args = {'retries': 3, 'owner': 'airflow'}
      B. default_args = ['retries=3', 'owner=airflow']
      C. default_args = (retries=3, owner='airflow')
      D. default_args = retries:3, owner:'airflow'

      Solution

      1. Step 1: Recall Python dictionary syntax

        Python dictionaries use curly braces with key:value pairs, keys as strings and values properly quoted if strings.
      2. Step 2: Check each option's syntax

        default_args = {'retries': 3, 'owner': 'airflow'} uses correct dictionary syntax. Options A, B, and D use invalid Python syntax for dictionaries.
      3. Final Answer:

        default_args = {'retries': 3, 'owner': 'airflow'} -> Option A
      4. Quick Check:

        Python dict = curly braces with key:value [OK]
      Hint: default_args is a Python dict with keys and values [OK]
      Common Mistakes:
      • Using list or tuple instead of dict
      • Missing quotes around string keys or values
      • Using colon instead of equal sign inside dict
      3. Given this DAG snippet:
      default_args = {'owner': 'admin', 'retries': 2}
      with DAG('example_dag', default_args=default_args, schedule_interval='@daily') as dag:
          task1 = BashOperator(task_id='task1', bash_command='echo Hello')
          task2 = BashOperator(task_id='task2', bash_command='echo World', retries=5)

      What is the number of retries for task2?
      medium
      A. 5
      B. 2
      C. 0
      D. Undefined, causes error

      Solution

      1. Step 1: Understand default_args and task-level override

        default_args sets retries=2 for all tasks unless overridden.
      2. Step 2: Check task2 retries parameter

        task2 explicitly sets retries=5, which overrides the default.
      3. Final Answer:

        5 -> Option A
      4. Quick Check:

        Task-level retries override default_args [OK]
      Hint: Task args override default_args if set [OK]
      Common Mistakes:
      • Assuming default_args always applies
      • Thinking task2 inherits retries=2
      • Confusing retries with schedule_interval
      4. You wrote this DAG code:
      default_args = {'owner': 'user', 'start_date': '2023-01-01'}
      dag = DAG('my_dag', default_args=default_args, schedule_interval='@hourly')

      But Airflow throws an error about start_date. What is the likely problem?
      medium
      A. owner cannot be 'user', must be 'airflow'
      B. schedule_interval '@hourly' is invalid syntax
      C. default_args must be passed as a list, not dict
      D. start_date must be a datetime object, not a string

      Solution

      1. Step 1: Check start_date type requirement

        Airflow requires start_date to be a datetime object, not a string.
      2. Step 2: Validate other parameters

        schedule_interval='@hourly' is valid, default_args is a dict, and owner can be any string.
      3. Final Answer:

        start_date must be a datetime object, not a string -> Option D
      4. Quick Check:

        start_date = datetime, not string [OK]
      Hint: Use datetime objects for start_date in default_args [OK]
      Common Mistakes:
      • Passing start_date as string instead of datetime
      • Misunderstanding schedule_interval format
      • Thinking owner must be 'airflow'
      5. You want a DAG to run every Monday at 9 AM starting from March 1, 2024, with tasks retrying twice on failure and owned by 'data_team'. Which default_args and DAG parameters are correct?
      hard
      A. default_args = {'owner': 'data_team', 'retries': 2, 'start_date': '2024-03-01 09:00'}\ndag = DAG('weekly_dag', default_args=default_args, schedule_interval='0 9 * * 1')
      B. default_args = {'owner': 'data_team', 'retries': 2, 'start_date': datetime(2024, 3, 1)}\ndag = DAG('weekly_dag', default_args=default_args, schedule_interval='0 9 * * 1')
      C. default_args = {'owner': 'data_team', 'retries': 2, 'start_date': datetime(2024, 3, 1, 9, 0)}\ndag = DAG('weekly_dag', default_args=default_args, schedule_interval='@daily')
      D. default_args = {'owner': 'data_team', 'retries': 2, 'start_date': '2024-03-01 09:00'}\ndag = DAG('weekly_dag', default_args=default_args, schedule_interval='@weekly')

      Solution

      1. Step 1: Set start_date with datetime object

        Start date must be a datetime object; time can be set to midnight if not specified.
      2. Step 2: Use correct cron for Monday 9 AM

        Cron '0 9 * * 1' means 9 AM every Monday, matching requirement.
      3. Step 3: Check retries and owner in default_args

        Retries=2 and owner='data_team' are correctly set.
      4. Final Answer:

        default_args with datetime(2024, 3, 1) and schedule_interval='0 9 * * 1' -> Option B
      5. Quick Check:

        start_date datetime + cron for Monday 9 AM [OK]
      Hint: Use cron '0 9 * * 1' for Monday 9 AM schedule [OK]
      Common Mistakes:
      • Using string for start_date
      • Using '@weekly' which runs Sunday midnight
      • Setting schedule_interval to '@daily' instead of Monday
      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