Learn the IT-English vocabulary of data pipeline orchestration: DAGs, scheduling, dependencies, backfills and retries.
0 / 22 completed
1 / 22
An orchestrator models the pipeline as a 'DAG'. What does DAG stand for?
A DAG (Directed Acyclic Graph) defines task order via dependencies without any loops.
2 / 22
A task is 'downstream' of another. What does that mean?
Downstream tasks wait for their upstream dependencies to finish before they run.
3 / 22
The team runs a 'backfill'. What is it?
A backfill processes historical periods, e.g. after fixing a bug or adding a new table.
4 / 22
A task has a 'retry policy' of 3 attempts. What does that achieve?
Retries handle transient errors (e.g. a brief network blip) without manual intervention.
5 / 22
Which sentence correctly uses 'idempotent' for a pipeline task?
An idempotent task produces the same result if re-run, which is essential for safe retries and backfills.
6 / 22
Sarah: "Hey team, I've just submitted a PR to update the data validation logic in our ingestion pipeline. It should handle cases where some records are missing from the source system. The orchestrator is running the new task as a downstream step after the initial ETL job."
Downstream in a data pipeline refers to tasks that depend on the successful completion of preceding tasks. The orchestrator manages this dependency chain; it doesn't proactively monitor health or trigger jobs manually. Sarah's statement correctly describes a downstream task's execution relying on the ETL job's output, which is a core concept of DAG-based orchestration. The wrong options misinterpret the role of the orchestrator and the nature of dependency in data pipelines.
7 / 22
Reviewer: 'I'm seeing a lot of implicit dependencies here. The `transform_data` task relies on the output of `extract_data`, but there isn't an explicit dependency declared in the orchestrator model. This makes it difficult to understand the order of execution and potentially introduces race conditions if those tasks run concurrently. Consider adding a dag.directed_edge to ensure proper ordering.'
The question tests understanding of how orchestrators manage task dependencies. A dag.directed_edge is crucial because it *explicitly* defines that one task (e.g., `transform_data`) depends on the completion of another (`extract_data`). Without this definition, the orchestrator has no guarantee about the execution order and could lead to errors or unexpected behavior due to concurrent task execution. Options A and D misrepresent the core concept; Option C is a generally poor practice in pipeline design.
8 / 22
During a code review discussion regarding our data pipeline orchestration model, the reviewer highlighted an issue with implicit dependencies between tasks. They suggested adding a `dag.directed_edge` to the orchestrator. What is the *primary* function of this addition?
# Orchestrator Model (Simplified Example)
class PipelineOrchestrator:
def __init__(self):
self.dag = Dag()
def add_task(self, task_name, dependencies=None):
self.dag.add_node(task_name, dependencies=dependencies)
if dependencies:
for dep in dependencies:
self.dag.add_directed_edge(dep, task_name) # this is the key
The `dag.directed_edge` is crucial for defining *explicit* dependencies between tasks within a Directed Acyclic Graph (DAG). This ensures that tasks execute in the correct order, preventing issues like data corruption or inconsistent states if they are run out of sequence. The reviewer's concern was about implicit dependencies – this addition directly addresses that by clearly stating which tasks rely on others, and therefore, the order of execution.
9 / 22
Sarah: "Hey team, I've just submitted a PR to update the data validation logic in our ingestion pipeline. It should handle cases where some records are missing from the source system. The orchestrator is running the new task as a downstream step after the initial ETL job."
Downstream in a data pipeline refers to tasks that depend on the successful completion of preceding tasks. The orchestrator manages this dependency chain; it doesn't proactively monitor health or trigger jobs manually. Sarah's statement correctly describes a downstream task's execution relying on the ETL job's output, which is a core concept of DAG-based orchestration. The wrong options misinterpret the role of the orchestrator and the nature of dependency in data pipelines.
10 / 22
Reviewer: 'I'm seeing a lot of implicit dependencies here. The `transform_data` task relies on the output of `extract_data`, but there isn't an explicit dependency declared in the orchestrator model. This makes it difficult to understand the order of execution and potentially introduces race conditions if those tasks run concurrently. Consider adding a dag.directed_edge to ensure proper ordering.'
The question tests understanding of how orchestrators manage task dependencies. A dag.directed_edge is crucial because it *explicitly* defines that one task (e.g., `transform_data`) depends on the completion of another (`extract_data`). Without this definition, the orchestrator has no guarantee about the execution order and could lead to errors or unexpected behavior due to concurrent task execution. Options A and D misrepresent the core concept; Option C is a generally poor practice in pipeline design.
11 / 22
During a code review discussion regarding our data pipeline orchestration model, the reviewer highlighted an issue with implicit dependencies between tasks. They suggested adding a `dag.directed_edge` to the orchestrator. What is the *primary* function of this addition?
# Orchestrator Model (Simplified Example)
class PipelineOrchestrator:
def __init__(self):
self.dag = Dag()
def add_task(self, task_name, dependencies=None):
self.dag.add_node(task_name, dependencies=dependencies)
if dependencies:
for dep in dependencies:
self.dag.add_directed_edge(dep, task_name) # this is the key
The `dag.directed_edge` is crucial for defining *explicit* dependencies between tasks within a Directed Acyclic Graph (DAG). This ensures that tasks execute in the correct order, preventing issues like data corruption or inconsistent states if they are run out of sequence. The reviewer's concern was about implicit dependencies – this addition directly addresses that by clearly stating which tasks rely on others, and therefore, the order of execution.
12 / 22
Sarah: "Hey team, I've just submitted a PR to update the data validation logic in our ingestion pipeline. It should handle cases where some records are missing from the source system. The orchestrator is running the new task as a downstream step after the initial ETL job."
Downstream in a data pipeline refers to tasks that depend on the successful completion of preceding tasks. The orchestrator manages this dependency chain; it doesn't proactively monitor health or trigger jobs manually. Sarah's statement correctly describes a downstream task's execution relying on the ETL job's output, which is a core concept of DAG-based orchestration. The wrong options misinterpret the role of the orchestrator and the nature of dependency in data pipelines.
13 / 22
Reviewer: 'I'm seeing a lot of implicit dependencies here. The `transform_data` task relies on the output of `extract_data`, but there isn't an explicit dependency declared in the orchestrator model. This makes it difficult to understand the order of execution and potentially introduces race conditions if those tasks run concurrently. Consider adding a dag.directed_edge to ensure proper ordering.'
The question tests understanding of how orchestrators manage task dependencies. A dag.directed_edge is crucial because it *explicitly* defines that one task (e.g., `transform_data`) depends on the completion of another (`extract_data`). Without this definition, the orchestrator has no guarantee about the execution order and could lead to errors or unexpected behavior due to concurrent task execution. Options A and D misrepresent the core concept; Option C is a generally poor practice in pipeline design.
14 / 22
During a code review discussion regarding our data pipeline orchestration model, the reviewer highlighted an issue with implicit dependencies between tasks. They suggested adding a `dag.directed_edge` to the orchestrator. What is the *primary* function of this addition?
# Orchestrator Model (Simplified Example)
class PipelineOrchestrator:
def __init__(self):
self.dag = Dag()
def add_task(self, task_name, dependencies=None):
self.dag.add_node(task_name, dependencies=dependencies)
if dependencies:
for dep in dependencies:
self.dag.add_directed_edge(dep, task_name) # this is the key
The `dag.directed_edge` is crucial for defining *explicit* dependencies between tasks within a Directed Acyclic Graph (DAG). This ensures that tasks execute in the correct order, preventing issues like data corruption or inconsistent states if they are run out of sequence. The reviewer's concern was about implicit dependencies – this addition directly addresses that by clearly stating which tasks rely on others, and therefore, the order of execution.
15 / 22
Sarah: "Hey team, I've just submitted a PR to update the data validation logic in our ingestion pipeline. It should handle cases where some records are missing from the source system. The orchestrator is running the new task as a downstream step after the initial ETL job."
Downstream in a data pipeline refers to tasks that depend on the successful completion of preceding tasks. The orchestrator manages this dependency chain; it doesn't proactively monitor health or trigger jobs manually. Sarah's statement correctly describes a downstream task's execution relying on the ETL job's output, which is a core concept of DAG-based orchestration. The wrong options misinterpret the role of the orchestrator and the nature of dependency in data pipelines.
16 / 22
Reviewer: 'I'm seeing a lot of implicit dependencies here. The `transform_data` task relies on the output of `extract_data`, but there isn't an explicit dependency declared in the orchestrator model. This makes it difficult to understand the order of execution and potentially introduces race conditions if those tasks run concurrently. Consider adding a dag.directed_edge to ensure proper ordering.'
The question tests understanding of how orchestrators manage task dependencies. A dag.directed_edge is crucial because it *explicitly* defines that one task (e.g., `transform_data`) depends on the completion of another (`extract_data`). Without this definition, the orchestrator has no guarantee about the execution order and could lead to errors or unexpected behavior due to concurrent task execution. Options A and D misrepresent the core concept; Option C is a generally poor practice in pipeline design.
17 / 22
During a code review discussion regarding our data pipeline orchestration model, the reviewer highlighted an issue with implicit dependencies between tasks. They suggested adding a `dag.directed_edge` to the orchestrator. What is the *primary* function of this addition?
# Orchestrator Model (Simplified Example)
class PipelineOrchestrator:
def __init__(self):
self.dag = Dag()
def add_task(self, task_name, dependencies=None):
self.dag.add_node(task_name, dependencies=dependencies)
if dependencies:
for dep in dependencies:
self.dag.add_directed_edge(dep, task_name) # this is the key
The `dag.directed_edge` is crucial for defining *explicit* dependencies between tasks within a Directed Acyclic Graph (DAG). This ensures that tasks execute in the correct order, preventing issues like data corruption or inconsistent states if they are run out of sequence. The reviewer's concern was about implicit dependencies – this addition directly addresses that by clearly stating which tasks rely on others, and therefore, the order of execution.
18 / 22
During a code review of our data pipeline orchestrator, Alex comments: 'I'm noticing that the `enrich_data` task isn't automatically retried if it fails due to a temporary network issue. Should we implement an explicit retry policy?' Which of the following best describes the *implication* of this comment?
The comment highlights a potential issue with fault tolerance. A retry policy, specifically configured for transient errors like network issues, ensures task resilience. Option A is incorrect as it implies constant execution, which isn't always desirable. Option B is too strong – a failure doesn't automatically mean a critical system issue.
19 / 22
In a Slack channel discussing the recent slowdown in our reporting pipeline, Maria writes: 'I think we need to add more logging around the `aggregate_metrics` task. It's currently just spitting out generic error messages.' What does Maria *primarily* suggest adding to improve the situation?
Maria's suggestion focuses on *debugging* and understanding the root cause of the slowdown. Detailed logging provides valuable data for troubleshooting – knowing *what* went wrong is crucial. The other options address performance optimization or monitoring but don't directly solve the problem of unclear error messages.
20 / 22
You're writing a PR description for an update to our data pipeline orchestrator. You want to accurately describe the change and its purpose. Which sentence best captures the essence of adding 'task dependencies'?
Defining 'task dependencies' is fundamentally about controlling the *order* in which tasks execute. This ensures data consistency and prevents errors arising from incomplete or outdated data. Options A, C, and D describe unrelated changes – a core concept of orchestrator design.
21 / 22
"Good morning team! I've been working on refining the `data_transformation` task in our pipeline orchestrator. I'm focusing on making it more idempotent – meaning that running it multiple times with the same input data will produce the same output, regardless of previous runs." What is the *primary* benefit of an 'idempotent' task within a data pipeline?
Idempotency is crucial for reliability in distributed systems. It ensures that repeated executions don't cause unintended changes or data corruption, especially important during retries. While optimization (option A) can be a *result* of idempotency, it's not the primary benefit itself.
22 / 22
The documentation for our data pipeline orchestrator states: 'Each task is designed to be idempotent. This means that if a task fails and is subsequently re-run, the outcome will always be identical to the first execution.' Which of the following scenarios *best* illustrates why this design choice is beneficial?
Idempotency is essential for handling failures gracefully. When a task fails and is re-executed, the system knows that the result will be the same as the first attempt – avoiding duplicate processing and potential data inconsistencies. The other options represent different benefits of well-designed tasks but don't explain why idempotency is crucial in this context.
What does the "Data Pipeline Orchestration" exercise practise?
Learn the IT-English vocabulary of data pipeline orchestration: DAGs, scheduling, dependencies, backfills and retries.
How many questions are in this exercise?
This exercise has 22 questions, each multiple-choice with a full explanation shown after you answer.
What English level is this exercise for?
This exercise is tagged Intermediate. If the vocabulary feels difficult, browse the Data Engineering Language category page for an easier module to start with.
Is this exercise free to use?
Yes. Every exercise on CoderSlingo, including this one, is free with no account, sign-up, or paywall.
Do I get feedback if I answer incorrectly?
Yes — whichever option you choose, right or wrong, you'll immediately see an explanation clarifying the correct term and why the other options don't fit.
Can I retry this exercise?
Yes — once you finish all the questions, a "Try again" button on the results screen resets the exercise so you can practise as many times as you like.
Do I need an account to track my progress?
No account is required. Your progress bar and score for this session are tracked in the browser as you go, but nothing is saved once you leave the page.
Is "Data Pipeline Orchestration" part of a larger series?
Yes — it's one exercise in the Data Engineering Language category on CoderSlingo. See the category page for the full list of related exercises on similar terminology.
Can I link directly to this exercise?
Yes — this exercise has its own permanent URL, so you can bookmark it or share the link directly with a colleague or study partner.
Where can I find more exercises like this one?
See the Data Engineering Language category page for related exercises, or browse the main Exercises hub for other IT English topics.