ms-ai-architect/skills/ms-ai-engineering/references/data-engineering/data-cataloging-discovery.md
Kjell Tore Guttormsen 3a73eeafdc refactor(ms-ai-architect): R13 del 1 — nøytraliser Cosmo-personaen i ref-korpusets headinger, etter å ha rettet en gate som var målt usann to ganger
Ordre 20260912T193441Z-7358817909. Steg 1 var ikke transformen, men å rette
roadmapens R13-gate og få den ratifisert. Gaten `grep -rl "Cosmo"
skills/*/references -> 0` var usann på to uavhengige måter:

1. Ordren fanget den første: 451 av forekomstene er Azure Cosmos DB, ekte
   produktinnhold. Diskriminatoren er ikke bokstaven «s» — `Cosmos <norsk
   substantiv>` er genitiv av personaen (`### Cosmos tonalitet`), mens
   `Cosmos DB`/`CosmosClient`/`cosmos_ru` er produkt.
2. Denne økten fant den andre: 132 persona-forekomster ligger i prosa,
   tabeller, dialog-replikker og proveniens-linjer. Heading-nøytralisering
   kan ikke nå dem, så «0 persona» er uoppnåelig også under den ratifiserte
   formen. Operatøren ratifiserte alternativ A: gaten speiler formen, og de
   132 bokføres til R13b/R14.

Tre korreksjoner av premisser som sto i ordren og STATE:
  «ca 320 produkt»   -> 451 (case-sensitivt nett manglet 327 lowercase
                        TOC-ankre + 99 identifikatorer; sann nevner 1 638)
  «169 headinger»    -> 401. 169 var `^## For Cosmo`-prefikset (168) og var
                        internt inkonsistent med sin egen topp-variant (204)
  «417 matcher ingen
   populasjon»       -> 417 er cosmo-headinger utenfor kodefences; briefens
                        nevner var reell hele tiden

Fence-bevissthet er målt skadelig, ikke nødvendig: begge toggle-regler er
gale på dette korpuset (naiv toggle skjuler en ekte heading i
chain-of-thought-prompting.md, CommonMark-regelen ubalanserer
service-level-documentation-dr.md). Fence-agnostisk deteksjon finner 401
heading-linjer i nøyaktig de samme 40 variantene som fence-bevisst finner
400 i — ingen kodeblokk-linje er byte-identisk til en persona-heading. Derfor
nøkles transformen på 40 enumererte heading-tekster og ignorerer fences. En
ukjent variant kaster; en slug-kollisjon kaster. Ingenting auto-fikses.

TOC-en regenereres ikke, den rettes kirurgisk: alle 327 persona-lenker hadde
lenketekst lik én av de 40 heading-tekstene og anker lik slugify av den
(327/327, 0 avvik), så heading og TOC-entry skrives i samme operasjon og
ingen mellomtilstand etterlater en død lenke.

Ratifisert målform: `For Cosmo`, `For Cosmo Skyberg` og `For arkitekten
(Cosmo)` konvergerer på `For arkitekten`. To filer kolliderte og er adjudisert
ved å lese dem, ikke ved regel.

Verifisering (alle 7 kriterier fra ordren):
  G1 persona på heading-linjer   401 -> 0
  G2 døde fragmentlenker         1 -> 1 (pre-eksisterende, unntatt)
  G3 produkt-forekomster         451 -> 451; `Cosmos DB|Azure Cosmos` 308 = 308
  de 3 kun-produkt-filene        byte-identiske
  nettet validert begge veier    injisert persona feller G1; genitiv feller G1;
                                 produkt-heading og de 3 filene passerer
  hele diffen                    802 heading-linjer + 654 TOC-linjer, ANNET = 0
  linjeantall                    728 lagt til = 728 slettet
  suite                          1120/1120 (1097 + 23 nye)
  validate-plugin                250 PASS / 0 FAIL
  stikkprøve                     10 filer, alle 5 skills, inkl. de 3 mest
                                 produkt-tunge (26/20/19) — kun heading+TOC

Utenfor scope, urørt: de 4 SKILL.md, de 23 commands, CLAUDE.md, README.md,
NOTICE.md, docs/ (alt R14).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 22:12:28 +02:00

34 KiB

Data Cataloging and Discovery

Last updated: 2026-06-24 Status: GA Category: Data Engineering for AI Type: reference Source: https://learn.microsoft.com/purview/data-governance-overview


Innhold

Introduksjon

Datakatalogisering og oppdagelse er fundamentale kapabiliteter for organisasjoner som bygger AI-løsninger. Uten en systematisk tilnærming til å registrere, beskrive og finne data, risikerer AI-team å bruke uforholdsmessig mye tid på å lete etter relevante datasett, duplisere eksisterende arbeid, eller trene modeller på data av ukjent kvalitet og opprinnelse. Microsoft Purview Unified Catalog er Microsofts svar på denne utfordringen -- en sentral plattform for å organisere, oppdage og forstå data på tvers av hele dataeiendommen.

For norsk offentlig sektor er datakatalogisering spesielt viktig gitt kravene i Forvaltningsloven om dokumentasjon, Digdirs prinsipper for informasjonsforvaltning, og den nasjonale strategien for deling av data. Purview Unified Catalog støtter disse kravene gjennom governance domains, data products, business glossary og rollebasert tilgangsstyring som mapper til norske forvaltningsprinsipper.

Denne referansen dekker asset-registrering og metadata-berikelse, søk- og oppdagelsesgrensesnitt, forretningsglossarer og taksonomier, dataeier- og forvalteroppdrag, samt bruksanalyse og popularitetsmetrikker for AI-datasett i Microsoft Purview.


Asset Registration and Metadata Enrichment

Registrering av datakilder i Purview

Asset-registrering er det første steget for å gjøre data oppdagbare. Purview støtter automatisk skanning av et bredt spekter av datakilder:

Kildetype Eksempler Skanningsmetode
Microsoft Fabric Lakehouse, Warehouse, KQL DB, Notebooks, Pipelines, Power BI Automatisk ved Fabric-tenant-skanning
Azure Data SQL Database, ADLS Gen2, Cosmos DB, Synapse Registrering + planlagt skanning
On-premises SQL Server, Oracle, file shares Self-hosted Integration Runtime
SaaS Dataverse, Salesforce, SAP Registrering + connector-basert skanning
Multi-cloud AWS S3, Google BigQuery Cross-cloud connectors

Fabric-spesifikk registrering

Fabric Tenant Scanning:

1. Purview Portal > Unified Catalog > Catalog Management
2. Registrer Microsoft Fabric som datakilde
3. Konfigurer skanning:
   - Velg workspaces (alle eller spesifikke)
   - Planlegg skanningsfrekvens
   - Konfigurer autentisering (Managed Identity)
4. Etter skanning er følgende tilgjengelig:

Inventerte Fabric-elementer:
┌────────────────────────────────────────────────┐
│ Opplevelse        │ Registrerte elementer       │
├────────────────────────────────────────────────┤
│ Data Engineering   │ Lakehouse, Notebook,        │
│                    │ Spark Job Def, SQL Endpoint  │
├────────────────────────────────────────────────┤
│ Data Factory       │ Data Pipeline, Dataflow Gen2 │
├────────────────────────────────────────────────┤
│ Data Science       │ Experiment, ML Model         │
├────────────────────────────────────────────────┤
│ Data Warehouse     │ Warehouse                    │
├────────────────────────────────────────────────┤
│ Real-Time Analytics│ KQL Database, KQL Queryset   │
├────────────────────────────────────────────────┤
│ Power BI           │ Semantic Model, Report,      │
│                    │ Dashboard, Dataflow, Datamart │
└────────────────────────────────────────────────┘

Metadata-berikelse

Etter registrering kan metadata berikes manuelt eller automatisk:

# Bruk Purview REST API for å berike metadata på assets
import requests

purview_endpoint = "https://<account>.purview.azure.com"
headers = {"Authorization": f"Bearer {access_token}"}

# Hent eksisterende asset
asset_response = requests.get(
    f"{purview_endpoint}/catalog/api/atlas/v2/entity/guid/{asset_guid}",
    headers=headers
)
asset = asset_response.json()

# Legg til forretningsbeskrivelse og egendefinerte attributter
asset["entity"]["attributes"]["userDescription"] = (
    "Kundetransaksjonstabell for ML-treningsdata. "
    "Inneholder 12 måneders historikk for churn-prediksjon. "
    "Oppdateres daglig via inkrementell lasting."
)

# Oppdater asset med berikede metadata
update_response = requests.put(
    f"{purview_endpoint}/catalog/api/atlas/v2/entity",
    headers=headers,
    json={"entity": asset["entity"]}
)

Automatisk klassifisering og tagging

Purview skanner innholdet i datakolonner og tildeler automatiske klassifiseringer:

Klassifiseringstype Eksempler Handling
Norsk PII Fødselsnummer (11 siffer) Auto-merking som "Fortrolig"
Finansiell Kontonummer, IBAN Varsling til dataeier
Helse Diagnosekoder (ICD-10) Eskalering til DPO
Kontaktinfo E-post, telefonnummer Krever samtykke-validering
Autentisering API-nøkler, passord Umiddelbar sikkerhetsvarsling
# Programmatisk klassifiseringsrapport for AI-datasett
def get_classification_report(purview_endpoint, token):
    """Generer rapport over klassifiserte assets for AI-treningsdata."""
    url = f"{purview_endpoint}/catalog/api/search/query"
    headers = {"Authorization": f"Bearer {token}"}

    classifications = [
        "MICROSOFT.GOVERNMENT.NORWAY.NATIONAL.ID.NUMBER",
        "MICROSOFT.FINANCIAL.CREDIT_CARD_NUMBER",
        "MICROSOFT.PERSONAL.EMAIL",
        "MICROSOFT.PERSONAL.PHONE_NUMBER"
    ]

    report = {}
    for classification in classifications:
        body = {
            "keywords": "*",
            "filter": {
                "classification": classification,
                "assetType": "azure_datalake_gen2_path"
            },
            "limit": 100
        }
        response = requests.post(url, headers=headers, json=body)
        results = response.json()
        report[classification] = {
            "count": results.get("@search.count", 0),
            "assets": [a["name"] for a in results.get("value", [])]
        }

    return report

# Eksempel output:
# {
#   "NORWAY.NATIONAL.ID.NUMBER": {"count": 15, "assets": [...]},
#   "CREDIT_CARD_NUMBER": {"count": 3, "assets": [...]},
#   ...
# }

Search and Discovery Interfaces

Purview Unified Catalog søkegrensesnitt

Unified Catalog tilbyr flere oppdagelsesmekanismer for å finne data:

Oppdagelsesmetode Beskrivelse Beste for
Nøkkelordsøk Fritekst-søk på tvers av katalogen Kjent datasett-navn
Naturlig språk (preview) AI-drevet søk med forretningskontekst Utforskende oppdagelse
Governance domain-browsing Naviger etter forretningsdomene Organisasjonsstruktur
Data product-søk Finn kuraterte datasett-pakker AI-klare datasett
Filtreringsbasert Filtrering på attributter, eiere, labels Målrettet søk

Naturlig språk-søk

Eksempler på naturlig språk-søk (preview):

Søk: "Jeg trenger tre år med trafikkdata fra Direktoratet for digital tjenesteutvikling
       for å analysere rushtrafikk-mønstre"
Resultat: Data products med trafikktelledata, reisehastighetsmålinger

Søk: "Finn sertifiserte kundedata med kundeID, navn og adresse"
Resultat: Data products med masterdata for kunder

Søk: "Vis meg Power BI-rapporter om tilstandsdata for broer"
Resultat: Rapporter og underliggende datasett for bro-tilstand

Søk: "Jeg jobber med prediktiv vedlikehold.
       Vis sensordata fra veisensorer"
Resultat: IoT-sensordata, vedlikeholdshistorikk-datasett

Søkearkitektur

┌────────────────────────────────────────────────────────┐
│                 Purview Unified Catalog                  │
│                                                          │
│  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐   │
│  │ Keyword     │  │ Natural     │  │ Browse by    │   │
│  │ Search      │  │ Language    │  │ Domain       │   │
│  │             │  │ (preview)   │  │              │   │
│  └──────┬──────┘  └──────┬──────┘  └──────┬───────┘   │
│         │                │                │             │
│         └────────────────┼────────────────┘             │
│                          │                               │
│              ┌───────────▼────────────┐                 │
│              │   Search Index          │                 │
│              │   (Data Map metadata)   │                 │
│              └───────────┬────────────┘                 │
│                          │                               │
│         ┌────────────────┼────────────────┐             │
│         │                │                │             │
│  ┌──────▼──────┐  ┌─────▼──────┐  ┌─────▼──────┐     │
│  │ Data Assets │  │ Data       │  │ Glossary   │     │
│  │ (tabeller,  │  │ Products   │  │ Terms      │     │
│  │  filer)     │  │            │  │            │     │
│  └─────────────┘  └────────────┘  └────────────┘     │
│                                                          │
│  Søkeattributter:                                        │
│  - Asset-navn, beskrivelse, forretningsbruk              │
│  - Governance domain-navn og beskrivelse                  │
│  - Glossary term-navn og definisjoner                     │
│  - Data product tilknyttede assets                       │
│  - OKR-er og kritiske dataelementer                      │
└────────────────────────────────────────────────────────┘

Filtrering og fasettert søk

# Programmatisk søk i Purview Catalog
def search_catalog(purview_endpoint, token, query, filters=None):
    """Søk i Purview-katalogen med valgfrie filtre."""
    url = f"{purview_endpoint}/catalog/api/search/query"
    headers = {"Authorization": f"Bearer {token}"}

    body = {
        "keywords": query,
        "limit": 25,
        "offset": 0,
        "orderby": [{"name": "ASC"}]
    }

    # Legg til filtre
    if filters:
        body["filter"] = filters

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

# Eksempel: Finn alle Lakehouse-tabeller i et spesifikt workspace
results = search_catalog(
    endpoint, token,
    query="customer transactions",
    filters={
        "and": [
            {"entityType": "azure_datalake_gen2_path"},
            {"classification": "MICROSOFT.PERSONAL.NAME"},
            {"label": "Fortrolig"}
        ]
    }
)

# Vis resultater med relevans-score
for item in results.get("value", []):
    print(f"Navn: {item['name']}")
    print(f"  Type: {item['entityType']}")
    print(f"  Kvalifisert navn: {item['qualifiedName']}")
    print(f"  Eier: {item.get('owner', 'Ukjent')}")
    print(f"  Score: {item.get('@search.score', 'N/A')}")
    print(f"  Beskrivelse: {item.get('description', 'Ingen')[:100]}")
    print()

Business Glossaries and Taxonomies

Forretningsglossar i Unified Catalog

Business glossary knytter forretningsvokabular til tekniske assets, noe som er kritisk for at domeneeksperter skal finne relevante data for AI-prosjekter:

Komponent Funksjon AI-relevans
Glossary Terms Forretningsdefinisjoner knyttet til data Feature-forståelse for ML
Synonymer Alternative termer for samme begrep Bedre søkeresultater
Akronymer Forkortelser og initialord Standardisering
Hierarki (Parent/child) Taksonomisk organisering Domene-navigering
Custom Attributes Egendefinerte metadata-felter Prosjektspesifikk kontekst
Ressurser Lenker til dokumentasjon Kontekstuell informasjon

Glosarstruktur for AI-prosjekter

Governance Domain: "AI og Maskinlæring"
├── Glossary Terms
│   ├── "Treningsdata"
│   │   ├── Definisjon: "Datasett brukt til å trene ML-modeller"
│   │   ├── Synonymer: "Training data", "Opplæringsdata"
│   │   ├── Relaterte termer: "Valideringsdata", "Testdata"
│   │   ├── Tilknyttede assets: bronze.raw_*, silver.validated_*
│   │   └── Policy: Krever dataeier-godkjenning
│   │
│   ├── "Feature"
│   │   ├── Definisjon: "Beregnet variabel brukt som input til ML-modell"
│   │   ├── Synonymer: "Prediktor", "Forklaringsvariabel"
│   │   ├── Sub-termer:
│   │   │   ├── "Numerisk feature"
│   │   │   ├── "Kategorisk feature"
│   │   │   └── "Temporal feature"
│   │   └── Tilknyttede assets: gold.customer_features
│   │
│   ├── "Ground Truth"
│   │   ├── Definisjon: "Verifisert korrekt label for supervised learning"
│   │   ├── Kvalitetskrav: "Minst 2 uavhengige annotører"
│   │   └── Policy: Krever kvalitetsscore >= 95%
│   │
│   ├── "Personopplysning"
│   │   ├── Definisjon: "Opplysning som kan knyttes til identifiserbar person"
│   │   ├── Akronym: "PII"
│   │   ├── Regulering: GDPR Art. 4(1)
│   │   └── Policy: Automatisk anonymisering i ML-pipelines
│   │
│   └── "Modelldrift"
│       ├── Definisjon: "Endring i modellytelse over tid"
│       ├── Synonymer: "Model drift", "Concept drift"
│       └── Tilknyttede assets: monitoring.drift_metrics

Governance Domain: "Veiforvaltning"
├── Glossary Terms
│   ├── "AADT"
│   │   ├── Definisjon: "Årsdøgntrafikk - gjennomsnittlig daglig trafikk"
│   │   ├── Synonym: "Annual Average Daily Traffic"
│   │   └── Tilknyttede assets: traffic.aadt_measurements
│   │
│   ├── "ÅDT"
│   │   ├── Definisjon: "Døgntrafikk for et enkelt år"
│   │   └── Relatert: "AADT"
│   │
│   └── "Tilstandsgrad"
│       ├── Definisjon: "Skala 0-5 for tilstandsvurdering av veiobjekter"
│       ├── Sub-termer:
│       │   ├── "TG0 - Ingen avvik"
│       │   ├── "TG1 - Mindre avvik"
│       │   ├── "TG2 - Moderate avvik"
│       │   └── "TG3 - Alvorlige avvik"
│       └── Tilknyttede assets: nvdb.condition_assessments

Opprette glossary terms programmatisk

# Opprett glossary terms via Purview REST API
def create_glossary_term(purview_endpoint, token, term_data):
    """Opprett en ny glossary term i Purview Unified Catalog."""
    url = f"{purview_endpoint}/catalog/api/atlas/v2/glossary/term"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }

    payload = {
        "name": term_data["name"],
        "qualifiedName": f"{term_data['name']}@Glossary",
        "longDescription": term_data["definition"],
        "abbreviation": term_data.get("abbreviation"),
        "anchor": {
            "glossaryGuid": term_data["glossary_guid"]
        },
        "attributes": {
            "dataOwner": term_data.get("owner"),
            "regulatoryRequirement": term_data.get("regulation")
        }
    }

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

# Eksempel: Batch-opprett termer for AI-domenet
ai_terms = [
    {
        "name": "Treningsdata",
        "definition": "Datasett brukt til å trene ML-modeller. "
                       "Skal være representativt for populasjonen modellen "
                       "skal predikere på.",
        "abbreviation": "TD",
        "glossary_guid": ai_glossary_guid,
        "owner": "ml-team@ddt.no",
        "regulation": "GDPR Art. 6 - Lovlig behandlingsgrunnlag"
    },
    {
        "name": "Feature Store",
        "definition": "Sentralisert repository for beregning, lagring og "
                       "servering av ML-features med punkt-i-tid korrekthet.",
        "glossary_guid": ai_glossary_guid,
        "owner": "data-engineering@ddt.no"
    },
    {
        "name": "Dataminimering",
        "definition": "Prinsipp om at kun nødvendige personopplysninger "
                       "samles inn og behandles. Hjemlet i GDPR Art. 5(1)(c).",
        "glossary_guid": ai_glossary_guid,
        "regulation": "GDPR Art. 5(1)(c)"
    }
]

for term in ai_terms:
    result = create_glossary_term(endpoint, token, term)
    print(f"Opprettet: {result['name']} (GUID: {result['guid']})")

Taksonomisk hierarki

Hierarki-visning i Purview:
Unified Catalog > Catalog Management > Governance Domains > Glossary Terms

Visningsalternativer:
├── Liste-visning    -- Flat liste med sortering
├── Kompakt liste    -- Fortetting for oversikt
└── Tre-visning      -- Hierarkisk parent/child-struktur

Eksempel tre-visning:
Data
├── Strukturert data
│   ├── Relasjonell data
│   │   ├── Transaksjonstabell
│   │   └── Dimensjonstabell
│   └── Tidsseriedata
│       ├── Sensordata
│       └── Hendelsesdata
├── Semi-strukturert data
│   ├── JSON-dokumenter
│   └── XML-meldinger
└── Ustrukturert data
    ├── Tekst
    │   ├── Fritekst-notater
    │   └── E-postkorrespondanse
    └── Bilder
        ├── Satellittbilder
        └── Inspeksjonsfoto

Data Owner and Steward Assignments

Roller i Purview Unified Catalog

Purview definerer tydelige roller for datastyring som mapper til norske forvaltningsmønstre:

Rolle Purview-navn Rettigheter Norsk ekvivalent
Global Catalog Reader Unified Catalog Reader Les publiserte artefakter Innsyn
Local Catalog Reader Domain-spesifikk leser Les innenfor et domene Saksbehandler
Governance Domain Creator Domain Creator Opprette domener Avdelingsleder
Data Product Owner Product Owner Opprette/oppdatere data products Fagansvarlig
Data Steward Steward Opprette glossary terms, policies Informasjonsforvalter
Data Health Reader Health Reader Les helserapporter Controller
Data Profile Reader Profile Reader Se profileringsinnsikt Analytiker

Rollebasert tilgangsmodell

Governance Domain: "AI og Maskinlæring"
│
├── Domain Owner: Seksjonsleder AI-avdelingen
│   - Rettigheter: Full kontroll over domenet
│   - Ansvar: Strategisk retning, delegering
│
├── Data Stewards: Informasjonsforvaltere
│   - Rettigheter: Opprette/redigere glossary terms, policies
│   - Ansvar: Datakvalitet, klassifisering, compliance
│
├── Data Product Owners: ML-ingeniører
│   - Rettigheter: Opprette/oppdatere data products
│   - Ansvar: Kuratere AI-klare datasett
│
└── Catalog Readers: Dataforskere, analytikere
    - Rettigheter: Søke, browse, be om tilgang
    - Ansvar: Finne og bruke data ansvarlig

Tilordne eiere og forvaltere

# Tilordne dataeier via Purview REST API
def assign_data_owner(purview_endpoint, token, asset_guid, owner_info):
    """Tilordne dataeier til et asset i Purview."""
    url = f"{purview_endpoint}/catalog/api/atlas/v2/entity/guid/{asset_guid}"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }

    # Hent eksisterende asset
    response = requests.get(url, headers=headers)
    asset = response.json()

    # Oppdater eierskap
    asset["entity"]["attributes"]["owner"] = owner_info["email"]

    # Legg til kontakt-metadata
    contacts = asset["entity"].get("contacts", {})
    contacts["Owner"] = [{
        "id": owner_info["aad_object_id"],
        "info": owner_info["email"]
    }]
    contacts["Expert"] = [{
        "id": owner_info.get("expert_aad_id"),
        "info": owner_info.get("expert_email")
    }]
    asset["entity"]["contacts"] = contacts

    # Oppdater asset
    update_response = requests.put(
        f"{purview_endpoint}/catalog/api/atlas/v2/entity",
        headers=headers,
        json={"entity": asset["entity"]}
    )
    return update_response.json()

# Eksempel: Tilordne eierskap for ML-datasett
assign_data_owner(endpoint, token, gold_features_guid, {
    "email": "ml-team@ddt.no",
    "aad_object_id": "abc-123-def",
    "expert_email": "data-scientist@ddt.no",
    "expert_aad_id": "ghi-456-jkl"
})

Governance Domain-oppsett for AI

Oppsett av Governance Domain for AI-prosjekter:

1. Opprett domene:
   Purview Portal > Unified Catalog > Catalog Management > Governance Domains
   - Navn: "AI og Maskinlæring"
   - Type: Functional Unit
   - Beskrivelse: "Datastyring for alle AI/ML-initiativer"

2. Tilordne roller:
   - Domain Owner: AI-seksjonsleder
   - Stewards: Informasjonsforvaltere (2-3 personer)
   - Data Product Owners: ML-ingeniører per prosjekt

3. Konfigurer data estate mappings:
   - Map til Data Map-samlinger med AI-relaterte assets
   - Inkluder Fabric workspaces for ML

4. Opprett data products:
   - "Customer 360 for Churn" -- Kundedatasett for churn-prediksjon
   - "Traffic Sensor Features" -- Sensordata for trafikkanalyse
   - "Bridge Condition ML Set" -- Bro-tilstandsdata for vedlikeholds-ML

5. Definer glossary terms:
   - AI-spesifikke termer (se seksjon over)
   - Domenespesifikke termer (vei, trafikk, infrastruktur)

6. Sett OKR-er:
   - "90% av AI-datasett har dokumentert eierskap innen Q2"
   - "100% av datasett med PII er klassifisert"
   - "Gjennomsnittlig tid til data-oppdagelse < 15 min"

Usage Analytics and Popularity Metrics

Data Estate Health og Insights

Purview tilbyr analytikk for å forstå hvordan data brukes på tvers av organisasjonen:

Metrikk Kilde AI-relevans
Skanningsdekning Data Map skanning Andel registrerte AI-datakilder
Klassifiseringsdekning Auto-klassifisering Andel klassifisert treningsdata
Glossary-tilknytning Business glossary Andel assets med forretningskontekst
Eierskap Kontakter/eiere Andel assets med definert eier
Health Score Health Controls Samlet governance-modenhet
Data Quality Score Data Quality rules Datakvalitet per domene

Health Controls og Health Actions

Purview Health Management:

Health Controls (automatisk evaluering):
┌─────────────────────────────────────────────────────┐
│ Kontroll                    │ Mål   │ Status        │
├─────────────────────────────────────────────────────┤
│ Assets med eier             │ > 90% │ ✓ 92%        │
│ Assets med beskrivelse      │ > 80% │ ⚠ 74%        │
│ Assets med glossary term    │ > 70% │ ✗ 45%        │
│ Klassifiserte sensitive     │ 100%  │ ⚠ 88%        │
│ Data products med SLA       │ > 80% │ ✓ 85%        │
│ Governance domains med OKR  │ 100%  │ ✓ 100%       │
└─────────────────────────────────────────────────────┘

Health Score: 74/100
Forbedringsaksjoner:
1. Tilordne glossary terms til 153 utaggede assets
2. Legg til beskrivelse for 12 Lakehouse-tabeller
3. Klassifiser 7 datasett med potensielt sensitiv data

Data Products som AI-klare datasett

Data Product: "Customer 360 for Churn Prediction"
┌────────────────────────────────────────────────────┐
│ Eier:          ML Engineering Team                  │
│ Domene:        AI og Maskinlæring                   │
│ Brukstilfelle: Churn-prediksjon for kundeservice    │
│ Oppdatering:   Daglig (pipeline kl 02:00)           │
│                                                     │
│ Inneholder:                                         │
│ ├── gold.customer_features (Lakehouse-tabell)       │
│ ├── gold.transaction_aggregates (Lakehouse-tabell)  │
│ ├── gold.interaction_history (Lakehouse-tabell)     │
│ └── churn_model_v2 (ML Model)                       │
│                                                     │
│ Glossary Terms:                                     │
│ ├── "Treningsdata" │ "Feature" │ "Churn"           │
│                                                     │
│ Kvalitetsmetrikker:                                 │
│ ├── Datakvalitetsscore: 94/100                      │
│ ├── Fullstendighet: 98.2%                           │
│ ├── Nøyaktighet: 96.5%                              │
│ └── Tidslinjer: Oppdatert < 24 timer                │
│                                                     │
│ Tilgangspolicy:                                     │
│ ├── Standard: Read (alle i ML-teamet)               │
│ └── Forespørsel: Self-service via Purview           │
│                                                     │
│ Brukskrav:                                          │
│ ├── Kun for intern ML-trening                       │
│ ├── Ikke eksporter utenfor Fabric                   │
│ └── Logg all bruk i audit-trail                     │
└────────────────────────────────────────────────────┘

Purview Analytics i OneLake

For avansert bruksanalyse kan Purview-metadata eksporteres til OneLake:

# Eksporter Purview analytics til Fabric for videre analyse
# Purview Analytics in OneLake gir tilgang til katalog-metadata i Fabric

# I Fabric Notebook: Les Purview analytics-data
catalog_data = spark.read.format("delta").load(
    "abfss://purview-analytics@onelake.dfs.fabric.microsoft.com/catalog"
)

# Analyser mest brukte datasett
popular_assets = (
    catalog_data
    .filter(col("assetType") == "azure_datalake_gen2_path")
    .groupBy("qualifiedName", "name")
    .agg(
        F.count("accessEvent").alias("access_count"),
        F.countDistinct("userId").alias("unique_users"),
        F.max("accessTimestamp").alias("last_accessed")
    )
    .orderBy(F.desc("access_count"))
)

popular_assets.show(10)

# Identifiser "mørke data" -- registrerte men ubrukte assets
from pyspark.sql.functions import datediff, current_date

dark_data = (
    catalog_data
    .filter(col("assetType") == "azure_datalake_gen2_path")
    .groupBy("qualifiedName", "name", "owner")
    .agg(
        F.max("accessTimestamp").alias("last_accessed"),
        F.count("accessEvent").alias("total_access")
    )
    .filter(
        (datediff(current_date(), col("last_accessed")) > 180) |
        (col("total_access") < 5)
    )
    .orderBy("last_accessed")
)

print(f"Antall 'mørke data' assets (ubrukt > 6 mnd): {dark_data.count()}")
dark_data.show(20)

Oppdagelsesmetrikker for AI-team

# Dashboard-metrikker for AI-datadoppdagelse
def calculate_discovery_metrics(purview_endpoint, token, domain_id):
    """Beregn oppdagelsesmetrikker for et governance domain."""
    metrics = {}

    # 1. Tidsbruk på dataoppdagelse
    metrics["avg_discovery_time_minutes"] = 12  # Fra brukerundersøkelse

    # 2. Dekningsgrad
    all_assets = search_catalog(endpoint, token, "*",
        filters={"governanceDomain": domain_id})
    classified_assets = search_catalog(endpoint, token, "*",
        filters={
            "and": [
                {"governanceDomain": domain_id},
                {"hasClassification": True}
            ]
        })

    total = all_assets.get("@search.count", 0)
    classified = classified_assets.get("@search.count", 0)

    metrics["total_assets"] = total
    metrics["classified_assets"] = classified
    metrics["classification_coverage"] = (
        round(classified / total * 100, 1) if total > 0 else 0
    )

    # 3. Eierskap-dekning
    owned_assets = search_catalog(endpoint, token, "*",
        filters={
            "and": [
                {"governanceDomain": domain_id},
                {"hasOwner": True}
            ]
        })
    owned = owned_assets.get("@search.count", 0)
    metrics["ownership_coverage"] = (
        round(owned / total * 100, 1) if total > 0 else 0
    )

    # 4. Data product-dekning
    # Hvor mange assets er del av et data product?
    metrics["data_product_count"] = 5
    metrics["assets_in_products"] = 42
    metrics["product_coverage"] = (
        round(42 / total * 100, 1) if total > 0 else 0
    )

    return metrics

# Output:
# {
#   "avg_discovery_time_minutes": 12,
#   "total_assets": 156,
#   "classified_assets": 139,
#   "classification_coverage": 89.1,
#   "ownership_coverage": 93.4,
#   "data_product_count": 5,
#   "assets_in_products": 42,
#   "product_coverage": 26.9
# }

Referanser


For arkitekten

  • Bruk denne referansen når brukeren trenger hjelp med å sette opp datakatalogisering, organisere data for AI-prosjekter, eller etablere informasjonsforvaltning med Purview Unified Catalog.
  • For norsk offentlig sektor: Governance Domains mapper naturlig til avdelinger/seksjoner i etaten. Anbefal å opprette domener som speiler organisasjonsstrukturen (f.eks. "AI og Maskinlæring", "Veiforvaltning", "Trafikkstyring").
  • Data Products er den viktigste funksjonen for AI-team -- de pakker sammen relaterte datasett med forretningskontekst, kvalitetsmetrikker og tilgangspolicyer. Anbefal alltid data products for ML-treningsdatasett i stedet for å la dataforskere lete i rå Lakehouse-tabeller.
  • Business Glossary er undervurdert men kritisk. Det er ingen vits i å ha 200 Lakehouse-tabeller hvis ingen vet hva "tg_veg_brutto_agg_7d" betyr. Glossary terms gir forretningskontekst som gjør data oppdagbare for domeneeksperter som ikke kan SQL.
  • Naturlig språk-søk (preview) er en game-changer for datadrevet offentlig sektor. Saksbehandlere kan søke etter "tre år med trafikkdata for rushtrafikk-analyse" i stedet for å lære SQL eller kjenne tekniske tabellnavn.
  • Anbefal OKR-er i Purview for å knytte datahersking direkte til virksomhetsmål. Eksempel: "Reduser tid til dataoppdagelse fra 2 dager til 15 minutter" som OKR i AI-domenet.
  • Kombiner med microsoft-purview-governance.md for klassifisering/lineage og data-versioning-lineage.md for versjonshistorikk -- sammen utgjør de et komplett governance-rammeverk for AI-data.