# Data Quality Frameworks for AI

**Last updated:** 2026-02
**Status:** GA (Microsoft Purview Data Quality, Azure ML Model Monitoring, Fabric data quality)
**Category:** Data Engineering for AI

---

## Introduksjon

Data quality frameworks for AI sikrer at data som brukes til trening, validering og inferens av AI-modeller er nøyaktig, komplett, konsistent og pålitelig. I dagens AI-drevne landskap påvirker datakvalitet direkte AI-ytelsen, modellens nøyaktighet, og tillit til AI-beslutninger.

Dårlig datakvalitet fører til:
- Degradert modellytelse over tid (data drift, prediction drift)
- Feilaktige innsikter og anbefalinger
- Erosjon av tillit til AI-systemer
- Compliance-risiko (GDPR, AI Act, Forvaltningsloven)
- Operasjonelle ineffektiviteter og økte kostnader

Microsoft-stacken tilbyr fire hovedspor for data quality management i AI-kontekst:
1. **Microsoft Purview Data Quality** — enterprise data governance med AI-powered profiling og scoring
2. **Azure Machine Learning Model Monitoring** — production model monitoring med data drift detection
3. **Microsoft Fabric data quality** — lakehouse-native quality constraints i materialized lake views og pipelines
4. **Azure Databricks expectations** — declarative data quality constraints i Delta Live Tables (DLT)

---

## Kjernekomponenter

### 1. Data Quality Dimensions (Six Industry Standards)

| Dimensjon | Definisjon | Microsoft tooling |
|-----------|------------|-------------------|
| **Completeness** | Grad av ikke-null verdier | Purview (null value rate), Databricks expectations, Fabric constraints |
| **Accuracy** | Data reflekterer real-world verdier | Azure ML model performance monitoring, ground truth comparison |
| **Consistency** | Data integrity opprettholdes på tvers av systemer | Purview cross-source validation, Unity Catalog referential integrity |
| **Timeliness** | Data oppdateres og er tilgjengelig i tide | Purview freshness rules, Azure ML prediction drift, Fabric streaming quality checks |
| **Uniqueness** | Ingen duplikater | Purview uniqueness metrics, Databricks DLT deduplication |
| **Conformity** | Data overholder format og schema | Purview data type error rate, Azure ML schema validation |

### 2. Data Quality Lifecycle

```
1. [Data ingestion] → Schema validation, type checks
2. [Enrichment] → Profiling, quality rules application
3. [Training] → Data drift monitoring vs. training baseline
4. [Deployment] → Production inference data quality
5. [Monitoring] → Continuous data quality scoring, alerts
6. [Remediation] → Data quality actions, root cause analysis
```

### 3. Microsoft Purview Data Quality — Enterprise Governance

**Capabilities:**
- **AI-powered profiling:** Anbefaler kolonner for profiling, generer statistikk (distribution, min, max, std dev, uniqueness, completeness)
- **No-code/low-code rules:** Out-of-box rules + AI-generated rules + custom rules
- **Data quality scoring:** Aggregert scoring på column → data asset → data product → governance domain nivå
- **Alerts:** Email notifications ved threshold breaches
- **Actions center:** Diagnostic queries for stewards til å identifisere spesifikke rader som feiler quality checks

**Supported data sources (multi-cloud):**
- Azure: Blob Storage, ADLS Gen2, Azure SQL DB, Synapse, Fabric Lakehouse (Delta/Iceberg format)
- AWS: S3 (Parquet, CSV, Delta), RDS
- GCP: BigQuery (limited support for virtual network)

**Pricing:** Data Governance Processing Units (DGPU) pay-as-you-go

**Limitations:**
- Managed Identity som eneste auth-metode
- Parquet: støtter kun (1) directory med part files eller (2) partitioned Parquet (year=2018/month=Dec) — ikke arbitrary hierarchies
- Virtual network ikke støttet for BigQuery

### 4. Azure Machine Learning Model Monitoring

**Monitoring signals (tabular data):**

| Signal | Beskrivelse | Metrics | Reference data |
|--------|-------------|---------|----------------|
| **Data drift** | Endring i distribution av model input | Jensen-Shannon Distance, PSI, Normalized Wasserstein, KS test, Chi-squared | Training data eller recent production data |
| **Prediction drift** | Endring i distribution av model output | Jensen-Shannon Distance, PSI, Normalized Wasserstein, Chebyshev Distance, KS test, Chi-squared | Validation data eller recent production data |
| **Data quality** | Integrity av model input | Null value rate, Data type error rate, Out-of-bounds rate | Training data eller recent production data |
| **Feature attribution drift** | Endring i feature importance | Normalized Discounted Cumulative Gain (NDCG) | Training data med feature importance |
| **Model performance** | Ground truth vs. predictions | Accuracy, Precision, Recall, F1, AUC, MAE, RMSE | Ground truth labels (actuals) |

**Best practices:**
1. Start monitoring umiddelbart etter production deployment
2. Bruk multiple signals (e.g., data drift + feature attribution drift for early warnings)
3. Set monitoring frequency basert på data accumulation rate (daily hvis heavy traffic, weekly/monthly ellers)
4. Monitor top N features for large feature sets (reduserer cost og noise)
5. Bruk training data som baseline for data drift, validation data for prediction drift
6. Hvis ground truth er tilgjengelig: bruk model performance signal for objective view

**Setup:**
1. Enable production inference data collection (automatic for Azure ML online endpoints, manual for batch/external endpoints)
2. Set up model monitoring via SDK/CLI eller studio UI
3. View/analyze results i Azure ML workspace

### 5. Microsoft Fabric Data Quality

**Materialized Lake Views (MLVs) constraints:**

```sql
-- Example: exclude null customerName rows
CREATE MATERIALIZED VIEW sales_clean
CONSTRAINT cust_blank CHECK customerName IS NOT NULL
    WITH ACTION DROP  -- or FAIL
AS SELECT * FROM raw_sales;
```

**Actions:**
- `FAIL` — stops refresh ved første constraint violation (default)
- `DROP` — processes og fjerner records som ikke møter constraint, gir count i lineage view

**Limitations:**
- Constraints kan ikke oppdateres etter MLV creation (må recreate)
- Functions og pattern search (LIKE, regex) i constraints er ikke støttet
- Known issue: MLV med FAIL action kan gi "delta table not found" error (workaround: unngå FAIL, bruk DROP)

**Data quality for Fabric Lakehouse (Purview integration):**
1. Mirror eller load data til Fabric Lakehouse i Delta/Iceberg format
2. Grant Contributor access til workspace for Purview MSI
3. Run Data Map scan på Lakehouse (service principal auth)
4. Associate Lakehouse tables med data product i Purview Unified Catalog
5. Profile + create rules + run data quality scan via Purview

### 6. Azure Databricks Expectations (Delta Live Tables)

**Expectations syntax:**

```python
@dlt.expect("valid_timestamp", "timestamp IS NOT NULL")
@dlt.expect_or_drop("valid_amount", "amount > 0")
@dlt.expect_or_fail("critical_id", "id IS NOT NULL")
def clean_transactions():
    return spark.read.table("raw_transactions")
```

**Actions:**
- `@dlt.expect` — track violations, allow records to pass
- `@dlt.expect_or_drop` — drop violating records
- `@dlt.expect_or_fail` — fail pipeline ved violations

**Benefits:**
- Catch data quality issues ved ingestion før de påvirker downstream data products
- Real-time quality metrics i DLT pipeline observability UI
- Automatically generated data quality dashboards

---

## Arkitekturmønstre

### Pattern 1: Layered Quality Gates (Medallion Architecture)

```
[Bronze Layer] → Schema validation, null checks
    ↓ (Fabric constraints: FAIL on critical nulls)
[Silver Layer] → Business rules, referential integrity, deduplication
    ↓ (Databricks expectations: DROP invalid records)
[Gold Layer] → Aggregations, data quality scoring
    ↓ (Purview: Profile + score + alert)
[Consumption] → AI model training/inference
```

**Decision criteria:**
- **Bronze:** Fail fast på kritiske schema violations (FAIL action)
- **Silver:** Isoler dårlig data (DROP action), log violations for remediation
- **Gold:** Enterprise-wide governance med Purview scoring

### Pattern 2: Training vs. Production Data Quality Monitoring

**Training phase:**
1. Purview profiling på training dataset
2. Define baseline quality thresholds (e.g., "null rate < 5%")
3. Apply rules, score data quality
4. Iterate: fix issues → retrain → validate

**Production phase:**
1. Azure ML Model Monitoring: track data drift (production vs. training baseline)
2. Set alerts: e.g., "Jensen-Shannon Distance > 0.3"
3. When alert fires → trigger Purview profiling på production data → compare profiles → investigate drift root cause

**Integration:**
- Azure ML Monitoring detekterer drift → triggers Azure Function → calls Purview API for detailed profiling → stores results i Azure Monitor logs

### Pattern 3: Golden Datasets for Consistent Validation

**Concept:** Authoritative datasets som representerer production data patterns, brukt for testing og validation across alle AI workloads.

**Implementation:**
1. Identify representative sample fra production data (stratified sampling)
2. Store i Azure Blob/ADLS Gen2 som immutable dataset (versioned)
3. Register i Azure ML as data asset (type: URIFolder)
4. Use in Azure ML training jobs as validation dataset
5. Update golden dataset quarterly (eller når significant drift detekteres)

**Quality checks on golden dataset:**
- Purview profiling + scoring (monthly)
- Azure ML data quality monitoring (continuous comparison mot latest production data)

### Pattern 4: Real-Time Data Quality for Streaming AI

**Scenario:** Real-time fraud detection model consuming transaction stream.

**Architecture:**
```
[Event Hub] → [Fabric Eventstream] → [Lakehouse (KQL DB)]
                ↓
    [Real-time aggregation pipeline med data quality constraints]
                ↓
    [Model inference endpoint] → [Azure ML Model Monitoring]
```

**Quality checks:**
1. **Ingestion:** Fabric eventstream DQ checks (schema validation, null checks)
2. **Aggregation:** KQL queries med quality assertions (e.g., `assert(count(fraud_score > 1.0) == 0)`)
3. **Inference:** Azure ML Model Monitoring tracks prediction drift i real-time (5-minute windows)

---

## Beslutningsveiledning

### Når velge hvilket verktøy?

| Scenario | Anbefalt verktøy | Rationale |
|----------|------------------|-----------|
| Enterprise-wide data governance på tvers av multi-cloud sources | **Microsoft Purview Data Quality** | Centralized governance domain structure, multi-cloud support, AI-powered profiling |
| Production AI model monitoring (deployed til Azure ML online endpoint) | **Azure ML Model Monitoring** | Out-of-box integration med Azure ML endpoints, automatic inference data collection |
| Lakehouse-native data quality i Fabric | **Fabric materialized lake views constraints** | Native Delta/Iceberg support, lineage integration, no external dependencies |
| Spark-based data pipelines med strict quality enforcement | **Databricks expectations (DLT)** | Declarative syntax, automatic DQ dashboards, fail pipeline on critical violations |
| Early-stage data quality exploration (low maturity) | **Azure ML data quality monitoring signal** | No infrastructure setup, quick start med training dataset comparison |
| Compliance-driven data quality documentation | **Purview Data Quality** | Audit logs, data quality scores per governance domain, alert notifications |
| Real-time streaming data quality | **Fabric Eventstream + KQL DB + Azure ML Monitoring** | Low-latency validation, real-time drift detection |

### Decision tree: Velge data quality framework

```
START
  ↓
Er du i Fabric-økosystemet?
  └─ JA → Bruk Fabric materialized lake views constraints for layered DQ
  └─ NEI → Har du Azure ML deployed models?
      └─ JA → Bruk Azure ML Model Monitoring for production monitoring
      └─ NEI → Har du multi-cloud data sources?
          └─ JA → Bruk Purview Data Quality for enterprise governance
          └─ NEI → Bruk Databricks expectations (DLT) for Spark pipelines
```

---

## Integrasjon med Microsoft-stakken

### 1. Purview + Fabric Integration

**Setup:**
1. Fabric Lakehouse: load data i Delta/Iceberg format
2. Fabric workspace: grant Contributor til Purview MSI
3. Purview Data Map: register Fabric source, run scan (service principal auth)
4. Purview Unified Catalog: add Lakehouse tables til data product
5. Purview Data Quality: configure connection (Tenant ID, Workspace ID, Lakehouse ID, Purview MSI credential)
6. Profile → create rules → run DQ scan

**Virtual Network support:**
- If Fabric tenant uses Private Link: check "Virtual Network" i connection screen, specify Azure region, add Private Link Resource ID
- Set up Purview compute allocation for managed virtual network (separate step)

### 2. Azure ML + Purview Integration (Conceptual — Manual)

**Gap:** Ingen native integration (as of 2026-02).

**Workaround:**
1. Azure ML Model Monitoring detects data drift → logs til Application Insights
2. Azure Function (triggered by App Insights alert) → calls Purview REST API → initiates profiling job on production data asset
3. Purview completes profiling → stores results → sends alert via email/Event Grid
4. Data scientist reviews Purview profile vs. training data profile → decides on retraining

**Code snippet (Azure Function trigger):**

```python
import requests
from azure.identity import DefaultAzureCredential

def trigger_purview_profiling(data_asset_id, connection_id):
    credential = DefaultAzureCredential()
    token = credential.get_token("https://purview.azure.net/.default").token

    headers = {"Authorization": f"Bearer {token}"}
    url = f"https://{purview_account}.purview.azure.com/dataQuality/assets/{data_asset_id}/profile"
    payload = {"connectionId": connection_id}

    response = requests.post(url, headers=headers, json=payload)
    return response.json()
```

### 3. Fabric + Azure ML Integration

**Scenario:** Train model i Azure ML, deploy til Azure ML online endpoint, monitor med Fabric-based data quality.

**Architecture:**
```
[Fabric Lakehouse] → Training data (Delta table)
    ↓ (Azure ML reads via OneLake)
[Azure ML training job] → Model artifact
    ↓ (Deploy)
[Azure ML online endpoint] → Inference data collection
    ↓ (Write back to Fabric Lakehouse via Azure Function)
[Fabric Lakehouse inference table] → Purview DQ scan
```

**Implementation:**
1. Azure ML online endpoint: enable data collection (stores JSON logs i Azure Blob)
2. Azure Function (Event Grid trigger on blob creation) → parses JSON → writes til Fabric Lakehouse via REST API
3. Fabric Lakehouse: Purview DQ scan på inference table → compare med training table profile

### 4. Databricks + Unity Catalog Data Quality

**Unity Catalog features:**
- **Data lineage:** Column-level lineage fra source tables til trained models (captured via `mlflow.log_model()`)
- **Audit logging:** Captures metadata access events (who accessed which dataset, when)
- **Data quality via DLT expectations:** Enforces quality constraints in pipelines

**Best practice:**
1. Define data quality standards i Unity Catalog tags (e.g., `"dq_tier": "gold"` for high-quality tables)
2. Apply expectations i DLT pipelines based on tier (e.g., gold tier → `expect_or_fail`, silver tier → `expect_or_drop`)
3. Monitor lineage: hvis model performance degraderer → trace back til upstream table via lineage → identify quality issues

---

## Offentlig sektor (Norge)

### 1. Compliance-krav

**Forvaltningsloven § 11b (automatisert enkeltvedtak):**
- **Krav:** "Datagrunnlaget må være kvalitetssikret."
- **Implementering:** Purview Data Quality scoring (minimum score: 80/100 for Gold-tier data brukt i vedtakssystemer) + monthly profiling + audit log retention (3 år)

**AI Act (High-Risk AI Systems):**
- **Krav (Article 10):** Data quality management, including data governance, relevance, representativeness, accuracy, completeness.
- **Implementering:**
  - Purview Data Quality: document data quality scores i compliance reports
  - Azure ML Model Monitoring: track data drift, maintain audit trail
  - Quarterly data quality review (documented i DPIA)

**GDPR Article 5(1)(d) — accuracy:**
- **Krav:** Personal data må være "accurate and, where necessary, kept up to date."
- **Implementering:** Purview freshness rules (e.g., "data må være < 24 timer gammel"), alert til data owner ved breach

### 2. Utredningsinstruksen § 4 — kvalitetssikring

**Krav:** "Utredningen skal være basert på best tilgjengelig kunnskap og data."

**Data quality checklist for AI-utredning:**
- [ ] Training data profiling report (Purview) vedlagt utredningen
- [ ] Data quality scores for alle datasets (minimum 70/100)
- [ ] Data lineage dokumentert (Unity Catalog eller Purview lineage view)
- [ ] Training vs. validation data drift analysis (Azure ML Monitoring)
- [ ] Golden dataset versioned og arkivert (Azure Blob immutable storage)
- [ ] Data quality monitoring plan for production phase (frequency, thresholds, alert recipients)

### 3. ROS-analyse: Data quality risks

| Risiko | Sannsynlighet | Konsekvens | Tiltak |
|--------|---------------|------------|--------|
| **Data drift i production** → degradert modellytelse | Høy | Høy (feilaktige vedtak) | Azure ML Model Monitoring med weekly alerts, automated retraining trigger ved drift > threshold |
| **Incomplete training data** → biased model | Middels | Høy (diskriminering) | Purview completeness rules (e.g., "null rate < 5%"), fail training job hvis ikke oppfylt |
| **Stale data** → irrelevante prediksjoner | Middels | Middels | Purview freshness rules med daily checks, alert til data owner |
| **Schema changes i source system** → inference failures | Lav | Høy (system downtime) | Fabric materialized lake views constraints (FAIL action på schema mismatch), integration tests |

---

## Kostnad og lisensiering

### Microsoft Purview Data Quality

**Pricing model:** Data Governance Processing Units (DGPU) pay-as-you-go.

**DGPU consumption:**
- **Profiling:** ~0.5 DGPU per 100 columns profiled
- **Data quality scan:** ~1-2 DGPU per 1M rows scanned (varies by rule complexity)
- **Storage:** Metadata stored i Purview managed storage (included)

**Eksempel (monthly cost estimate, Norway East):**
- 10 data assets (avg 50 columns each) × 4 monthly profiling scans = 100 DGPU
- 10 data assets (avg 10M rows) × 4 monthly DQ scans = 80 DGPU
- Total: ~180 DGPU/month × $0.30/DGPU ≈ **$54/month** (~550 NOK)

**Confidence:** Medium — pricing varierer med rule complexity, data volume.

**Licensing:**
- Purview Data Quality er inkludert i Microsoft Purview accounts (ingen separat lisens)
- Krever: Azure subscription med contributor access til resource group

### Azure Machine Learning Model Monitoring

**Pricing components:**
- **Compute:** Monitoring jobs kjører på Azure ML compute (CPU clusters) — billed per compute hour
- **Storage:** Production inference data stored i Azure Blob — standard storage rates
- **Application Insights:** Monitoring metrics/alerts — standard AI pricing

**Eksempel (monthly cost estimate, Norway East):**
- 1 model, daily monitoring (5-minute compute per run): ~2.5 compute hours/month × $0.10/hour = $0.25
- Inference data storage (10 GB/month): $0.20
- Application Insights (1000 alerts/month): $2.00
- Total: **~$2.50/month** (~25 NOK)

**Confidence:** High.

**Licensing:**
- Krever: Azure ML workspace (included i Azure subscription)
- Model monitoring er included feature i Azure ML (no additional license)

### Microsoft Fabric Data Quality

**Pricing model:** Fabric Capacity Units (CU) for compute + OneLake storage.

**Consumption:**
- **Materialized lake views refresh:** Billed som Spark compute (CU/hour)
- **Data quality constraints:** No additional charge (native feature)
- **OneLake storage:** $0.023/GB/month (standard rate)

**Eksempel (monthly cost estimate, F64 SKU):**
- 10 MLVs, each refreshed daily (5 minutes compute per refresh): ~25 CU hours/month
- F64 SKU (64 CU): $0.54/CU/hour × 25 = $13.50
- OneLake storage (100 GB): $2.30
- Total: **~$16/month** (~165 NOK)

**Confidence:** Medium — varies with MLV complexity, data volume.

**Licensing:**
- Krever: Fabric capacity (F2 minimum, F64 recommended for production)
- Ingen separat data quality license

### Azure Databricks Expectations (Delta Live Tables)

**Pricing model:** DBU (Databricks Units) + Azure VM compute.

**Consumption:**
- **DLT pipelines:** Billed som Jobs Compute (1.0 DBU/hour × Azure VM rate)
- **Expectations:** No additional charge (native DLT feature)

**Eksempel (monthly cost estimate, Standard_DS3_v2):**
- 1 DLT pipeline, 4 daily runs (30 minutes per run): ~60 hours/month
- Jobs Compute: 60 DBU × $0.15 (list price) = $9.00
- Azure VM (DS3_v2): 60 hours × $0.20 = $12.00
- Total: **~$21/month** (~215 NOK)

**Confidence:** High.

**Licensing:**
- Krever: Azure Databricks workspace (Premium tier for Unity Catalog)
- DLT included i Premium tier (no additional license)

---

## For arkitekten (Cosmo)

### Key takeaways

1. **No single tool solves all data quality needs.** Microsoft-stacken krever hybrid approach:
   - **Purview** for enterprise governance, multi-cloud, compliance documentation
   - **Azure ML Monitoring** for deployed model drift detection
   - **Fabric** for lakehouse-native quality enforcement
   - **Databricks** for Spark-based pipeline quality (hvis bruker Databricks)

2. **Layered quality gates are essential.** Apply different quality checks ved hver layer (Bronze/Silver/Gold):
   - Bronze: Fail fast på critical schema violations
   - Silver: Isolate bad data (DROP action), log for remediation
   - Gold: Enterprise-wide scoring med Purview

3. **Automate quality monitoring for production models.** Data drift er inevitable — set up automated alerts + retraining triggers.

4. **Golden datasets reduce model training variability.** Maintain versioned, immutable validation datasets for consistent benchmarking.

5. **Data quality er compliance-kritisk for offentlig sektor.** Forvaltningsloven § 11b + AI Act krever dokumentert data quality management.

### Vanlige fallgruver

| Fallgruve | Symptom | Fix |
|-----------|---------|-----|
| **Manual quality checks** | Data quality issues oppdages for sent (post-inference) | Automate profiling + alerts med Purview eller Azure ML Monitoring |
| **Quality checks kun på training data** | Production data drifter, model performance degraderer | Implement continuous monitoring på production inference data |
| **No baseline for drift detection** | Vanskelig å vite når data quality er acceptable | Establish quality thresholds basert på training data profiling (e.g., "null rate < 5%") |
| **Ignoring data lineage** | Root cause analysis tar for lang tid når issues oppstår | Enable Unity Catalog lineage eller Purview lineage for all data assets |
| **No golden dataset** | Model performance varierer på tvers av testing runs | Create versioned golden dataset, use for consistent validation |

### Anti-patterns å unngå

1. **"Data cleaning fixes all quality issues":** Nei — data cleaning er remediation, ikke prevention. Bruk quality constraints (Fabric, Databricks) for å forhindre dårlig data fra å komme inn i systemet.
2. **"Quality checks kun ved training time":** Production data endrer seg — continuous monitoring er obligatorisk.
3. **"One-size-fits-all quality rules":** Forskjellige data tiers (Bronze/Silver/Gold) krever forskjellige quality levels. Gold-tier data for vedtakssystemer må ha strengere rules enn Bronze-tier raw data.
4. **"Quality monitoring uten alerts":** Metrics uten actionable alerts er bortkastet effort. Set thresholds + notifications.

### Spørsmål å stille kunden

1. **"Har dere eksisterende data governance framework?"** (hvis ja → extend med Purview, hvis nei → start med Purview Data Quality)
2. **"Hvilke data sources brukes til AI?"** (multi-cloud → Purview, Fabric-only → Fabric native DQ, Databricks → DLT expectations)
3. **"Er modellen deployed til production?"** (hvis ja → prioriter Azure ML Model Monitoring, hvis nei → focus på training data profiling)
4. **"Hvor ofte oppdateres source data?"** (real-time → Fabric Eventstream DQ, batch daily → Purview scheduled scans)
5. **"Hvilke compliance-krav må dere møte?"** (Forvaltningsloven § 11b, AI Act, GDPR → Purview for audit logs + documentation)
6. **"Har dere budget for data quality tooling?"** (limited → start med Azure ML DQ monitoring signal (gratis), gradual expansion til Purview)
7. **"Hvem er data owner/steward?"** (sentralisert team → Purview centralized governance, distribuert → Unity Catalog distributed governance model)

### Anbefalte arkitektur-patterns per scenario

| Scenario | Pattern | Tools |
|----------|---------|-------|
| **Offentlig sektor AI-vedtakssystem** | Layered Quality Gates + Compliance Documentation | Fabric (Bronze/Silver constraints) + Purview (Gold scoring + audit logs) + Azure ML Monitoring (production) |
| **Real-time fraud detection** | Real-Time Data Quality for Streaming AI | Fabric Eventstream + KQL DB + Azure ML Monitoring |
| **Multi-cloud data lake** | Enterprise Governance with Multi-Cloud Sources | Purview Data Quality + Unity Catalog (hvis Databricks) |
| **Spark-based ETL pipelines** | Declarative Quality Constraints | Databricks DLT expectations |
| **Quick POC (low maturity)** | Training vs. Production Monitoring | Azure ML data quality monitoring signal |

---

## Kilder og verifisering

### Microsoft dokumentasjon

1. **Microsoft Purview Data Quality Overview**
   https://learn.microsoft.com/en-us/purview/data-quality-overview
   *Lesedato: 2026-02* — Comprehensive guide to Purview DQ lifecycle, features, pricing.

2. **Azure Machine Learning Model Monitoring**
   https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-monitoring
   *Lesedato: 2026-02* — Monitoring signals, best practices, setup instructions.

3. **Fabric Materialized Lake Views Data Quality**
   https://learn.microsoft.com/en-us/fabric/data-engineering/materialized-lake-views/data-quality
   *Lesedato: 2026-02* — MLV constraints syntax, FAIL/DROP actions, limitations.

4. **Databricks Data Governance Best Practices**
   https://learn.microsoft.com/en-us/azure/databricks/lakehouse-architecture/data-governance/best-practices
   *Lesedato: 2026-02* — Data quality standards, DLT expectations, Unity Catalog lineage.

5. **Test and Evaluate AI Workloads on Azure**
   https://learn.microsoft.com/en-us/azure/well-architected/ai/test
   *Lesedato: 2026-02* — Testing guidance for model training/fine-tuning, data quality checks.

6. **Purview Data Quality for Fabric Lakehouse**
   https://learn.microsoft.com/en-us/purview/unified-catalog-data-quality-fabric-lakehouse
   *Lesedato: 2026-02* — Setup guide for Purview DQ scan on Fabric data.

7. **Azure ML Configure Training, Validation, Cross-Validation Data**
   https://learn.microsoft.com/en-us/azure/machine-learning/how-to-configure-cross-validation-data-splits
   *Lesedato: 2026-02* — Best practices for data splits, validation dataset setup.

8. **Cloud Adoption Framework: Data Quality**
   https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/cloud-scale-analytics/govern-data-quality
   *Lesedato: 2026-02* — Data quality considerations, recommendations for enterprise scale.

### Code samples (Microsoft Learn)

- **Azure ML fine-tuning job with validation data**
  https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/fine-tune-serverless
  Python SDK sample for creating validation dataset asset.

- **AutoML training/validation MLTable inputs**
  https://learn.microsoft.com/en-us/azure/machine-learning/tutorial-auto-train-image-models
  Python SDK sample for Input objects (training/validation data).

- **MLflow traces quality analysis**
  https://learn.microsoft.com/en-us/azure/databricks/mlflow3/genai/eval-monitor/build-eval-dataset
  Python sample for filtering traces by quality score, correlation analysis.

### Confidence markers

- **GA status:** Microsoft Purview Data Quality (GA), Azure ML Model Monitoring (GA), Fabric data quality (GA), Databricks DLT expectations (GA) — alle features er production-ready per 2026-02.
- **Pricing estimates:** Medium-High confidence — basert på official pricing pages (learn.microsoft.com), men actual consumption varierer med data volume og rule complexity.
- **Virtual Network support:** Purview DQ for Fabric Lakehouse via Private Link er bekreftet i official docs (as of 2026-02), men BigQuery virtual network support er eksplisitt dokumentert som "not yet supported."
- **Integration gaps:** Azure ML + Purview native integration finnes ikke (as of 2026-02) — workaround via Azure Functions er architectural recommendation, ikke officially supported pattern.

### Sist verifisert

**2026-02-11** — Alle lenker testet, pricing bekreftet mot official docs.
