Cloud / Azure Data Factory Interview questions
Last updated
1. What is Azure Data Factory?
Azure Data Factory (ADF) is Microsoft's cloud-based, serverless data integration service. You build pipelines that move data between sources and destinations and transform it on the way, without provisioning or patching any servers.
It supports both ETL and ELT patterns, has a visual low-code authoring canvas, and ships with 90+ built-in connectors covering databases, files, SaaS apps and cloud storage.
With a self-hosted integration runtime the same pipeline can also reach on-premises and private-network systems, which is why ADF is a common pick for hybrid data movement.
Take quiz
a BI tool for building dashboards
a relational database engine for OLTP workloads
a serverless cloud service for orchestrating data movement and transformation
a schedule trigger
a mapping data flow
self-hosted integration runtime
2. What are the main components of Azure Data Factory?
An ADF solution is built from a handful of building blocks that reference each other. Knowing who depends on whom makes most other questions easier.
| Component | Role |
| Pipeline | Logical group of activities that runs as one unit. |
| Activity | A single step: copy, transform or control flow. |
| Dataset | Named pointer to the data an activity reads or writes. |
| Linked service | Connection details for a data store or compute service. |
| Integration runtime | The compute that actually executes the work. |
| Trigger | Decides when a pipeline run starts. |
| Data flow | Visually designed transformation that runs on Spark. |
Parameters, variables and global parameters sit on top of these to make pipelines reusable.
Take quiz
dataset
linked service
trigger
trigger
integration runtime
dataset
3. What is a pipeline in Azure Data Factory?
A pipeline is a logical grouping of activities that together perform one task, for example ingest yesterday's files, clean them and load a warehouse table. You publish, trigger and monitor it as a single unit.
Activities inside it are chained with dependency conditions, and the pipeline can take parameters, hold variables and limit concurrent runs. Behind the canvas it is just JSON:
{ "name": "CopySalesPipeline", "properties": { "parameters": { "runDate": { "type": "string" } }, "activities": [ { "name": "CopySales", "type": "Copy", "dependsOn": [] } ] } }
Take quiz
a logical group of activities that performs a unit of work
a physical VM that runs copy jobs
a stored connection string
by the time each activity was created
alphabetically by activity name
through dependency conditions such as Succeeded or Failed
4. What is an activity in Azure Data Factory?
An activity is one processing step inside a pipeline. Every activity has a name, a type, type-specific properties, optional dependencies and a policy block for timeout and retry.
ADF groups activities into three families:
| Category | Examples |
| Data movement | Copy |
| Data transformation | Mapping data flow, Databricks notebook, Stored procedure, Azure Function |
| Control flow | ForEach, If Condition, Until, Switch, Wait, Execute Pipeline, Web, Set Variable |
Take quiz
ForEach
Copy
Wait
control flow
data transformation
data movement
5. What is a dataset in Azure Data Factory?
A dataset is a named reference to the data an activity works with, such as a table, a folder path or a file pattern. It does not hold the data itself.
It points to a linked service for connectivity and describes format, location and optionally schema. Datasets can be parameterized, so a single dataset can serve many tables or folders.
Take quiz
the credentials for the source
a reference to data inside a linked service, not the data itself
a cached copy of the data inside the factory
to make the integration runtime start faster
so one dataset can point at many tables or files
to avoid needing a linked service
6. What is a linked service in Azure Data Factory?
A linked service holds the connection information ADF needs to reach an external resource. Think of it as a connection string with an identity attached.
There are two flavors: data store linked services (Azure SQL, Blob Storage, S3) and compute linked services (Databricks, HDInsight, Azure Batch). Each one references an integration runtime, and secrets can be pulled from Azure Key Vault instead of being stored in the factory.
{ "name": "LS_AzureSql", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:myserver.database.windows.net;Database=sales;" }, "connectVia": { "referenceName": "AutoResolveIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
Take quiz
pipeline triggers
compute resources such as Databricks or HDInsight
Git branches
SQL view
connection string
stored procedure
7. What is an integration runtime in Azure Data Factory?
The integration runtime (IR) is the compute infrastructure ADF uses to do the actual work. Pipelines only describe what to do; the IR is where it runs.
It covers four capabilities: data movement for Copy, data flow execution, activity dispatch to services like Databricks or SQL, and SSIS package execution.
Each linked service points to an IR. If you don't choose one, ADF uses the built-in AutoResolveIntegrationRuntime.
Take quiz
authentication for the Git repository
storage for pipeline JSON definitions
the compute where copy, data flow and dispatch activities run
a self-hosted runtime installed on your laptop
the Azure-SSIS runtime
the AutoResolveIntegrationRuntime
8. What are the types of integration runtime in Azure Data Factory?
ADF offers three IR types, and the right one depends on where your data lives and what you want to run.
| Type | Runs where | Typical use |
| Azure IR | Azure-managed, fully serverless | Cloud-to-cloud copy, mapping data flows, activity dispatch |
| Self-hosted IR | Machine you install it on (on-premises or VM) | Private networks, on-premises databases and file shares |
| Azure-SSIS IR | Dedicated cluster of Azure VMs | Lift-and-shift of existing SSIS packages |
An Azure IR can optionally be placed in a managed virtual network for private connectivity.
Take quiz
Self-hosted IR
Azure-SSIS IR
Azure IR
an Azure-SSIS IR
a self-hosted IR
the AutoResolve Azure IR over the public internet only
9. What are the types of triggers in Azure Data Factory?
A trigger starts a pipeline run without anyone clicking Run. ADF supports three trigger families, plus manual on-demand runs.
| Trigger | Fires when | Notable trait |
| Schedule | Wall-clock time (hourly, daily, cron-like) | Many-to-many with pipelines; no backfill |
| Tumbling window | Fixed, contiguous time windows | Backfill, dependencies, retry; one pipeline each |
| Event-based | Blob created/deleted or custom event | Built on Azure Event Grid |
Take quiz
tumbling window
schedule
event-based
Azure Batch
Azure Monitor alerts
Azure Event Grid
10. What is the Copy activity used for in Azure Data Factory?
The Copy activity moves data from a source to a sink across any of the supported connectors. It is the workhorse of most ingestion pipelines.
Along the way it can convert file formats (for example CSV to Parquet), apply column mapping, compress output and skip incompatible rows when fault tolerance is on. It needs a source dataset, a sink dataset and an integration runtime.
{ "name": "CopySales", "type": "Copy", "inputs": [ { "referenceName": "ds_sales_csv", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "ds_sales_parquet", "type": "DatasetReference" } ], "typeProperties": { "source": { "type": "DelimitedTextSource" }, "sink": { "type": "ParquetSink" } } }
Take quiz
distributed Spark joins across many datasets
ARM template deployment
format conversion such as CSV to Parquet
only a trigger
a source dataset and a sink dataset
a Databricks cluster
11. What are mapping data flows in Azure Data Factory?
Mapping data flows let you design transformations visually and run them at scale. ADF translates the design into Spark code and runs it on a cluster it manages for you, so you never write or tune Spark yourself.
Common transformations include join, aggregate, derived column, conditional split, pivot, window, lookup, surrogate key and filter. They are called from a pipeline through the Data Flow activity, and the cluster size is controlled by the Azure IR settings.
Take quiz
the SQL Server named in the linked service
Spark clusters managed by ADF
the machine hosting the self-hosted IR
conditional split
ForEach
Get Metadata
12. What is the Lookup activity in Azure Data Factory?
The Lookup activity reads data from a dataset and returns it to the pipeline, either the first row only or the entire result as an array. It is mostly used to fetch configuration, such as a list of tables to process or a watermark value.
Output is limited to 5,000 rows and 4 MB, so it is meant for small control data, not bulk movement. You read the result in later activities with expressions:
@activity('LookupConfig').output.firstRow.TableName @activity('LookupConfig').output.value
The second form (an array) is what you normally feed into a ForEach.
Take quiz
1 million rows and 1 GB
5,000 rows and 4 MB
a single scalar value only
@pipeline().output.firstRow.ColumnName
@activity('Lookup1').output.firstRow.ColumnName
@activity('Lookup1').output.rows[0].ColumnName
13. What is the ForEach activity in Azure Data Factory?
ForEach loops over an array and runs a set of inner activities once per element. The array usually comes from a Lookup, Get Metadata (childItems) or a parameter.
Inside the loop, the current element is read with @item(). By default iterations run in parallel; the batch count controls how many (default 20, maximum 50) and the Sequential checkbox forces one at a time. A ForEach cannot be nested directly inside another ForEach, so use Execute Pipeline for a second level.
Take quiz
@current()
@item()
@foreach().value
place a Wait activity before it
enable the Sequential option
set the pipeline timeout to zero
14. What is the Get Metadata activity used for?
Get Metadata returns information about a file, folder or table without reading its contents. Useful fields include childItems (list of files and subfolders), exists, lastModified, size, itemType and structure.
A typical pattern is listing a folder with childItems, filtering it, then looping with ForEach. Another is checking exists inside an If Condition so the pipeline only copies when the file has actually landed.
Take quiz
contentMD5
structure
childItems
lastModified
itemType
exists
15. What is the Execute Pipeline activity?
Execute Pipeline calls another pipeline from within a pipeline and can pass parameter values to it. That makes it the way to build reusable child pipelines and break large workflows into manageable pieces.
With Wait on completion ticked, the parent waits and picks up the child's result; unticked, it fires the child and moves on. It is also the standard workaround for the no-nested-ForEach restriction.
Take quiz
creating linked services at runtime
installing integration runtimes
reusing child pipelines and passing them parameters
fails automatically
never starts the child
continues without waiting for the child's result
16. How do you use pipeline parameters in Azure Data Factory?
Parameters are defined on the pipeline (name, type, optional default) and receive their values when the run starts, from a trigger, a manual run or an Execute Pipeline activity.
Inside the pipeline you read them as @pipeline().parameters.paramName. Supported types include String, Int, Float, Bool, Array, Object and SecureString. They are read-only during the run; if you need a value that changes, use a variable. Triggers can feed system values in, for example:
runDate = @formatDateTime(trigger().scheduledTime, 'yyyy-MM-dd')
Take quiz
yes, with an Append Variable activity
yes, with a Set Variable activity
no, parameters are read-only inside a run
@parameters.env()
@variables('env')
@pipeline().parameters.env
17. What is a debug run in Azure Data Factory?
A debug run executes the pipeline as it currently exists in your draft, with no need to publish or attach a trigger. It is the fast way to test changes during authoring.
It does real work: data is copied, tables are written and compute is billed. You can use Debug until on an activity to run only up to and including that step. Mapping data flows need a separate data flow debug session, which spins up its own cluster.
Take quiz
only the last published version
only against fake sample data
the current unpublished draft of the pipeline
publishes the pipeline up to that activity
runs the pipeline up to and including that activity
skips that activity
18. How do you monitor pipelines in Azure Data Factory?
The Monitor hub in ADF Studio shows pipeline runs, trigger runs, activity runs and integration runtime health. You can filter by status or time, drill into any activity's input and output, and rerun from the failed activity instead of starting over.
For alerting and long-term history, send diagnostic logs to Log Analytics or a storage account and build Azure Monitor alerts on failed runs. The studio itself keeps run history for only 45 days.
Take quiz
7 days
45 days
365 days
enable an AutoResolve retention flag
raise the DIU count
send diagnostic logs to Log Analytics or storage
19. What is the Web activity used for in Azure Data Factory?
The Web activity calls a REST endpoint from a pipeline using GET, POST, PUT or DELETE with custom headers and a body. The response lands in the activity output for later steps to use.
It supports Basic, client certificate, service principal and managed identity authentication. Typical uses are kicking off a Logic App, calling an Azure Resource Manager API (for example scaling a database) or refreshing a Power BI dataset. If the called service needs to call back when it finishes, use the Webhook activity instead.
Take quiz
only anonymous requests
only Git credentials
managed identity, among other methods
run Spark code inside ADF
store secrets for linked services
call a REST API endpoint from a pipeline
20. List the control flow activities in Azure Data Factory?
Control flow activities decide how and when other activities run. They don't move or transform data themselves.
| Activity | Purpose |
| If Condition / Switch | Branch on an expression |
| ForEach / Until | Loop over a list or until a condition is true |
| Filter | Filter an array |
| Set Variable / Append Variable | Store or accumulate values |
| Execute Pipeline | Call a child pipeline |
| Get Metadata / Lookup | Fetch control information |
| Validation / Wait | Wait for a dataset or a fixed delay |
| Web / Webhook | Call external REST endpoints |
| Fail | Stop with a custom error message and code |
Take quiz
Filter
Wait
Until
Fail
Switch
Validation
21. What is the difference between parameters and variables in Azure Data Factory?
Both hold values, but they behave very differently, and mixing them up is a classic interview trap.
| Parameters | Variables |
| Set once when the run starts. | Set and changed during the run. |
| Read-only inside the pipeline. | Changed with Set Variable or Append Variable. |
Read with @pipeline().parameters.x |
Read with @variables('x') |
| Types: String, Int, Float, Bool, Array, Object, SecureString. | Types: String, Boolean, Array. |
Be careful with variables inside a parallel ForEach: all iterations share one pipeline-scoped variable, so they overwrite each other. Use sequential mode or pass values to child pipelines instead.
Take quiz
pipeline parameters
global parameters via Set Variable
variables
variables cannot hold strings
it forces sequential execution automatically
all iterations share one variable and can overwrite each other
22. What is the difference between Azure Data Factory and SSIS?
SSIS is an on-premises ETL engine that ships with SQL Server. ADF is a managed cloud orchestration service. They overlap, but their strengths differ.
| SSIS | Azure Data Factory |
| Installed and run on your own servers. | Serverless PaaS, no infrastructure to manage. |
| Rich in-memory transformations, script tasks. | Strong at orchestration; transforms via data flows or external compute. |
| Scale up by adding hardware. | Scales out by adding DIUs and Spark cores. |
| Licensed with SQL Server. | Pay per activity run, DIU-hour and vCore-hour. |
The two also work together: existing packages can run unchanged in ADF through an Azure-SSIS IR.
Take quiz
SSIS packages
SSAS cubes
SSRS reports
pay-per-use based on activity runs, DIU-hours and data flow vCore-hours
a flat monthly fee regardless of usage
a per-core SQL Server licence
23. What is the difference between a tumbling window trigger and a schedule trigger?
A schedule trigger fires on wall-clock time and has no memory of past windows. A tumbling window trigger fires for a series of fixed-size, non-overlapping, contiguous time slices and tracks the state of each.
| Aspect | Schedule | Tumbling window |
| Backfill of past periods | No | Yes, start date can be in the past |
| Pipelines per trigger | Many-to-many | One-to-one |
| Dependencies between triggers | No | Yes |
| Retry and concurrency limit | No | Yes |
| Window values to pipeline | Scheduled time only | windowStartTime and windowEndTime |
Pick tumbling window when each slice must be processed exactly once and failures must be reprocessable.
Take quiz
tumbling window
event-based
schedule
a schedule trigger with a past start time
an event-based trigger
a tumbling window trigger with a past start time
24. How does a self-hosted integration runtime connect to on-premises data?
You install the IR software on a machine inside the private network and register it with an authentication key generated in ADF. From then on the node polls ADF for work, so no inbound firewall rule is needed.
It only makes outbound HTTPS (port 443) connections to the ADF service, then talks to local sources over the internal network. Credentials entered for it are encrypted with Windows DPAPI on the node.
For availability and throughput you can register up to four nodes under one IR, and share an IR with other factories through a linked IR.
Take quiz
outbound HTTPS connections on port 443
a mandatory site-to-site VPN
inbound port 1433 opened to the internet
up to forty
exactly one
up to four
25. How do you store secrets in Azure Data Factory using Key Vault?
Keep passwords and keys out of the factory by pointing linked services at Azure Key Vault.
- Create a Key Vault and add the secret.
- Grant the factory's managed identity Get (and List) permission on secrets, via access policy or the Key Vault Secrets User role.
- Create a Key Vault linked service in ADF.
- In the real linked service, choose Azure Key Vault for the password field and give the secret name.
"password": { "type": "AzureKeyVaultSecret", "store": { "referenceName": "LS_KeyVault", "type": "LinkedServiceReference" }, "secretName": "sql-password" }
The secret value never appears in the factory definition or in Git.
Take quiz
Owner on the whole subscription
Get (and List) permission on secrets
Delete permission on keys
it removes the need for a linked service
it makes Copy runs faster
the secret is not stored in the factory definition or Git
26. How do you implement incremental data load in Azure Data Factory?
The classic approach is the watermark pattern: remember the highest modified value you loaded last time and only pull rows newer than that.
flowchart LR A["Lookup old watermark"] --> C["Copy rows between old and new"] B["Lookup new watermark MAX of modified column"] --> C C --> D["Stored procedure updates watermark table"]
SELECT * FROM dbo.Orders WHERE LastModified > '@{activity('OldWM').output.firstRow.Value}' AND LastModified <= '@{activity('NewWM').output.firstRow.Value}'
Read the new watermark before copying so rows arriving mid-run are caught next time. Alternatives are SQL change tracking or CDC, the built-in CDC resource, and for files the last modified filter on the Copy source.
Take quiz
the pipeline start time minus 24 hours always
a random GUID per run
the MAX of the modified column, read before the copy
a Switch activity
a Wait activity
filtering by last modified time on the Copy source
27. How does Azure Data Factory handle pipeline failures and retries?
Every activity carries a policy with three settings: timeout (default 12 hours), retry count (default 0) and retry interval (default 30 seconds). Turn on retries for steps that fail transiently, such as network blips or throttled sources.
Retries re-run the whole activity, so the load must be idempotent, otherwise you create duplicates. Tumbling window triggers add their own retry policy per window, and after a failure you can rerun from the failed activity from the Monitor hub.
Take quiz
5
0
3
the retry interval is set to zero
the load is idempotent so retries don't create duplicates
the sink is Blob storage
28. How do you pass data between activities using expressions in Azure Data Factory?
Activities don't share memory. You read the output of an earlier activity with an expression, and ADF makes it available once that activity has completed.
@activity('Copy1').output.rowsCopied @activity('Lookup1').output.firstRow.Id @concat('sales_', formatDateTime(utcnow(), 'yyyyMMdd'), '.csv') SELECT * FROM t WHERE id = @{activity('Lookup1').output.firstRow.Id}
Use @{ } string interpolation to embed values inside longer text such as SQL, and the built-in functions (concat, formatDateTime, coalesce, if) for logic. The activity must be an upstream dependency, otherwise the reference fails.
Take quiz
@pipeline().activity('Copy1').rowsCopied
@activity('Copy1').output.rowsCopied
@variables('Copy1').output
@{ ... }
${ ... }
<% ... %>
29. How do you copy multiple tables dynamically in Azure Data Factory?
Build one generic copy and drive it from a list instead of creating a Copy activity per table.
flowchart LR A["Lookup list of tables"] --> B["ForEach over output.value"] B --> C["Copy with parameterized datasets"]
- Lookup returns schema and table names from a control table or
INFORMATION_SCHEMA. - ForEach iterates over
@activity('GetTables').output.value. - Inside, the Copy uses datasets with schema and table parameters set to
@item().SchemaNameand@item().TableName.
Add more rows to the list and the same pipeline copies them, with no redesign.
Take quiz
Wait, Until and Web
Lookup, ForEach and a Copy with parameterized datasets
Switch, Filter and Fail
it reads the trigger name
dataset parameters are set from @item()
it automatically picks the largest table
30. How can you improve Copy activity performance in Azure Data Factory?
Copy speed is governed by the source, the sink, the network and the compute you give it. Start with the knobs ADF exposes:
- Data Integration Units (DIUs): serverless compute power for cloud copies, 4 to 256, Auto by default.
- Degree of copy parallelism: how many parallel threads read and write.
- Partition options: split large tables by range or physical partition so reads run in parallel.
- Staged copy: land data in Blob/ADLS first, then bulk load with PolyBase or COPY into Synapse.
- Locality: keep the IR region close to the data, and scale out self-hosted IR nodes.
Raising DIUs only helps if the source and sink can actually deliver faster.
Take quiz
Data Integration Unit
Direct Ingestion Utility
Data Index Update
Key Vault for batching
a Git branch for buffering
interim Blob or ADLS storage, for example to bulk load Synapse
31. How do you run SSIS packages in Azure Data Factory?
You provision an Azure-SSIS integration runtime, a managed cluster of Azure VMs that runs the SSIS engine, then execute packages with the Execute SSIS Package activity.
- Create an Azure SQL Database or Managed Instance to host the SSISDB catalog (or use a package store).
- Create and start the Azure-SSIS IR, choosing node size and count.
- Deploy the SSIS project from SSDT or SSMS.
- Add the Execute SSIS Package activity to a pipeline and point it at the package.
To reach on-premises sources, add a self-hosted IR as a proxy. The Azure-SSIS IR bills while it runs, so stop it when idle.
Take quiz
Execute Pipeline
Custom activity
Execute SSIS Package
disable Git integration
delete all linked services
stop the Azure-SSIS IR
32. How does Azure Data Factory integrate with Git for source control?
ADF supports Azure DevOps Git and GitHub. You connect a repo, choose a collaboration branch (usually main) and work in feature branches, merging through pull requests.
Clicking Publish from the collaboration branch generates ARM templates into the adf_publish branch, which release pipelines use to deploy to other environments.
Without Git, you author in live mode: there is no version history, no branches, and every save is published straight to the service.
Take quiz
main_publish
adf_publish
release
saves straight to the live service with no branches or history
creates a feature branch automatically
is not possible
33. How do you deploy Azure Data Factory across environments with CI/CD?
The usual flow takes the generated ARM templates and promotes them through dev, test and prod with a pipeline in Azure DevOps or GitHub Actions.
- Build: take the ARM template from
adf_publish, or generate and validate it from the collaboration branch using the@microsoft/azure-data-factory-utilitiesnpm package. - Stop active triggers in the target factory.
- Deploy the ARM template with an override parameters file per environment (server names, Key Vault URLs, storage accounts).
- Clean up deleted resources, then restart the triggers.
Global parameters and Key Vault references keep environment differences out of the pipeline logic.
Take quiz
stop the active triggers
stop all linked services
delete the Git repo
editing JSON in production by hand
ARM template parameter overrides per environment
duplicating every pipeline per environment
34. How does the ForEach batch count affect execution in Azure Data Factory?
The batch count sets how many ForEach iterations may run in parallel. The default is 20 and the maximum is 50. Ticking Sequential overrides it and runs one at a time.
More parallelism means faster loops but also more simultaneous load on your source and sink, which can cause throttling or lock contention. Iterations also finish in no guaranteed order, so never rely on sequence when running in parallel.
Take quiz
256
100
50
not guaranteed
always the reverse of input order
always the input order
35. How do you handle schema drift in mapping data flows?
Schema drift means source columns appear, disappear or change without notice. Mapping data flows handle it by allowing schema drift on the source and sink, so unknown columns flow through instead of breaking the run.
To act on those columns without naming them, use rule-based mapping and column patterns, for example:
Match: type == 'string' Output: $$ -> trim($$) byName('CustomerId') // read a column that is not in the defined schema
Turn on infer drifted column types if you need typed values downstream.
Take quiz
data flow clusters being resized
a linked service password rotation
source columns changing over time without a fixed schema
schedule columns to refresh
encrypt individual columns
map columns by pattern or type instead of fixed names
36. What is the difference between a dataset and a linked service in Azure Data Factory?
A linked service answers how do I connect? and a dataset answers which data do I use there?
| Linked service | Dataset |
| Connection details and credentials. | Table, file path or container inside that connection. |
| Points to an integration runtime. | Points to a linked service. |
| One per server or account. | Many per linked service. |
| Can also represent compute (Databricks). | Describes data only. |
In mapping data flows you can skip datasets using inline source definitions.
Take quiz
dataset
trigger
linked service
a Git branch
a linked service
a trigger
37. When would you choose a mapping data flow over the Copy activity?
Use Copy when the job is moving data, perhaps with format conversion or column mapping. Use a mapping data flow when you need real transformation logic in the middle.
| Copy activity | Mapping data flow |
| Pure movement, lowest overhead. | Joins, aggregates, derived columns, conditional splits. |
| Starts quickly. | Needs a Spark cluster, so a cold start of a few minutes. |
| Billed per DIU-hour. | Billed per vCore-hour. |
| Works with 90+ connectors. | Supports a narrower set of sources and sinks. |
A common design uses Copy to land raw data, then a data flow to shape it.
Take quiz
Copy activity
Execute Pipeline
Mapping data flow
mapping data flow
Copy on an Azure IR
Lookup activity
38. How do you secure Azure Data Factory with managed identity?
Every data factory gets a system-assigned managed identity automatically, named after the factory. You grant that identity access to targets and then choose managed identity authentication in the linked service, so no password exists at all.
For storage, assign a role such as Storage Blob Data Reader. For Azure SQL, create a user from the factory identity:
CREATE USER [my-adf-name] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [my-adf-name];
User-assigned managed identities are also supported on linked services when you need one identity shared across factories.
Take quiz
the Key Vault
the data factory
the subscription ID
sp_addlinkedserver with a SAS token
GRANT LOGIN with a storage key
CREATE USER ... FROM EXTERNAL PROVIDER
39. What are managed virtual networks and managed private endpoints in Azure Data Factory?
A managed virtual network is an isolated network that ADF creates and manages for an Azure integration runtime. Copy and data flow compute run inside it, so traffic to your data stores can stay off the public internet.
Managed private endpoints are the private connections from that network to targets such as Storage, SQL or Key Vault. Each request must be approved on the target resource by its owner before it works. The result is stronger protection against data exfiltration, at the cost of a slightly slower IR start.
Take quiz
approved on the target resource
approved through Conditional Access in Entra ID
created inside your own VNet
the Git repository
the Azure integration runtime
self-hosted IR nodes
40. How do you troubleshoot slow Copy activity performance in Azure Data Factory?
Don't guess; the Copy output tells you where the time went. Open the activity run details and look at throughput, DIUs used, parallel copies and the duration breakdown (queue, time to first byte, reading from source, writing to sink).
- Find the slow phase. A long queue means resource contention; long source reads point to the source.
- Check the source and sink for throttling, missing indexes or small-file overhead.
- Add partition options and raise parallel copies for large tables.
- Raise DIUs, or add self-hosted IR nodes, only if the compute is the limit.
- Consider staged copy for Synapse or Snowflake sinks.
If the source is the bottleneck, more DIUs will not help.
Take quiz
recreate the linked service
raise DIUs to the maximum
read the run details to see which phase is the bottleneck
not help much because the source can't deliver faster
always double throughput
fix the sink
41. How do you troubleshoot a self-hosted integration runtime that shows offline?
Work from the machine outwards. An offline IR usually means the node can't reach ADF, not that ADF is down.
- Confirm the Integration Runtime Service (DIAHostService) is running on the node.
- Check outbound HTTPS 443 to the ADF endpoints through firewall and proxy rules.
- Open the Integration Runtime Configuration Manager and check registration and the authentication key.
- Review Event Viewer logs under Integration Runtime for errors.
- Make sure the machine isn't asleep, out of memory, or mid auto-update.
With multiple nodes registered, one failing node won't stop the IR.
Take quiz
Windows Update Orchestrator
Integration Runtime Service (DIAHostService)
SQL Server Agent
blocked inbound RDP
disabled Git integration
blocked outbound HTTPS 443 to ADF endpoints
42. How do data flow clusters and TTL work in Azure Data Factory?
Each mapping data flow run needs a Spark cluster. When a run starts and none is warm, ADF spins one up, which typically takes a few minutes. That is the cold start people notice.
Time to live (TTL) on the Azure IR keeps the cluster alive for a set time after the last run, so back-to-back data flows start in seconds. The trade-off is that you pay for the idle warm time.
Compute type and core count are set on the same IR. Set a TTL for pipelines with many sequential data flows; leave it at zero for one-off nightly runs.
Take quiz
how long run history is kept
when linked service tokens expire
how long the Spark cluster stays warm after a run
under one second
a few minutes to spin up the cluster
about an hour
43. How do you trigger an Azure Data Factory pipeline from a storage event?
Use an event-based trigger. It listens to Azure Event Grid for blob events on a storage account, so the pipeline starts as soon as a file arrives.
- Register the Microsoft.EventGrid resource provider on the subscription.
- Create the trigger, choose the storage account, container and Blob created event.
- Add optional begins with / ends with filters, for example
.csv. - Map trigger values to pipeline parameters.
folderPath = @triggerBody().folderPath fileName = @triggerBody().fileName
Custom Event Grid topics are also supported for non-storage events.
Take quiz
Blob created
a SQL row inserted
a Key Vault secret rotated
@activity('Trigger').output.name
@pipeline().TriggerName.file
@triggerBody().fileName
44. How do tumbling window trigger dependencies work in Azure Data Factory?
A tumbling window trigger can depend on another tumbling window trigger, or on itself. The dependent window only starts once the window it depends on has finished successfully.
- Offset: which upstream window to wait for, relative to the current one (for example the previous day).
- Size: how many upstream windows must be complete.
- Self-dependency: a window waits for the previous window of the same trigger, enforcing strict order.
This lets you chain staging, transform and reporting pipelines on matching time slices without writing custom polling logic. Combine it with max concurrency to control how many windows run at once.
Take quiz
make a window start only after the previous window succeeded
skip failed windows
run every window at the same time
the DIU size
the retry delay
which upstream window to wait for relative to the current one
45. How do you implement error handling with dependency conditions in Azure Data Factory?
Each dependency line between activities has one of four conditions: Succeeded, Failed, Skipped, Completed. Connecting activities with different conditions builds try/catch behaviour.
| Condition | Next activity runs when |
| Succeeded | Previous activity succeeded |
| Failed | Previous activity failed |
| Skipped | Previous activity was skipped |
| Completed | Previous activity finished, either way |
On a Failed path, log the error with a Stored Procedure or Web call using @activity('Copy1').error.message. The pipeline status is judged from its leaf activities, so a handled failure can still report Succeeded; add a Fail activity if the run must show as failed.
Take quiz
Succeeded
Failed
Skipped
@pipeline().error
@activity('Copy1').error.message
@variables('error')
46. How can you reduce costs in Azure Data Factory?
ADF bills for orchestration (activity runs), data movement (DIU-hours) and data flow (vCore-hours), plus any running Azure-SSIS IR. Most savings come from those three meters.
- Use Copy instead of a data flow when no transformation is needed.
- Tune DIUs and avoid over-provisioning small copies.
- Set data flow TTL carefully and pick the smallest core count that meets the SLA.
- Stop the Azure-SSIS IR when idle.
- Avoid tight Until + Wait polling loops, because each iteration counts as billed activity runs.
- Filter and compress at the source to move less data.
Take quiz
linked service creation
mapping data flow execution
Lookup activity
every iteration counts as billed activity runs
Wait reserves extra cores
Until doubles the DIUs
47. What is the difference between Azure Data Factory and Azure Synapse pipelines?
Both use the same pipeline engine, activities and connectors. The difference is the surroundings.
| Azure Data Factory | Synapse pipelines |
| Standalone data integration service. | Part of a Synapse workspace alongside Spark and SQL pools. |
| Authored in ADF Studio. | Authored in Synapse Studio. |
| Supports Azure-SSIS IR for SSIS. | No Azure-SSIS IR support. |
| Best for integration-only teams. | Best when you already work inside Synapse. |
Skills transfer almost 1:1 between the two.
Take quiz
Synapse pipelines
Azure Data Factory
neither of them
Azure DevOps Boards
Synapse Studio
Power BI Desktop
48. Explain the execution flow of a pipeline run in Azure Data Factory?
When a trigger fires or you click Run, ADF creates a pipeline run with a unique run ID, binds parameter values and starts scheduling activities in the order set by their dependencies.
sequenceDiagram participant T as Trigger participant S as ADF Service participant IR as Integration Runtime participant D as Data Stores T->>S: Start pipeline run S->>S: Assign run ID and evaluate parameters S->>IR: Dispatch Copy / Data Flow activity IR->>D: Read source, write sink IR-->>S: Status and output S->>S: Evaluate dependsOn, run next activity S-->>T: Run status to Monitor hub
Control activities such as If Condition and ForEach are handled by the ADF service itself, while Copy, data flow and external activities are dispatched to the IR. When all leaf activities finish, the run is marked Succeeded, Failed or Cancelled.
Take quiz
the Git commit hash
the trigger name alone
a unique run ID
the Azure-SSIS IR
a Spark cluster
the ADF service's orchestration layer, not a Spark cluster
49. Explain the internal working of the Copy activity in Azure Data Factory?
When a Copy starts, ADF picks the integration runtime from the linked service, then the IR connects to the source and sink using the connector settings.
flowchart LR A["Source connector"] --> B["Partitioned parallel reads"] B --> C["In-memory buffer and format conversion"] C --> D["Optional staging in Blob/ADLS"] C --> E["Sink connector writes"] D --> E
Parallelism comes from the DIUs and the parallel copies setting, which split work across threads or partitions. Data is streamed through buffers, converted or compressed on the way, and optionally staged for bulk loads such as PolyBase. With fault tolerance on, incompatible rows are skipped and logged instead of failing the copy.
Take quiz
the number of linked services
DIUs and the parallel copies setting with partitioning
trigger concurrency only
retry forever
skip incompatible rows and log them
re-encrypt the data
50. How do you design a metadata-driven framework in Azure Data Factory?
A metadata-driven framework replaces dozens of near-identical pipelines with one generic pipeline controlled by a configuration table.
CREATE TABLE etl.Control ( Id INT, SourceSchema VARCHAR(50), SourceTable VARCHAR(100), SinkPath VARCHAR(200), LoadType VARCHAR(20), -- full / incremental WatermarkColumn VARCHAR(100), IsActive BIT);
- Lookup reads the active rows from the control table.
- ForEach loops over them, with batch count tuned to the source.
- A Switch on
LoadTyperoutes to the full or incremental copy. - Datasets and linked services are parameterized from
@item(). - A stored procedure logs each run's status, row count and errors to an audit table.
Adding a new source becomes an insert into the control table, not a new pipeline. Restartability comes from the audit table.