DP-700 · Domain 1: Implement and manage an analytics solution · 33% of the exam
Task 1.4: Orchestrate processes
Choosing between Dataflow Gen2, a pipeline and a notebook, schedules and event-based triggers, and orchestration with notebooks and pipelines, parameters and dynamic expressions.
Parameters, dynamic expressions and NotebookUtils orchestration
Lesson coming
Sample questions
Try each one before opening the answer. Every option is explained, with the Microsoft documentation page that proves it.
Question 1 · choose 1
Finance analysts who know Power Query from Excel must combine monthly workbooks from a SharePoint folder, unpivot them, fix data types and load the result to a lakehouse table. They don't write code, and the transformations change often. Which Fabric item should they build?
AA notebook that reads the workbooks with PySpark
BA pipeline with a Copy activity from SharePoint to the lakehouse
CA Dataflow Gen2 with the lakehouse as its data destination
DAn eventstream with a SharePoint source and a lakehouse destination
Show the answer and why
AA notebook that reads the workbooks with PySpark
Incorrect
Notebooks need Spark code, which these analysts don't write.
BA pipeline with a Copy activity from SharePoint to the lakehouse
Incorrect
The Copy activity suits ingestion with lightweight transformation, not unpivoting and reshaping workbooks.
CA Dataflow Gen2 with the lakehouse as its data destination
Correct
Dataflow Gen2 gives a low-code Power Query editor for wrangling, with many connectors including SharePoint.
DAn eventstream with a SharePoint source and a lakehouse destination
Incorrect
Eventstreams ingest and process event data, not folders of monthly workbooks.
Microsoft's decision guide places Dataflow Gen2 for data ingestion, transformation and wrangling with a no-code or low-code Power Query interface and 150+ connectors, aimed at data engineers, integrators and business analysts. Copy activities focus on movement with lightweight transformation, Spark on code, and Eventstream on event data.
A pipeline has a RunDate parameter. Its Notebook activity must pass that date to the notebook, which uses a variable named run_date in its code. Which two steps are needed? (Choose TWO.)
ACall notebookutils.notebook.exit(run_date) at the end of the notebook
BAdd a Set Variable activity inside the notebook for run_date
CMark the cell that defines run_date as the notebook's parameter cell
DAdd a run_date base parameter set to @pipeline().parameters.RunDate
EPut run_date and the RunDate pipeline parameter in a %%configure cell
Show the answer and why
ACall notebookutils.notebook.exit(run_date) at the end of the notebook
Incorrect
exit() returns a value from the notebook; it doesn't receive one.
BAdd a Set Variable activity inside the notebook for run_date
Incorrect
Set Variable is a pipeline activity and can't run inside a notebook.
CMark the cell that defines run_date as the notebook's parameter cell
Correct
Base parameters override variables defined in the notebook's parameter cell.
DAdd a run_date base parameter set to @pipeline().parameters.RunDate
Correct
Base parameters in the Notebook activity pass values into the notebook at run time.
EPut run_date and the RunDate pipeline parameter in a %%configure cell
Incorrect
%%configure sets session properties; it isn't how base parameters reach notebook variables.
A notebook receives parameters through a cell marked as the parameter cell. In a pipeline, the Notebook activity's base parameters (which can be auto-populated from that cell) pass values, such as an expression over pipeline parameters, and replace the defaults defined there.
A notebook ends with try: ... notebookutils.notebook.exit(str(row_count)) except Exception: raise. A parent notebook calls it with notebookutils.notebook.run, and the returned value is always an empty string, even though the run succeeds. What should you change?
AReturn an integer from exit() instead of str(row_count)
BIncrease the timeout_seconds argument of notebookutils.notebook.run
CMark the parent's first cell as a parameter cell to receive the value
DCall exit() only after the try block and its handler have finished
Show the answer and why
AReturn an integer from exit() instead of str(row_count)
Incorrect
Exit values are always strings; the type isn't the problem.
BIncrease the timeout_seconds argument of notebookutils.notebook.run
Incorrect
A short timeout fails the run; it doesn't make it succeed with an empty value.
CMark the parent's first cell as a parameter cell to receive the value
Incorrect
Parameter cells receive inputs; run() returns the child's exit value.
DCall exit() only after the try block and its handler have finished
Correct
exit() doesn't take effect when it's wrapped in exception handling.
notebookutils.notebook.run() returns the exact string passed to notebookutils.notebook.exit(value) in the child, or an empty string if exit() isn't called. Microsoft notes that exit() won't take effect inside a try-catch block, so the call belongs outside the exception handling.
A pipeline must run at 06:00 on weekdays and at 18:00 on Saturdays, without duplicating the pipeline. How should you schedule it?
ACreate a copy of the pipeline for the Saturday run
BAdd two schedules to the pipeline, one for each pattern
CUse one daily schedule and an If Condition that checks the weekday
DAdd a storage event trigger that starts the Saturday run
Show the answer and why
ACreate a copy of the pipeline for the Saturday run
Incorrect
Copies double the maintenance; one pipeline can hold several schedules.
BAdd two schedules to the pipeline, one for each pattern
Correct
A pipeline can have up to 20 schedules, each with its own frequency and times.
CUse one daily schedule and an If Condition that checks the weekday
Incorrect
The 06:00 run would still happen on Saturday and the 18:00 run would never fire.
DAdd a storage event trigger that starts the Saturday run
Incorrect
Event triggers start runs when files arrive or change, not at set times.
You can set multiple schedules for a pipeline (up to 20), each with its own frequency, start and end dates and times, and time zone. Every schedule needs both a start and an end date; for long-running schedules, set the end date far in the future.
A pipeline is started by an Azure Blob Storage event trigger when a file lands in the incoming folder. Its Copy activity must read exactly the file that raised the event. Which expression gives that file's name?
A@pipeline()?.TriggerEvent?.FileName
B@pipeline().parameters.SourceFileName
C@item().name
D@pipeline().TriggerTime
Show the answer and why
A@pipeline()?.TriggerEvent?.FileName
Correct
Data Factory parses the file name from the event's subject into this trigger parameter.
B@pipeline().parameters.SourceFileName
Incorrect
No SourceFileName parameter exists unless you define one; the trigger fills trigger parameters.
C@item().name
Incorrect
That expression doesn't read the storage event, so it can't name the file that raised it.
D@pipeline().TriggerTime
Incorrect
TriggerTime returns when the run was triggered, not which file arrived.
Storage event triggers are built on eventstreams and Activator. When a file event starts the pipeline, Data Factory sets built-in trigger parameters from the event's Subject and Topic, such as @pipeline()?.TriggerEvent?.FileName; the ? operators handle the null values you get during manual test runs.
You create a storage event trigger from a pipeline's Home ribbon. Where does the trigger definition live afterwards?
AInside the pipeline definition, like a schedule
BIn a Reflex item for Activator in the workspace you chose
CIn a variable library linked to the pipeline
DIn the capacity settings of the Fabric admin portal for that capacity
Show the answer and why
AInside the pipeline definition, like a schedule
Incorrect
Event triggers are separate Activator items, not part of the pipeline JSON.
BIn a Reflex item for Activator in the workspace you chose
Correct
Triggers use Activator alerts, and the trigger appears as a Reflex item.
CIn a variable library linked to the pipeline
Incorrect
Variable libraries hold configuration values, not triggers.
DIn the capacity settings of the Fabric admin portal for that capacity
Incorrect
Triggers aren't capacity settings.
Pipeline event triggers use Fabric platform features, eventstreams and Activator alerts. When you create one from the pipeline's Trigger button, you pick a workspace to store the trigger items and name the trigger as a Reflex item, which you can open to view or edit it.
Inside a ForEach activity that loops over table names, a Copy activity must use the current table name as its source. Which expression returns it?
A@pipeline().parameters.item
B@activity('ForEach1').output
C@variables('item')
D@item()
Show the answer and why
A@pipeline().parameters.item
Incorrect
This reads a pipeline parameter named item, not the loop's current element.
B@activity('ForEach1').output
Incorrect
ForEach doesn't expose the current element through activity output.
C@variables('item')
Incorrect
This reads a pipeline variable, which the loop doesn't set.
D@item()
Correct
@item() refers to the item being processed in the ForEach loop.
In a ForEach activity, child activities can use the @item() iterator anywhere that supports dynamic content to refer to the current item from the Items list.