Azure Data Factory: De Ultieme Cloud Data Integratie Service
Wat is Azure Data Factory?
Azure Data Factory (ADF) is Microsoft's cloudgebaseerde ETL/ELT-service (Extract, Transform, Load) voor het bouwen van data-integratieoplossingen. Het is een volledig beheerde, serverless service waarmee je complexe data transformatiepijplijnen kunt ontwerpen, plannen en beheren.
- Serverless architectuur: Geen infrastructuur om te beheren
- Hybride data integratie: Werkt met zowel cloud als on-premises bronnen
- Code-optioneel: Visuele interface of code (JSON, Python, .NET)
- Schaling op aanvraag: Automatisch schalen voor grote workloads
- Pay-as-you-go: Alleen betalen voor wat je gebruikt
ADF Architectuur: Hoe Werkt Het?
ADF bestaat uit vier hoofdcomponenten die samenwerken:
1. Integration Runtime (IR)
De rekeninfrastructuur die ADF gebruikt om activiteiten uit te voeren. Er zijn drie typen:
- Azure IR: Volledig beheerd voor cloud-naar-cloud integratie
- Self-hosted IR: Voor on-premises of VNet data bronnen
- Azure-SSIS IR: Voor het uitvoeren van SSIS-pakketten in de cloud
2. Linked Services
Vergelijkbaar met verbindingsstrings - definiëren de verbinding met externe data bronnen:
{
"name": "AzureSqlDatabaseLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connectionString": "Server=tcp:myserver.database.windows.net;Database=mydb;Authentication=Active Directory Integrated"
},
"connectVia": {
"referenceName": "AutoResolveIntegrationRuntime",
"type": "IntegrationRuntimeReference"
}
}
}
3. Datasets
Representaties van data structuren in linked services:
{
"name": "AzureSqlTableDataset",
"properties": {
"linkedServiceName": {
"referenceName": "AzureSqlDatabaseLinkedService",
"type": "LinkedServiceReference"
},
"schema": [
{
"name": "UserId",
"type": "Int32"
},
{
"name": "Name",
"type": "String"
}
],
"type": "AzureSqlTable",
"typeProperties": {
"tableName": "Users"
}
}
}
4. Pipelines en Activiteiten
Pipelines zijn logische groepen van activiteiten die samen een workflow vormen:
{
"name": "ProcessUserDataPipeline",
"properties": {
"activities": [
{
"name": "CopyFromBlobToSql",
"type": "Copy",
"inputs": [
{
"referenceName": "InputBlobDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "OutputSqlDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink",
"writeBatchSize": 10000
}
}
}
]
}
}
Data Transformatie in ADF
ADF biedt verschillende opties voor data transformatie:
1. Mapping Data Flows
Visuele data transformaties zonder code, uitgevoerd op Spark clusters:
source(output(
CustomerID as integer,
Name as string,
Email as string,
SignupDate as timestamp
),
allowSchemaDrift: true,
validateSchema: false) ~> Source1
Source1 filter(Email != null()) ~> FilterNullEmails
FilterNullEmails aggregate(groupBy(Name),
count(CustomerID) as CustomerCount) ~> Aggregate1
Aggregate1 sink(allowSchemaDrift: true,
validateSchema: false) ~> Sink1
2. Externe transformaties
ADF kan transformaties delegeren aan andere services:
- Azure Databricks: Voor complexe Python/Scala transformaties
- HDInsight: Voor Hadoop/Spark workloads
- Azure Synapse: Voor data warehouse transformaties
- Stored procedures: In databases zoals SQL Server
3. Wrangling Data Flows
Power Query-achtige interface voor self-service data prep:
# Power Query M script voor Wrangling Data Flow
let
Source = #"AzureSQLDatabase",
#"Filtered Rows" = Table.SelectRows(Source, each [Age] > 18),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Country"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
#"Grouped Rows"
Geavanceerde ADF Functies
Parameters en Variabelen
Maak dynamische, herbruikbare pipelines:
{
"name": "DynamicPipeline",
"properties": {
"parameters": {
"tableName": {
"type": "string",
"defaultValue": "Customers"
},
"outputPath": {
"type": "string"
}
},
"variables": {
"tempFileName": "[concat('temp_', pipeline().parameters.tableName)]"
},
"activities": [
{
"name": "CopyActivity",
"type": "Copy",
"inputs": [
{
"referenceName": "SourceDataset",
"type": "DatasetReference",
"parameters": {
"tableName": "[pipeline().parameters.tableName]"
}
}
],
"outputs": [
{
"referenceName": "SinkDataset",
"type": "DatasetReference",
"parameters": {
"path": "[pipeline().parameters.outputPath]"
}
}
]
}
]
}
}
Foutafhandeling
Implementeer robuuste foutafhandeling in pipelines:
{
"name": "PipelineWithErrorHandling",
"properties": {
"activities": [
{
"name": "MainActivity",
"type": "Copy",
"inputs": [...],
"outputs": [...],
"policy": {
"timeout": "7.00:00:00",
"retry": 3,
"retryIntervalInSeconds": 30
}
},
{
"name": "ErrorHandler",
"type": "WebActivity",
"dependsOn": [
{
"activity": "MainActivity",
"dependencyConditions": ["Failed"]
}
],
"typeProperties": {
"url": "https://your-error-handling-endpoint",
"method": "POST"
}
}
]
}
}
Triggers
Automatiseer pipeline-uitvoeringen met verschillende trigger types:
{
"name": "DailyTrigger",
"properties": {
"type": "ScheduleTrigger",
"typeProperties": {
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2025-01-01T00:00:00Z",
"timeZone": "UTC",
"schedule": {
"hours": [0, 12]
}
}
},
"pipelines": [
{
"pipelineReference": {
"referenceName": "DailyProcessingPipeline",
"type": "PipelineReference"
}
}
]
}
}
ADF Best Practices
1. Ontwerpprincipes
- Modulair ontwerp: Kleine, herbruikbare pipelines
- Parameters: Maak pipelines dynamisch en herbruikbaar
- Omgevingsscheiding: Aparte factories voor dev, test, prod
2. Prestatieoptimalisatie
- Data partities: Parallelle verwerking voor grote datasets
- DIU optimalisatie: Aanpassen Data Integration Units
- Incrementeel laden: Alleen nieuwe/wijzigende data verwerken
3. Beveiliging
- Azure Key Vault: Voor gevoelige verbindingsgegevens
- Managed Identity: Voor veilige service-naar-service authenticatie
- Netwerkisolatie: Private endpoints voor gevoelige data
4. Monitoring en Logging
- Azure Monitor: Voor uitgebreide logging en alerts
- Diagnostische instellingen: Logboeken naar Log Analytics
- Custom metrics: Voor bedrijfsspecifieke monitoring
ADF in de Praktijk: End-to-End Voorbeeld
Scenario: Dagelijkse Verkooprapportage
Een complete pipeline voor dagelijkse verkooprapportage:
{
"name": "DailySalesReporting",
"properties": {
"activities": [
{
"name": "CopySalesDataFromSQL",
"type": "Copy",
"inputs": [
{
"referenceName": "SalesSQLDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "SalesDataLakeDataset",
"type": "DatasetReference"
}
]
},
{
"name": "TransformSalesData",
"type": "MappingDataFlow",
"inputs": [
{
"referenceName": "SalesDataLakeDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "TransformedSalesDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"dataFlow": {
"referenceName": "SalesTransformation",
"type": "DataFlowReference"
}
}
},
{
"name": "GeneratePowerBIReport",
"type": "WebActivity",
"dependsOn": [
{
"activity": "TransformSalesData",
"dependencyConditions": ["Succeeded"]
}
],
"typeProperties": {
"url": "https://api.powerbi.com/datasets/refresh",
"method": "POST",
"headers": {
"Authorization": "Bearer ..."
}
}
},
{
"name": "SendCompletionEmail",
"type": "WebActivity",
"dependsOn": [
{
"activity": "GeneratePowerBIReport",
"dependencyConditions": ["Succeeded"]
}
],
"typeProperties": {
"url": "https://prod-00.westeurope.logic.azure.com:443/workflows/...",
"method": "POST",
"body": {
"message": "Daily sales report generated successfully"
}
}
}
]
}
}
ADF vs Alternatieven
| Service | Sterke punten | Gebruiksscenario's |
|---|---|---|
| Azure Data Factory | Hybride integratie, serverless, visuele tools | Cloud ETL/ELT, data verplaatsing, georkestreerde workflows |
| Azure Synapse Pipelines | Geïntegreerd met Synapse, geavanceerde transformaties | Data warehouse workloads, complexe analytics pipelines |
| SSIS in Azure | Rijke transformaties, bestaande SSIS-pakketten | Migratie van on-premises ETL, complexe data transformaties |
| Databricks Workflows | Geavanceerde analytics, machine learning | Data science pipelines, real-time analytics |
Conclusie
Azure Data Factory is een krachtig en flexibel platform voor cloud data integratie dat organisaties helpt bij het bouwen van schaalbare, betrouwbare data pipelines. Met zijn serverless architectuur, uitgebreide connectiviteit en zowel visuele als programmatische authoring-mogelijkheden, is ADF een uitstekende keuze voor moderne data-integratiebehoeften.
Of je nu eenvoudige dataverplaatsingen nodig hebt of complexe ETL/ELT-workflows, ADF biedt de tools om je data pipelines te ontwerpen, plannen en monitoren. Door gebruik te maken van best practices zoals modulair ontwerp, parameterisatie en robuuste foutafhandeling, kun je productieklare data-integratieoplossingen bouwen die schaalbaar, onderhoudbaar en kosteneffectief zijn.
Met de serverless architectuur, visuele interface en uitgebreide connectiviteit is ADF een uitstekende keuze voor organisaties die hun data integratie naar de cloud verplaatsen.
Wil je zelf direct met ADF aan de slag? Bekijk dan mijn complete praktische ADF-handleiding (€9), inclusief voorbeelden, best practices en geavanceerde technieken. Perfect voor data engineers en integratie specialisten die cloud-native pipelines willen bouwen.
← Terug naar Blog Overzicht