Prev Next

Cloud / Azure Data Factory Interview questions

Last updated

1. What is Azure Data Factory? 2. What are the main components of Azure Data Factory? 3. What is a pipeline in Azure Data Factory? 4. What is an activity in Azure Data Factory? 5. What is a dataset in Azure Data Factory? 6. What is a linked service in Azure Data Factory? 7. What is an integration runtime in Azure Data Factory? 8. What are the types of integration runtime in Azure Data Factory? 9. What are the types of triggers in Azure Data Factory? 10. What is the Copy activity used for in Azure Data Factory? 11. What are mapping data flows in Azure Data Factory? 12. What is the Lookup activity in Azure Data Factory? 13. What is the ForEach activity in Azure Data Factory? 14. What is the Get Metadata activity used for? 15. What is the Execute Pipeline activity? 16. How do you use pipeline parameters in Azure Data Factory? 17. What is a debug run in Azure Data Factory? 18. How do you monitor pipelines in Azure Data Factory? 19. What is the Web activity used for in Azure Data Factory? 20. List the control flow activities in Azure Data Factory? 21. What is the difference between parameters and variables in Azure Data Factory? 22. What is the difference between Azure Data Factory and SSIS? 23. What is the difference between a tumbling window trigger and a schedule trigger? 24. How does a self-hosted integration runtime connect to on-premises data? 25. How do you store secrets in Azure Data Factory using Key Vault? 26. How do you implement incremental data load in Azure Data Factory? 27. How does Azure Data Factory handle pipeline failures and retries? 28. How do you pass data between activities using expressions in Azure Data Factory? 29. How do you copy multiple tables dynamically in Azure Data Factory? 30. How can you improve Copy activity performance in Azure Data Factory? 31. How do you run SSIS packages in Azure Data Factory? 32. How does Azure Data Factory integrate with Git for source control? 33. How do you deploy Azure Data Factory across environments with CI/CD? 34. How does the ForEach batch count affect execution in Azure Data Factory? 35. How do you handle schema drift in mapping data flows? 36. What is the difference between a dataset and a linked service in Azure Data Factory? 37. When would you choose a mapping data flow over the Copy activity? 38. How do you secure Azure Data Factory with managed identity? 39. What are managed virtual networks and managed private endpoints in Azure Data Factory? 40. How do you troubleshoot slow Copy activity performance in Azure Data Factory? 41. How do you troubleshoot a self-hosted integration runtime that shows offline? 42. How do data flow clusters and TTL work in Azure Data Factory? 43. How do you trigger an Azure Data Factory pipeline from a storage event? 44. How do tumbling window trigger dependencies work in Azure Data Factory? 45. How do you implement error handling with dependency conditions in Azure Data Factory? 46. How can you reduce costs in Azure Data Factory? 47. What is the difference between Azure Data Factory and Azure Synapse pipelines? 48. Explain the execution flow of a pipeline run in Azure Data Factory? 49. Explain the internal working of the Copy activity in Azure Data Factory? 50. How do you design a metadata-driven framework in Azure Data Factory?

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
ADF is best described as:
a BI tool for building dashboards
a relational database engine for OLTP workloads
a serverless cloud service for orchestrating data movement and transformation
Which ADF capability lets pipelines reach on-premises data?
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
Which component stores the connection information for an external data store?
dataset
linked service
trigger
Which component decides when a pipeline run starts?
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 pipeline in ADF is:
a logical group of activities that performs a unit of work
a physical VM that runs copy jobs
a stored connection string
How are activities inside a pipeline ordered?
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
Which of these is a data movement activity?
ForEach
Copy
Wait
ForEach belongs to which activity category?
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
A dataset in ADF holds:
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
Why would you parameterize a dataset?
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
Besides data stores, linked services can also represent:
pipeline triggers
compute resources such as Databricks or HDInsight
Git branches
A linked service is closest in meaning to a:
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
What does the integration runtime provide?
authentication for the Git repository
storage for pipeline JSON definitions
the compute where copy, data flow and dispatch activities run
When a linked service names no IR, ADF uses:
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
Which IR type is provisioned to execute SSIS packages?
Self-hosted IR
Azure-SSIS IR
Azure IR
To copy from a SQL Server behind a corporate firewall you would typically use:
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
Which trigger supports backfilling past time windows?
tumbling window
schedule
event-based
Event-based triggers rely on which Azure service?
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
Copy activity can also perform:
distributed Spark joins across many datasets
ARM template deployment
format conversion such as CSV to Parquet
A Copy activity minimally needs:
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
Mapping data flows execute on:
the SQL Server named in the linked service
Spark clusters managed by ADF
the machine hosting the self-hosted IR
Which of these is a mapping data flow transformation?
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
Lookup activity output is limited to roughly:
1 million rows and 1 GB
5,000 rows and 4 MB
a single scalar value only
How do you read a column from the first row returned by Lookup1?
@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
Inside a ForEach, the current element is read with:
@current()
@item()
@foreach().value
How do you force ForEach iterations to run one at a time?
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
Which Get Metadata field lists the files in a folder?
contentMD5
structure
childItems
Which field tells you whether the item is present?
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
Execute Pipeline helps primarily with:
creating linked services at runtime
installing integration runtimes
reusing child pipelines and passing them parameters
If 'Wait on completion' is unchecked, the parent pipeline:
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
Can a pipeline parameter be changed during the run?
yes, with an Append Variable activity
yes, with a Set Variable activity
no, parameters are read-only inside a run
How do you read a pipeline parameter named env?
@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
A debug run executes:
only the last published version
only against fake sample data
the current unpublished draft of the pipeline
'Debug until' on an activity does what?
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
How long does the ADF Monitor UI keep run history?
7 days
45 days
365 days
To retain run logs for longer you should:
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
Web activity can authenticate using:
only anonymous requests
only Git credentials
managed identity, among other methods
Web activity is typically used to:
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
Which control flow activity repeats until a condition becomes true?
Filter
Wait
Until
Which activity deliberately fails a pipeline with a custom message?
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
Which of these can be modified while the pipeline is running?
pipeline parameters
global parameters via Set Variable
variables
Why avoid Set Variable inside a parallel ForEach?
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
Which existing assets can ADF run through an Azure-SSIS IR?
SSIS packages
SSAS cubes
SSRS reports
ADF's pricing is mostly:
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
Which trigger type is tied to exactly one pipeline?
tumbling window
event-based
schedule
To reprocess last month's hourly slices you would use:
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
A self-hosted IR communicates with ADF through:
outbound HTTPS connections on port 443
a mandatory site-to-site VPN
inbound port 1433 opened to the internet
How many nodes can one self-hosted IR have?
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.

  1. Create a Key Vault and add the secret.
  2. Grant the factory's managed identity Get (and List) permission on secrets, via access policy or the Key Vault Secrets User role.
  3. Create a Key Vault linked service in ADF.
  4. 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
What does ADF's managed identity need on the vault?
Owner on the whole subscription
Get (and List) permission on secrets
Delete permission on keys
A main benefit of using a Key Vault secret reference is:
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 <= &#x27;@{activity(&#x27;NewWM&#x27;).output.firstRow.Value}&#x27;

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
In the watermark pattern the new watermark is usually:
the pipeline start time minus 24 hours always
a random GUID per run
the MAX of the modified column, read before the copy
For files, which native option supports incremental pickup?
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
What is the default retry count on an activity?
5
0
3
Before enabling retries on a Copy you should make sure:
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(&#x27;Copy1&#x27;).output.rowsCopied
@activity(&#x27;Lookup1&#x27;).output.firstRow.Id
@concat(&#x27;sales_&#x27;, formatDateTime(utcnow(), &#x27;yyyyMMdd&#x27;), &#x27;.csv&#x27;)
SELECT * FROM t WHERE id = @{activity(&#x27;Lookup1&#x27;).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
Which expression reads a previous activity's output?
@pipeline().activity('Copy1').rowsCopied
@activity('Copy1').output.rowsCopied
@variables('Copy1').output
String interpolation inside text uses which syntax?
@{ ... }
${ ... }
<% ... %>

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"]
  1. Lookup returns schema and table names from a control table or INFORMATION_SCHEMA.
  2. ForEach iterates over @activity('GetTables').output.value.
  3. Inside, the Copy uses datasets with schema and table parameters set to @item().SchemaName and @item().TableName.

Add more rows to the list and the same pipeline copies them, with no redesign.

Take quiz
Which trio forms the standard dynamic copy pattern?
Wait, Until and Web
Lookup, ForEach and a Copy with parameterized datasets
Switch, Filter and Fail
How does Copy know which table to read inside the ForEach?
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
DIU stands for:
Data Integration Unit
Direct Ingestion Utility
Data Index Update
Staged copy uses:
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.

  1. Create an Azure SQL Database or Managed Instance to host the SSISDB catalog (or use a package store).
  2. Create and start the Azure-SSIS IR, choosing node size and count.
  3. Deploy the SSIS project from SSDT or SSMS.
  4. 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
Which activity executes an SSIS package from a pipeline?
Execute Pipeline
Custom activity
Execute SSIS Package
To avoid cost when no SSIS jobs are running you should:
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
What is the default publish branch name?
main_publish
adf_publish
release
Without Git integration, authoring:
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.

  1. Build: take the ARM template from adf_publish, or generate and validate it from the collaboration branch using the @microsoft/azure-data-factory-utilities npm package.
  2. Stop active triggers in the target factory.
  3. Deploy the ARM template with an override parameters file per environment (server names, Key Vault URLs, storage accounts).
  4. Clean up deleted resources, then restart the triggers.

Global parameters and Key Vault references keep environment differences out of the pipeline logic.

Take quiz
Before deploying a new version you should:
stop the active triggers
stop all linked services
delete the Git repo
Environment-specific values such as server names are handled by:
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
What is the maximum ForEach batch count?
256
100
50
In a parallel ForEach, iteration completion order is:
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 == &#x27;string&#x27;
Output:   $$ -> trim($$)
byName(&#x27;CustomerId&#x27;)   // read a column that is not in the defined schema

Turn on infer drifted column types if you need typed values downstream.

Take quiz
Schema drift refers to:
data flow clusters being resized
a linked service password rotation
source columns changing over time without a fixed schema
Rule-based mapping lets you:
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
Which one contains the connection string?
dataset
trigger
linked service
A dataset must reference:
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
Which is best for pure bulk movement with no transformation?
Copy activity
Execute Pipeline
Mapping data flow
Which of these needs a Spark cluster?
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
A system-assigned managed identity is named after:
the Key Vault
the data factory
the subscription ID
On Azure SQL you grant the identity access with:
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
A managed private endpoint request must be:
approved on the target resource
approved through Conditional Access in Entra ID
created inside your own VNet
The managed virtual network is attached to:
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).

  1. Find the slow phase. A long queue means resource contention; long source reads point to the source.
  2. Check the source and sink for throttling, missing indexes or small-file overhead.
  3. Add partition options and raise parallel copies for large tables.
  4. Raise DIUs, or add self-hosted IR nodes, only if the compute is the limit.
  5. Consider staged copy for Synapse or Snowflake sinks.

If the source is the bottleneck, more DIUs will not help.

Take quiz
The first step to diagnose a slow Copy is to:
recreate the linked service
raise DIUs to the maximum
read the run details to see which phase is the bottleneck
If the source database is the bottleneck, adding DIUs will:
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.

  1. Confirm the Integration Runtime Service (DIAHostService) is running on the node.
  2. Check outbound HTTPS 443 to the ADF endpoints through firewall and proxy rules.
  3. Open the Integration Runtime Configuration Manager and check registration and the authentication key.
  4. Review Event Viewer logs under Integration Runtime for errors.
  5. 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
Which Windows service must run on a self-hosted IR node?
Windows Update Orchestrator
Integration Runtime Service (DIAHostService)
SQL Server Agent
What most often causes an offline status?
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
TTL on the data flow IR controls:
how long run history is kept
when linked service tokens expire
how long the Spark cluster stays warm after a run
A data flow cold start typically takes:
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.

  1. Register the Microsoft.EventGrid resource provider on the subscription.
  2. Create the trigger, choose the storage account, container and Blob created event.
  3. Add optional begins with / ends with filters, for example .csv.
  4. 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
Which event does a typical storage event trigger listen for?
Blob created
a SQL row inserted
a Key Vault secret rotated
How do you read the arriving file name in the pipeline?
@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
Self-dependency on a tumbling window trigger is used to:
make a window start only after the previous window succeeded
skip failed windows
run every window at the same time
The dependency offset specifies:
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
Which dependency path runs only after the previous activity fails?
Succeeded
Failed
Skipped
How do you read the error message of a failed Copy1?
@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
Which meter is billed per vCore-hour?
linked service creation
mapping data flow execution
Lookup activity
A tight Until loop with Wait polling raises cost because:
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
Which service supports the Azure-SSIS IR?
Synapse pipelines
Azure Data Factory
neither of them
Synapse pipelines are authored in:
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
Each pipeline run is identified by:
the Git commit hash
the trigger name alone
a unique run ID
Control activities like If Condition are executed by:
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
Parallelism in a Copy comes from:
the number of linked services
DIUs and the parallel copies setting with partitioning
trigger concurrency only
The fault tolerance setting lets a Copy:
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);

  1. Lookup reads the active rows from the control table.
  2. ForEach loops over them, with batch count tuned to the source.
  3. A Switch on LoadType routes to the full or incremental copy.
  4. Datasets and linked services are parameterized from @item().
  5. 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.

Take quiz
The core benefit of a metadata-driven framework is:
it eliminates all monitoring
it removes the need for an integration runtime
new sources are added by inserting config rows rather than building new pipelines
A control table typically stores:
Git commit history
Azure RBAC role assignments
source, sink, load type and watermark column details
«
»

Comments & Discussions