Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
36 KiB
Data Factory AI-Driven Pipelines
Last updated: 2026-06-24 Status: GA (Azure Data Factory), GA (Fabric Data Factory) Category: Data Engineering for AI Type: reference Source: https://learn.microsoft.com/fabric/data-factory/data-factory-overview
Innhold
- Introduksjon
- Kjernekomponenter
- Arkitekturmønstre
- Beslutningsveiledning
- Integrasjon med Microsoft-stakken
- Offentlig sektor (Norge)
- Kostnad og lisensiering
- For arkitekten (Cosmo)
- Kilder og verifisering
Introduksjon
Azure Data Factory og Fabric Data Factory er Microsofts orkestreringsteknologier for data engineering-arbeidsflyter som understøtter AI-scenarioer. Teknologien lar deg automatisere dataprosessering, transformasjon, og orkestrering av machine learning-pipelines i storskalerte miljøer.
Kjernefunksjonalitet:
- ETL/ELT-orkestrator: Ekstrakter data fra 170+ kilder, transformerer, og laster i lakehouse/warehouse
- AI-integrasjon: Direkte aktiviteter for Azure Machine Learning, Spark, Databricks, og egendefinert ML-kode
- Copilot-drevet design: Natural language-beskrivelser genererer pipeline-logikk (kun Fabric)
- Skalerbarhet: Håndterer petabyte-skala med automatisk parallelisering og intelligent throughput-optimalisering
Viktig forskjell: Azure Data Factory (ADF) er PaaS-løsning med Azure-integrasjon. Fabric Data Factory er SaaS-løsning med innebygd OneLake, workspace-integrasjon, og AI-forbedringer. Fabric anbefales for nye AI-prosjekter.
Kjernekomponenter
Pipeline-arkitektur
| Komponent | Beskrivelse | Typisk bruk for AI-scenarioer |
|---|---|---|
| Pipeline | Logisk gruppering av aktiviteter som utfører en oppgave | ML feature engineering workflow, batch inference-orkestrer, retraining-trigger |
| Activity | Utførbare steg (Copy, Notebook, ML Execute, Web, etc.) | Azure ML Pipeline Run, Databricks Notebook, Custom Python Script, Batch Endpoint invoke |
| Linked Service | Tilkobling til datakilde/compute (Azure Storage, AML Workspace, Databricks) | ML workspace-tilkobling, feature store, inference endpoint |
| Dataset | Abstraksjon av data-input/output | Training data, inference batch input, prediction output table |
| Trigger | Hva starter pipeline (schedule, event, tumbling window) | Daglig retraining (schedule), data arrival event (storage event trigger) |
| Integration Runtime | Compute-miljø som kjører aktiviteter | Self-hosted IR for on-prem data, Azure IR for cloud data, Azure-SSIS IR for SSIS packages |
Aktivitetstyper med AI-relevans:
{
"AI/ML-aktiviteter": [
"AzureMLExecutePipeline",
"AzureMLBatchExecution",
"DatabricksNotebook",
"DatabricksSparkJar/Python",
"SynapseNotebook",
"FabricNotebook"
],
"Data prep for AI": [
"Copy",
"DataFlowGen2",
"ExecuteSQLStoredProcedure",
"LookupActivity"
],
"Orkestreringslogikk": [
"ForEach",
"IfCondition",
"Until",
"Wait",
"WebActivity"
]
}
Azure Machine Learning-integrasjon
Azure ML Execute Pipeline Activity (primær pattern):
{
"name": "InvokeMLTraining",
"type": "AzureMLExecutePipeline",
"linkedServiceName": {
"referenceName": "AzureMLService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"mlPipelineId": "abc-123-pipeline-id",
"experimentName": "fraud-detection-v2",
"mlPipelineParameters": {
"learning_rate": "0.001",
"batch_size": "32",
"data_path": "@pipeline().parameters.trainingDataPath"
},
"continueOnStepFailure": false
}
}
Batch Endpoint invokering (inferens):
Data Factory kan kalle batch endpoints via Web Activity + REST API eller direkte Azure ML Activity (Fabric Data Factory). Typisk mønster:
- Data Factory kopierer data til input-lokasjon
- Web Activity invoker batch endpoint med data-referanse
- Poller for jobbstatus
- Kopierer predictions til warehouse/lakehouse
Retraining-pattern:
[LookupWatermark] → [LookupMaxValue] → [IncrementalCopy] →
[AzureMLExecutePipeline (training)] → [AzureMLUpdateResource (deploy)] →
[StoredProcedureToUpdateWatermark]
Fabric-spesifikke AI-funksjoner:
- Azure Machine Learning Activity (native): Enklere konfigurasjon enn ADF, batch endpoint + pipeline (v1) support
- Copilot for Data Factory: Natural language → pipeline-generering ("Create a pipeline that trains a model daily")
- Semantic Model Refresh Activity: Refresh Power BI semantic model etter inferens
Arkitekturmønstre
1. Batch ML Inference Pipeline
Scenario: Daglig scoring av 10M transaksjoner for fraud detection
┌─────────────┐ ┌──────────────┐ ┌────────────────┐ ┌──────────────┐
│ Copy from │───▶│ DataFlow Gen2│───▶│ Azure ML Batch │───▶│ Copy results │
│ OLTP DB │ │ (feature eng)│ │ Endpoint │ │ to Warehouse │
└─────────────┘ └──────────────┘ └────────────────┘ └──────────────┘
│ │
│ ▼
│ ┌──────────────┐
│ │ Email/Teams │
└───────────────────────────────────│ Notification │
└──────────────┘
Implementeringsdetaljer:
- Schedule Trigger: 02:00 UTC daily
- Copy Activity: Incremental copy fra transaksjonstabell (watermark: LastModifiedDate)
- DataFlow Gen2: Feature engineering (aggregeringer, window functions, derived columns)
- Web Activity: POST til batch endpoint med SAS token til staging blob
- Until Activity: Poll batch job status hvert 30. sekund (timeout 60 min)
- Copy Activity (2): Copy predictions fra output blob til Synapse/Fabric Warehouse
- Email Activity: Notify data science team med run statistics
Optimal konfigurasjon:
- Data Movement Units (DMUs): 32 for millioner av rader
- Degree of Copy Parallelism: Auto (lar Data Factory kalkulere basert på data-størrelse og DMUs)
- Staging: Enabled for store datasett (>1 GB) med PolyBase-kompatible formater
2. Model Retraining Orchestration
Scenario: Ukentlig retraining av recommendation model med ny brukerinteraksjon
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Lookup Old │───▶│ Lookup New │───▶│ Incremental Copy │
│ Watermark │ │ Watermark (MAX) │ │ (new data only) │
└──────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌─────────────────────┐
│ Azure ML Pipeline │
│ (training + eval) │
└─────────────────────┘
│
┌───────────────────────────┴──────────────────┐
│ │
▼ ▼
┌──────────────────┐ ┌─────────────────┐
│ If eval metrics │───YES──▶ │ Azure ML Update │
│ > threshold │ │ Resource (deploy)│
└──────────────────┘ └─────────────────┘
│
NO
▼
┌──────────────────┐
│ Log to App │
│ Insights + alert │
└──────────────────┘
Nøkkelaktiviteter:
- Lookup: Query
watermarktablefor siste prosesserte timestamp - Lookup (2): Query source table for MAX(timestamp) for nye records
- Copy: SQL filter
WHERE timestamp > @oldWatermark AND timestamp <= @newWatermark - Azure ML Execute Pipeline: Trigger AML pipeline med parameter
data_path - If Condition:
@greater(activity('MLTraining').output.metrics.AUC, 0.92) - Azure ML Update Resource: Deploy ny modell til scoring endpoint (kun hvis AUC > threshold)
- Stored Procedure: Update watermark til
@newWatermark
Best practice:
- Idempotency: Bruk
@pipeline().RunIdi output paths for å unngå overwriting ved retry - Error handling: Retry policy (3 attempts, 30s interval) + alerting ved permanent failure
- Cost optimization: Bruk Azure ML compute clusters med autoscaling (min 0, max 4 nodes)
3. Real-time Streaming + Batch Hybrid
Scenario: IoT sensor data → real-time anomaly detection + daglig modell-retraining
Event Hubs ───▶ Stream Analytics ───▶ Azure ML Online Endpoint ───▶ Cosmos DB (anomalies)
│ │
│ ▼
└─────────▶ Append Blob (raw events) ◀───────────────────────────┌──────────────┐
│ │ Power BI │
▼ │ Dashboard │
┌──────────────────┐ └──────────────┘
│ Data Factory │
│ (nightly batch) │
│ - Copy all events│
│ - Feature eng │
│ - Retrain model │
│ - Deploy if better│
└──────────────────┘
Data Factory-rolle:
- Nightly aggregation: Copy Events → Lakehouse (bronze layer)
- Feature engineering: DataFlow Gen2 → silver layer
- Retraining: Azure ML Pipeline med silver data
- Deployment: Conditional deployment til online endpoint (Azure ML Update Resource activity støtter kun batch endpoints, online endpoints krever ARM templates eller Azure ML SDK via Notebook Activity)
Beslutningsveiledning
Når bruke Azure Data Factory vs Fabric Data Factory?
| Kriterium | Azure Data Factory | Fabric Data Factory |
|---|---|---|
| Integrasjon med Azure ML | ✅ Native AzureMLExecutePipeline + AzureMLUpdateResource | ⚠️ AzureMLExecutePipeline kun (update resource via REST API) |
| Integrasjon med Fabric AI | ❌ Ingen direkte integrasjon | ✅ Native Notebook, Semantic Model Refresh, OneLake-optimalisering |
| On-premises data sources | ✅ Self-hosted Integration Runtime | ⚠️ Self-hosted IR støttes, men mindre fokus på hybrid scenarioer |
| Cost model | Pay-per-activity + data movement (CU hours) | Capacity-basert (Fabric Capacity Units) |
| CI/CD | Azure DevOps/GitHub Actions + ARM templates | Built-in deployment pipelines (Git integration) |
| Copilot-funksjonalitet | ❌ Ikke tilgjengelig | ✅ Natural language pipeline authoring + error explanation |
| Anbefalinger | Etablerte Azure ML-workloads, hybrid scenarioer, eksplisitt kostnadskontroll per pipeline | Nye AI-prosjekter, Fabric-økosystem (Lakehouse, Warehouse, Power BI), rask prototyping med Copilot |
Når bruke Pipeline vs Apache Airflow Job (Fabric)?
| Kriterium | Pipeline (ADF/Fabric) | Apache Airflow Job (Fabric) |
|---|---|---|
| Authoring | Low-code UI (drag-and-drop) | Code-first (Python DAGs) |
| Persona | Data integrator, business analyst, data engineer (lav Python-kompetanse) | Apache Airflow users, data engineers (sterk Python-kompetanse) |
| ML orchestration | Native Azure ML activities | Airflow providers (apache-airflow-providers-microsoft-azure) + custom operators |
| Version control | JSON-filer i Git (via ARM templates eller Fabric Git integration) | Python-filer i Git (native) |
| Dependency management | Activity-level dependsOn (UI-konfigurerbar) |
Python-kode (task1 >> task2) |
| Use case for AI | Standardiserte ML-workflows (batch inferens, periodisk retraining), integrasjon med eksisterende Data Factory-pipelines | Komplekse ML-workflows med Python-logikk (hyperparameter tuning loops, conditional model selection), migrering fra on-prem Airflow |
Tommelfingerregel: Start med Pipeline (low-code) for 80% av scenarioer. Gå til Airflow Job hvis du trenger Python-flexibility (custom retry logic, dynamic task generation, complex branching).
Integrasjon med Microsoft-stakken
Microsoft Foundry
Pattern: Data Factory → Microsoft Foundry evaluation run
{
"name": "TriggerFoundryEvaluation",
"type": "WebActivity",
"method": "POST",
"url": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/evaluations/{evaluationName}/runs?api-version=2024-01-01-preview",
"authentication": {
"type": "MSI",
"resource": "https://management.azure.com/"
},
"body": {
"datasetId": "@activity('CopyTestData').output.datasetId",
"modelId": "@pipeline().parameters.modelId"
}
}
Integrasjonspunkter:
- Prompt flow deployment: Web Activity kaller prompt flow batch endpoint
- Model evaluation: Trigger evaluation runs etter model-deployment
- AI Search indexing: Copy Activity → Azure AI Search (via REST API sink eller custom activity)
Copilot Studio
Pattern: Data Factory → Copilot Studio knowledge refresh
Copilot Studio har ikke native Data Factory connector (per Feb 2026), men kan integreres via:
-
SharePoint connector (indirekte): Data Factory → Copy til SharePoint-liste → Copilot Studio leser fra SharePoint (topic trigger)
-
Power Automate bridge: Data Factory → Power Automate (HTTP trigger via Web Activity) → Copilot Studio (adaptive card eller topic invocation)
-
Azure AI Search (anbefalt for RAG-scenarioer): Data Factory → Copy til Azure AI Search → Copilot Studio bruker search skill
Eksempel (Azure AI Search-pattern):
{
"name": "IndexDocuments",
"type": "Copy",
"source": { "type": "BlobSource" },
"sink": {
"type": "AzureSearchIndexSink",
"writeBehavior": "Merge",
"writeBatchSize": 1000
},
"inputs": [{ "referenceName": "ProcessedDocuments", "type": "DatasetReference" }],
"outputs": [{ "referenceName": "AISearchIndex", "type": "DatasetReference" }]
}
Power Platform
Power Automate + Data Factory:
| Integrasjonsretning | Metode | Use case |
|---|---|---|
| Data Factory → Power Automate | Web Activity (HTTP POST til Power Automate webhook) | Notify business users via Teams, Outlook, or Approval workflows |
| Power Automate → Data Factory | Azure Data Factory connector (trigger pipeline) | Business-initiated data refresh (e.g., "Approve new training data" button in Teams) |
Power BI:
- Fabric Data Factory: Native Semantic Model Refresh Activity (etter inference pipeline)
- Azure Data Factory: Web Activity → Power BI REST API (refresh dataset)
AI Builder:
Data Factory kan ikke direkte kalle AI Builder-modeller (per Feb 2026). Workaround:
- Data Factory → Copy data til Dataverse-tabell
- Power Automate flow (trigger on Dataverse row create) → AI Builder model (predict)
- Write prediction back til Dataverse
- Data Factory → Copy fra Dataverse til warehouse
Alternativ: Azure Cognitive Services Activity (hvis AI Builder-scenarioet kan erstattes av Azure AI Services)
Offentlig sektor (Norge)
Governance og compliance
Data residency:
- Azure Data Factory: Støtter Norway East/West regions. Metadata lagres i region, data kan transient via andre regioner avhengig av Integration Runtime placement.
- Fabric Data Factory: OneLake-data residency følger Fabric capacity region (Norway West/East tilgjengelig per Q1 2026).
Behandling av personopplysninger:
| Komponent | GDPR-konsiderasjon | Tiltak |
|---|---|---|
| Pipeline-metadata | Kan inneholde sensitive parametre (personnavn i filbaner, etc.) | Bruk Key Vault-referanser for sensitive verdier, ikke hardkod PII i pipeline JSON |
| Aktivitetslogger | Logger kan inneholde data samples (feilmeldinger, preview) | Aktiver Secure Output/Secure Input på aktiviteter som håndterer personopplysninger |
| Data lineage | Data Factory viser data flow (source → sink), kan avsløre sensitive datakilder | Begrens RBAC til pipelines (Reader/Contributor-roller), bruk Private Endpoints for datakilde-tilkoblinger |
DPIA-sjekkliste for AI pipelines:
- Er treningsdata anonymisert/pseudonymisert før Azure ML-trening?
- Brukes Managed Identity istedenfor service principals med long-lived secrets?
- Er inference-output lagret i encrypted storage (Azure Storage SSE, Synapse TDE)?
- Logges aktivitetsresultater til Log Analytics med 90-dagers retention?
- Er Private Link konfigurert for Azure ML workspace og storage accounts?
Kostnadsoptimalisering (offentlig sektor-kontekst)
Capacity-basert vs. consumption-basert (Fabric vs. ADF):
| Scenario | Azure Data Factory (consumption) | Fabric (capacity) |
|---|---|---|
| Prototyping (10 pipelines/mnd) | ~500 NOK/mnd (orchestration + small data movement) | Inkludert i F64 capacity (~40k NOK/mnd, deles på tvers av Fabric-workloads) |
| Production (100 pipelines/dag, 100 GB data/dag) | ~15k NOK/mnd (varies med DMUs og IR hours) | Inkludert i F256 capacity (~160k NOK/mnd), men også inkluderer Lakehouse, Warehouse, Power BI Premium |
| Konklusjon | Billigere for isolerte data integration-scenarioer | Bedre verdi hvis du allerede bruker Fabric-økosystemet (Power BI Premium, Lakehouse) |
Konfidensmarkør: 🟢 Høy — Prising er offentlig dokumentert, men faktiske kostnader varierer med data volume og kompleksitet (±30% i reelle scenarioer).
Anskaffelse
Azure Data Factory:
- Lisensmodell: Pay-as-you-go (Azure-abonnement) eller Enterprise Agreement
- Leverandørbinding: Moderat (standard Azure-tjeneste, kan migreres til andre cloud-plattformer med innsats)
- Anskaffelseskategori: "Skybasert dataintegrasjonstjeneste" (Difi category 48.8)
Fabric Data Factory:
- Lisensmodell: Capacity-basert (Microsoft Fabric-abonnement)
- Leverandørbinding: Høy (tett integrert med OneLake, vanskelig å migrere ut)
- Anskaffelseskategori: "Integrert analyseplattform" (Difi category 48.2)
Anbefaling for anskaffelser: Inkluder migrasjonsklausul i kontrakt hvis Fabric velges ("Leverandør skal levere eksportverktøy for pipelines til åpent format som Apache Airflow DAGs").
Kostnad og lisensiering
Azure Data Factory
Prisingsmodell (per Feb 2026, NOK):
| Komponent | Enhet | Pris (Norway East) | Eksempel |
|---|---|---|---|
| Orchestration | Per activity run | 0.006 NOK | 1000 activity runs = 6 NOK |
| Data Movement | Per DIU-hour (Data Integration Unit) | 1.80 NOK | 100 GB data (4 DIUs, 1 time) = 7.20 NOK |
| Pipeline activity | Per activity run (non-copy) | 0.006 NOK | Azure ML Execute Pipeline = 0.006 NOK per run |
| External activity | Per activity run + compute time | 0.003 NOK/run + compute cost | Databricks Notebook = 0.003 NOK + Databricks DBU cost |
| Self-hosted IR | Per node-hour | 1.50 NOK | 1 node, 24/7 = 1080 NOK/mnd |
TCO-eksempel (AI inference pipeline):
Scenario: Daglig batch inference (1M records, 50 GB data, 30 dager)
- Copy Activity (source → staging): 30 runs × 4 DIUs × 0.5h × 1.80 NOK = 108 NOK
- DataFlow Gen2: 30 runs × 8 compute hours × 2.40 NOK = 576 NOK
- Azure ML Execute Pipeline: 30 runs × 0.006 NOK = 0.18 NOK
- Copy Activity (predictions → warehouse): 30 runs × 2 DIUs × 0.25h × 1.80 NOK = 27 NOK
- Total Data Factory cost: ~711 NOK/mnd
- + Azure ML Batch Endpoint cost (separate, ~5k NOK/mnd for compute)
- = Total ~5.7k NOK/mnd
Fabric Data Factory
Prisingsmodell (capacity units):
| Aktivitetstype | CU consumption rate | Eksempel |
|---|---|---|
| Data movement (Copy) | 1.5 CU/hour per intelligent throughput unit | 100 GB copy (1 time, auto-optimized) = 1.5 CU |
| Orchestration | 0.0056 CU per activity run | 1000 activity runs = 5.6 CU |
| Dataflow Gen2 | Variable (avhenger av transformasjoner) | Typical 5-20 CU/hour |
| Notebook activity | Spark compute (separate fra Data Factory) | Billed via Fabric Spark capacity |
Fabric Capacity-kostnader (Norge):
| Capacity SKU | CU/sekund | Pris/mnd (NOK) | Typisk use case |
|---|---|---|---|
| F2 | 2 | ~2k | Development/testing |
| F64 | 64 | ~40k | Small production (< 10 daily pipelines) |
| F256 | 256 | ~160k | Enterprise AI platform (100+ daily pipelines + Power BI + Lakehouse) |
Konfidensmarkør: 🟡 Moderat — Fabric-prising endrer seg oftere enn ADF, capacity-consumption er vanskelig å predikere nøyaktig før testing.
Kostnadsoptimaliseringsråd
- Auto-pause Self-hosted IR: Ikke kjør 24/7 hvis kun nattlige jobber (spar ~75% på IR-kostnader)
- Staging for store datasett: Aktiver staging med PolyBase for >1 GB copy (reduserer data movement tid med 40-60%)
- Incremental copy: Bruk watermark-pattern istedenfor full copy (reduserer data volume med 90-95% etter initial load)
- Azure ML compute autoscaling: Min nodes = 0, max nodes = 4 (kun betaler når modell trenes)
- Fabric capacity reservation: 1-års reservation gir 20% rabatt på Fabric capacity
For arkitekten (Cosmo)
Systemkarakteristikk
Data Factory (ADF/Fabric) er riktig valg når:
- ✅ Du trenger å orkestrere data prep + ML training + deployment i én workflow
- ✅ Datakildene er spredt (OLTP-databaser, blob storage, on-prem filsystemer, SaaS-applikasjoner)
- ✅ Du vil separere data engineering (Data Factory) fra ML development (Azure ML/Fabric Notebooks)
- ✅ Business users skal kunne trigge ML-pipelines via Power Automate eller Power Apps
- ✅ Du trenger robust error handling (retry policies, alerting, branching) uten Python-koding
Data Factory er IKKE riktig valg når:
- ❌ ML-workflow er tett koblet til Python-kode (bruk Azure ML Pipelines eller Databricks Jobs istedenfor)
- ❌ Real-time streaming er primærkravet (bruk Stream Analytics + Azure Functions istedenfor)
- ❌ Du kun trenger å kjøre én enkelt Azure ML pipeline daglig (bruk Azure ML Schedule Trigger direkte)
- ❌ Kostnadsoptimalisering er kritisk og du kun trenger basic orchestration (vurder Azure Logic Apps eller Durable Functions)
Arkitektur-tradeoffs
| Beslutning | Alternativ A | Alternativ B | Cosmos råd |
|---|---|---|---|
| Fabric vs. ADF | Fabric (capacity, OneLake-integrasjon) | ADF (consumption, Azure ML-integrasjon) | Velg Fabric hvis Power BI Premium allerede er i bruk (delt capacity). Velg ADF hvis hybride on-prem-kilder er dominerende. |
| Pipeline vs. Airflow | Pipeline (low-code UI) | Airflow (Python DAGs) | Start med Pipeline. Migrer til Airflow hvis >5 data engineers trenger git-basert versjonskontroll og Python-flexibility. |
| Batch endpoint vs. Online endpoint | Batch (Data Factory Copy → invoke → Copy) | Online (real-time via API Management) | Batch er 70% billigere for scenarioer der latency > 1 minutt er akseptabel. Online kun hvis SLA < 500ms. |
| Incremental vs. Full copy | Incremental (watermark-based) | Full (daily snapshot) | Incremental reduserer data movement cost med 90%, men krever timestamp-kolonne i source. Full copy kun hvis source data er < 10 GB. |
Typiske fallgruver
Fallgruve #1: Hardkodet secrets i pipeline JSON
❌ Feil:
{
"url": "https://api.example.com/data",
"headers": {
"Authorization": "Bearer abc123secrettoken"
}
}
✅ Korrekt:
{
"url": "https://api.example.com/data",
"authentication": {
"type": "AzureKeyVault",
"store": {
"referenceName": "MyKeyVault",
"type": "LinkedServiceReference"
},
"secretName": "ApiToken"
}
}
Fallgruve #2: Ingen retry-policy på ML-aktiviteter
Azure ML-pipelines kan feile av midlertidige årsaker (quota limits, node startup failures). Alltid konfigurer retry:
{
"policy": {
"timeout": "01:00:00",
"retry": 3,
"retryIntervalInSeconds": 300
}
}
Fallgruve #3: Manglende monitoring
Data Factory har ingen default alerts. Konfigurer:
- Azure Monitor Alert Rule: "Pipeline failed" → Teams/email
- Application Insights integration: Log custom metrics (inference accuracy, data drift score)
- Power BI dashboard: Visualiser pipeline runs, data volume, cost per pipeline
Fallgruve #4: Ingen lineage tracking
Data Factory viser kun aktivitetslogger, ikke data lineage (hvilke tabeller påvirkes av hvilke pipelines). Løsning:
- Microsoft Purview integration (scans Data Factory pipelines, bygger lineage-graph)
- Custom lineage: Log input/output tables til metadata-tabell i hver pipeline
Anbefalte mønstre
Mønster 1: Medallion Architecture (Bronze → Silver → Gold)
[Raw Data Sources] → [Copy to Lakehouse Bronze] → [DataFlow Gen2: Clean + Enrich] →
[Silver Layer] → [Azure ML Feature Store] → [ML Training Pipeline] →
[Model Registry] → [Batch Inference] → [Gold Layer (predictions)]
Fordeler:
- Separerer raw data (bronze) fra curated data (silver), enklere GDPR-compliance (slett bronze etter 30 dager, behold silver med anonymiserte data)
- Feature store (silver layer) gjenbrukes på tvers av ML-modeller
- Gold layer inneholder business-ready predictions (kan konsumeres direkte i Power BI)
Mønster 2: Event-Driven Retraining
[Storage Account: New training data arrives] → [Event Grid Trigger] →
[Data Factory Pipeline: Validate + Copy] → [Azure ML Pipeline: Train] →
[If model metrics improve] → [Deploy to production endpoint]
Fordeler:
- Zero scheduling lag (retraining starter umiddelbart når nye data er tilgjengelig)
- Cost-efficient (kun kjører når nødvendig, ikke på fast schedule)
- Krever Event Grid + Storage Event Trigger (tilgjengelig i både ADF og Fabric)
Mønster 3: Hybrid Real-time + Batch
[Event Hubs (IoT data)] → [Stream Analytics] → [Azure ML Online Endpoint] →
[Cosmos DB (real-time results)] → [Data Factory nightly batch] →
[Copy to Lakehouse] → [Aggregate + Retrain] → [Deploy updated model]
Fordeler:
- Real-time inferens for kritiske scenarioer (fraud detection, predictive maintenance)
- Batch retraining bruker historiske data (mer robust modell)
- Data Factory orkestrerer kun batch-delen (lavere cost enn real-time pipelines)
Sikkerhetsveiledning
Minimum sikkerhetskonfigurasjon for AI-pipelines:
| Lag | Tiltak | Implementering |
|---|---|---|
| Network | Private endpoints for Azure ML, Storage, Key Vault | Azure Private Link (all data stays in Microsoft backbone) |
| Identity | Managed Identity (no secrets in code) | System-assigned MI for Data Factory, assign RBAC to ML workspace + storage |
| Data | Encryption at rest + in transit | Azure Storage SSE (enabled by default), TLS 1.2 for all connections |
| Logging | Audit all pipeline runs + data access | Azure Monitor Logs, Log Analytics workspace (90-day retention) |
| Access control | Role-based access to pipelines | Data Factory Contributor (utviklere), Data Factory Operator (production) |
Scenario-spesifikk hardening:
Offentlig sektor (GDPR-kritisk):
- Customer-managed keys (CMK) for storage accounts
- VNet integration for self-hosted IR (on-prem data aldri ekst eksponert til public internet)
- Azure Policy: "Data Factory pipelines må bruke Private Link" (enforced)
Helsesektoren (HIPAA/HITECH):
- Azure Data Factory er ikke HIPAA BAA-compliant (per Feb 2026) — bruk Azure Synapse Pipelines istedenfor (samme teknologi, men HIPAA-certified)
- All PHI må krypteres med CMK
- Audit logs sendes til separate Log Analytics workspace (ikke i samme resource group som Data Factory)
Testbarhet
Utfordring: Data Factory-pipelines er vanskelige å unit-teste (krever faktisk Azure-infrastruktur).
Løsning (Fabric Data Factory-spesifikk):
- Development workspace: Opprett dedikert Fabric workspace for utvikling (billig F2 capacity)
- Git integration: Branch-basert utvikling (main = prod, dev = testing)
- Parameterisering: Alle environment-specific verdier som parametere (ikke hardkodet)
- Integration tests: Bruk småskalerte datasett i dev workspace (100 rader istedenfor 1M)
Løsning (Azure Data Factory-spesifikk):
- ARM template parameterization: Alle linked services og datasets er parameterisert (kan deployes til dev/test/prod)
- Azure DevOps Pipelines: CI/CD med automated testing:
- task: AzureResourceManagerTemplateDeployment inputs: deploymentScope: 'Resource Group' resourceGroupName: 'rg-adf-dev' location: 'Norway East' templateLocation: 'Linked artifact' csmFile: 'arm_template.json' csmParametersFile: 'arm_template_parameters_dev.json' - task: AzurePowerShell inputs: azureSubscription: 'MyAzureSubscription' scriptType: 'InlineScript' Inline: | $runOutput = Invoke-AzDataFactoryV2Pipeline -ResourceGroupName "rg-adf-dev" -DataFactoryName "adf-dev" -PipelineName "TestPipeline" $status = Get-AzDataFactoryV2PipelineRun -ResourceGroupName "rg-adf-dev" -DataFactoryName "adf-dev" -PipelineRunId $runOutput.RunId if ($status.Status -ne "Succeeded") { throw "Pipeline failed" }
Migrasjonsveiledning
Fra on-prem ETL (SSIS/Informatica) til Data Factory:
| SSIS-komponent | Data Factory-ekvivalent | Migrasjonsinnsats |
|---|---|---|
| SSIS Package | Azure-SSIS Integration Runtime (lift-and-shift) | Lav (rehost existing packages) |
| Control Flow | Pipeline activities (If/ForEach/Until) | Moderat (redesign i UI) |
| Data Flow | DataFlow Gen2 | Høy (redesign transformasjoner) |
| Script Task (C#) | Azure Function Activity eller Databricks Notebook | Høy (rewrite i Python/C#) |
Anbefalt migrasjonsrekkefølge:
- Fase 1: Lift-and-shift SSIS packages til Azure-SSIS IR (verifiser funksjonalitet)
- Fase 2: Redesign enkle pipelines (Copy-only workflows) til native Data Factory
- Fase 3: Redesign komplekse transformasjoner til DataFlow Gen2 eller Databricks
- Fase 4: Fase ut Azure-SSIS IR (spar 60% cost ved å bruke native Data Factory)
Fra Azure Data Factory til Fabric Data Factory:
Microsoft tilbyr PowerShell-modul: Microsoft.FabricPipelineUpgrade
# Installer modul
Install-Module -Name Microsoft.FabricPipelineUpgrade
# Migrer pipeline
Invoke-FabricPipelineUpgrade `
-SourceType AzureDataFactory `
-SourceFactory "adf-prod" `
-SourceResourceGroup "rg-adf" `
-SourceSubscription "abc-123" `
-TargetWorkspace "ws-fabric-prod" `
-PipelineName "MLInferencePipeline"
Migrasjonsutfordringer:
- Azure ML Update Resource Activity finnes ikke i Fabric → bruk Web Activity + REST API
- Self-hosted IR-konfigurasjon må reconfigureres (annen agent-versjon)
- Linked services må recreates (ADF linked services kan ikke importeres direkte)
Kilder og verifisering
Primærkilder (brukt i denne referansen):
-
What is Data Factory in Microsoft Fabric? https://learn.microsoft.com/en-us/fabric/data-factory/data-factory-overview Sist verifisert: 2026-02-11 Confidence: 🟢 Høy (offisiell Microsoft Learn-dokumentasjon)
-
Execute Azure Machine Learning pipelines in Azure Data Factory https://learn.microsoft.com/en-us/azure/data-factory/transform-data-machine-learning-service Sist verifisert: 2026-02-11 Confidence: 🟢 Høy (offisiell Microsoft Learn-dokumentasjon)
-
Data ingestion with Azure Data Factory https://learn.microsoft.com/en-us/azure/machine-learning/how-to-data-ingest-adf Sist verifisert: 2026-02-11 Confidence: 🟡 Moderat (gjelder Azure ML SDK v1, deprecated per 2025-03-31, men konseptene er fortsatt gyldige)
-
Run batch endpoints from Azure Data Factory https://learn.microsoft.com/en-us/azure/machine-learning/how-to-use-batch-azure-data-factory Sist verifisert: 2026-02-11 Confidence: 🟢 Høy (aktiv dokumentasjon for Azure ML SDK v2)
-
Pipelines pricing for Data Factory in Microsoft Fabric https://learn.microsoft.com/en-us/fabric/data-factory/pricing-pipelines Sist verifisert: 2026-02-11 Confidence: 🟡 Moderat (prising endrer seg kvartalsvis, verifiser med Azure Pricing Calculator)
-
Migration planning for Azure Data Factory to Fabric Data Factory https://learn.microsoft.com/en-us/fabric/data-factory/migrate-planning-azure-data-factory Sist verifisert: 2026-02-11 Confidence: 🟢 Høy (offisiell migrasjonsveiledning)
Sekundærkilder:
-
Azure Data Factory Pricing https://azure.microsoft.com/en-us/pricing/details/data-factory/data-pipeline/ Sist verifisert: 2026-02-11 (Norge East region)
-
Microsoft Fabric Pricing https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/ Sist verifisert: 2026-02-11 (Norge West region)
Kodeeksempler hentet fra:
- Azure Data Factory samples (GitHub) https://github.com/Azure/Azure-DataFactory Eksempler: Incremental copy with watermark, Azure ML integration, batch endpoint invocation
Ufullstendige områder (krever videre research):
- Fabric Copilot for Data Factory: Dokumentasjon er sparsom per Feb 2026, mange features er preview
- On-premises data sources med Fabric: Self-hosted IR er støttet, men best practices for hybrid scenarioer er ikke godt dokumentert
- HIPAA compliance for Data Factory: Azure Data Factory er IKKE eksplisitt HIPAA BAA-compliant, men Synapse Pipelines er (samme teknologi)
Verifiseringsstrategi for bruk:
- Prising: Alltid kjør Azure Pricing Calculator med faktiske data volumes før produksjon
- Features: Sjekk "Preview features"-siden i Fabric Admin Portal (features kan endres uten varsel)
- Regional availability: Norge West/East er ikke alltid first-wave for nye Fabric-features (typisk 3-6 måneders lag etter US regions)
For Cosmo: Denne referansen dekker orkestreringsaspektet av AI-pipelines. For dypdykk i:
- Feature engineering: Se
feature-store-architecture.mdogdataflow-gen2-transformations.md - Model lifecycle: Se
azure-ml-pipelines.mdogmlops-ci-cd.md - Real-time inference: Se
azure-ml-online-endpoints.mdogaks-inference-architecture.md
Data Factory er "limet" som binder data prep, ML training, og deployment sammen. Ikke forsøk å gjøre kompleks ML-logikk i Data Factory — bruk Azure ML Pipelines for det, og la Data Factory orkestrere på høyt nivå.