Dimensionel modellering i Microsoft Fabric Warehouse: Faktatabeller
Gælder for:✅ SQL Analytics-slutpunkt og warehouse i Microsoft Fabric
Bemærk
Denne artikel er en del af den dimensionelle modelleringsserie af artikler. I denne serie fokuseres der på vejledning og design af bedste praksis for dimensionel modellering i Microsoft Fabric Warehouse.
Denne artikel indeholder en vejledning og bedste praksis for design af faktatabeller i en dimensionel model. Den indeholder praktisk vejledning til Warehouse i Microsoft Fabric, som er en oplevelse, der understøtter mange T-SQL-funktioner, f.eks. oprettelse af tabeller og administration af data i tabeller. Så du har fuld kontrol over, hvordan du opretter tabeller med din dimensionelle model og indlæser dem med data.
Bemærk
I denne artikel henviser begrebet data warehouse til et virksomhedsdata warehouse, som leverer omfattende integration af vigtige data på tværs af organisationen. I modsætning hertil refererer det separate begreb warehouse til et Fabric Warehouse, som er en SaaS-relationsdatabase (software as a service), som du kan bruge til at implementere et data warehouse. For klarheds skyld nævnes sidstnævnte i denne artikel som Fabric Warehouse.
Tip
Hvis du er uerfaren med dimensionel modellering, kan du overveje denne serie artikler som dit første trin. Det er ikke hensigten at give en komplet diskussion om dimensionel udformning design. Du kan finde flere oplysninger i det publicerede indhold, der er vedtaget i vid udstrækning, f.eks . The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling (3. udgave, 2013) af Ralph Kimball og andre.
I en dimensionel model gemmer en faktatabel målinger, der er knyttet til observationer eller hændelser. Det kan gemme salgsordrer, lagersaldi, valutakurser, temperaturaflæsninger og meget mere.
Faktatabeller omfatter målinger, som typisk er numeriske kolonner, f.eks. salgsordreantal. Analyseforespørgsler opsummerer målinger (ved hjælp af sum, antal, gennemsnit og andre funktioner) i forbindelse med dimensionsfiltre og grupperinger.
Faktatabeller indeholder også dimensionsnøgler, der bestemmer dimensionaliteten af fakta. Nøgleværdierne for dimensionen bestemmer granulariteten af fakta, som er det atomiske niveau, som fakta defineres ud fra. En ordredatodimensionsnøgle i en faktatabel for salg angiver f.eks. granulariteten af fakta på datoniveau, mens en måldatodimensionsnøgle i faktatabellen for salgsmålet kan angive granulariteten på kvartalsniveau.
Bemærk
Selvom det er muligt at gemme fakta med en højere granularitet, er det ikke nemt at opdele målingsværdier til lavere granularitetsniveauer (hvis det er nødvendigt). Alene datamængder kan sammen med analysekrav give en gyldig grund til at gemme fakta om højere granularitet, men på bekostning af detaljeret analyse.
Hvis du nemt vil identificere faktatabeller, skal du typisk angive et præfiks for deres navne med f_
eller Fact_
.
Struktur af faktatabel
Hvis du vil beskrive strukturen i en faktatabel, skal du overveje følgende eksempel på en salgs faktatabel med navnet f_Sales
. I dette eksempel anvendes gode designpraksisser. Hver af grupperne af kolonner er beskrevet i følgende afsnit.
CREATE TABLE f_Sales
(
--Dimension keys
OrderDate_Date_FK INT NOT NULL,
ShipDate_Date_FK INT NOT NULL,
Product_FK INT NOT NULL,
Salesperson_FK INT NOT NULL,
<…>
--Attributes
SalesOrderNo INT NOT NULL,
SalesOrderLineNo SMALLINT NOT NULL,
--Measures
Quantity INT NOT NULL,
<…>
--Audit attributes
AuditMissing BIT NOT NULL,
AuditCreatedDate DATE NOT NULL,
AuditCreatedBy VARCHAR(15) NOT NULL,
AuditLastModifiedDate DATE NOT NULL,
AuditLastModifiedBy VARCHAR(15) NOT NULL
);
Primær nøgle
Som det er tilfældet i eksemplet, har eksempelt faktatabellen ikke en primær nøgle. Det skyldes, at det typisk ikke tjener et nyttigt formål, og det ville øge tabellagerets størrelse unødigt. En primær nøgle antydes ofte af sættet af dimensionsnøgler og -attributter.
Dimensionsnøgler
Eksempel på faktatabel har forskellige dimensionsnøgler, som bestemmer dimensionaliteten af faktatabellen. Dimensionsnøgler er referencer til surrogatnøglerne (eller attributter på højere niveau) i de relaterede dimensioner.
Bemærk
Det er en usædvanlig faktatabel, der ikke indeholder mindst én datodimensionsnøgle.
En faktatabel kan referere til en dimension flere gange. I dette tilfælde kaldes det en dimension med forskellige roller. I dette eksempel har faktatabellen dimensionsnøglerne OrderDate_Date_FK
og ShipDate_Date_FK
. Hver dimensionsnøgle repræsenterer en særskilt rolle, men der er kun én fysisk datodimension.
Det er en god idé at angive hver dimensionsnøgle som NOT NULL
. Under indlæsningen af faktatabellen kan du bruge særlige dimensionsmedlemmer til at repræsentere manglende, ukendte, I/T- eller fejltilstande (hvis det er nødvendigt).
Attributter
Eksempel på faktatabel har to attributter. Attributter giver yderligere oplysninger og angiver granulariteten af faktadata, men de er hverken dimensionsnøgler, dimensionsattributter eller målinger. I dette eksempel gemmer attributkolonner oplysninger om salgsordrer. Andre eksempler kan omfatte sporingsnumre eller billetnumre. Til analyseformål kan en attribut danne en forringet dimension.
Målinger
Eksempel på faktatabel indeholder også målinger, f.eks. kolonnen Quantity
. Målingskolonner er typisk numeriske og ofte additive (hvilket betyder, at de kan lægges sammen og opsummeres ved hjælp af andre sammenlægninger). Du kan få flere oplysninger under Målingstyper senere i denne artikel.
Overvågningsattributter
Eksempel på faktatabel har også forskellige overvågningsattributter. Overvågningsattributter er valgfrie. De giver dig mulighed for at spore, hvornår og hvordan faktaposter blev oprettet eller ændret, og de kan omfatte diagnosticerings- eller fejlfindingsoplysninger, der opstår under etl-processer (Extract, Transform og Load). Du vil f.eks. spore, hvem (eller hvilken proces) der har opdateret en række, og hvornår. Overvågningsattributter kan også hjælpe med at diagnosticere et udfordrende problem, f.eks. når en ETL-proces stopper uventet.
Størrelse på faktatabel
Faktatabeller varierer i størrelse. Deres størrelse svarer til dimensionaliteten, granulariteten, antallet af målinger og mængden af historik. I forhold til dimensionstabeller er faktatabeller mere smalle (færre kolonner), men store eller endda enorme med hensyn til rækker (over milliarder).
Koncepter for faktadesign
I dette afsnit beskrives forskellige koncepter for faktadesign.
Faktatabeltyper
Der er tre typer faktatabeller:
- Faktatabeller for transaktioner
- Periodiske faktatabeller med øjebliksbilleder
- Akkumulerer faktatabeller med snapshot
Faktatabeller for transaktioner
I en faktatabel for transaktioner gemmes forretningshændelser eller transaktioner. Hver række gemmer fakta med hensyn til dimensionsnøgler og målinger og eventuelt andre attributter. Alle dataene er fuldt kendte, når de indsættes, og de ændres aldrig (undtagen for at rette fejl).
Transaktionsfaktatabeller gemmer typisk fakta på det lavest mulige granularitetsniveau, og de indeholder målinger, der er additive på tværs af alle dimensioner. En salgs faktatabel, der gemmer hver salgsordrelinje, er et godt eksempel på en faktatabel for transaktioner.
Periodiske faktatabeller med øjebliksbilleder
I en faktatabel med periodiske snapshots gemmes målinger på et foruddefineret tidspunkt eller bestemte intervaller. Den indeholder en oversigt over vigtige målepunkter eller ydeevneindikatorer over tid, så den er nyttig til tendensanalyse og overvågning af ændringer over tid. Målinger er altid semiadditive (beskrevet senere).
En lager faktatabel er et godt eksempel på en periodisk snapshottabel. Den indlæses hver dag med lagerbalancen for hvert produkt sidst på dagen.
Periodiske snapshottabeller kan bruges i stedet for en faktatabel for transaktioner, når det er dyrt at registrere store mængder transaktioner, og det understøtter ikke noget nyttigt analysekrav. Der kan f.eks. være millioner af lagerbevægelser på en dag (som kan gemmes i en faktatabel for transaktioner), men din analyse vedrører kun tendenser for lagerniveauer ved slutningen af dagen.
Akkumulerer faktatabeller med snapshot
En akkumuleret faktatabel med snapshot gemmer målinger, der akkumuleres på tværs af en veldefineret periode eller arbejdsproces. Den registrerer ofte tilstanden for en forretningsproces i forskellige faser eller milepæle, hvilket kan tage dage, uger eller endda måneder at fuldføre.
En faktarække indlæses kort efter den første hændelse i en proces, og derefter opdateres rækken i en forudsigelig rækkefølge, hver gang en milepælshændelse indtræffer. Opdateringerne fortsætter, indtil processen er fuldført.
Den akkumulerede faktatabel med snapshot har flere datodimensionsnøgler, der hver især repræsenterer en milepælshændelse. Nogle dimensionsnøgler kan registrere en I/T-tilstand , indtil processen ankommer til en bestemt milepæl. Målinger typisk postvarighed. Varigheder mellem milepæle kan give værdifuld indsigt i en forretningsarbejdsproces eller en assemblyproces.
Målingstyper
Målinger er typisk numeriske og ofte additive. Nogle målinger kan dog ikke altid tilføjes. Disse målinger er kategoriseret som enten semiadditive eller ikke-additive.
Additive målinger
En additiv måling kan lægges sammen på tværs af en hvilken som helst dimension. Ordreantal og salgsindtægter er f.eks. additive målinger (forudsat at indtægten registreres for en enkelt valuta).
Semiadditive målinger
En semiadditiv måling kan kun lægges sammen på tværs af bestemte dimensioner.
Her er nogle eksempler på semiadditive målinger.
- Alle målinger i en periodisk faktatabel med øjebliksbilleder kan ikke lægges sammen på tværs af andre tidsperioder. Du bør f.eks. ikke lægge alderen på en lagervare, der er udtaget prøver af om natten, sammen, men du kan lægge alderen på alle lagervarer på en hylde sammen hver nat.
- En lagersaldomåling i en lager faktatabel kan ikke lægges sammen på tværs af andre produkter.
- Salgsindtægter i en salgsf fact-tabel, der har en valutadimensionsnøgle, kan ikke lægges sammen på tværs af valutaer.
Ikke-additive målinger
En ikke-additiv måling kan ikke lægges sammen på tværs af en dimension. Et eksempel er en temperaturaflæsning, som i sagens natur ikke giver mening at føje til andre målinger.
Andre eksempler omfatter priser, f.eks. enhedspriser og forhold. Det anses dog for at være en bedre praksis at gemme de værdier, der bruges til at beregne forholdet, hvilket gør det muligt at beregne forholdet, hvis det er nødvendigt. En rabatprocentdel af et salgstal kan f.eks. gemmes som en måling af rabatbeløb (der skal divideres med målingen salgsindtægter). Eller alderen på en lagervare på hylden bør ikke lægges sammen over tid, men du kan se en tendens i den gennemsnitlige alder for lagervarer.
Nogle målinger kan ikke opsummeres, men de er stadig gyldige målinger. De kan aggregeres ved hjælp af antal, specifikt antal, minimum, maksimum, gennemsnit og andre. Ikke-additive målinger kan også blive additive, når de bruges i beregninger. Enhedspris ganget med ordreantal giver f.eks. salgsindtægter, som er additiv.
Faktaløse faktatabeller
Når en faktatabel ikke indeholder nogen målingskolonner, kaldes den en faktafri faktatabel. En faktaløs faktatabel registrerer typisk begivenheder eller forekomster, f.eks. studerende, der deltager i klassen. Fra et analyseperspektiv kan en måling opnås ved at tælle faktarækker.
Aggregerede faktatabeller
En aggregeret faktatabel repræsenterer en akkumulering af en grundlæggende faktatabel til en lavere dimensionalitet og/eller højere granularitet. Dens formål er at fremskynde forespørgselsydeevnen for ofte forespurgte dimensioner.
Bemærk
En semantisk Power BI-model kan generere brugerdefinerede sammenlægninger for at opnå det samme resultat eller bruge den aggregerede faktatabel for data warehouse ved hjælp af DirectQuery-lagringstilstand.
Relateret indhold
I den næste artikel i denne serie kan du få mere at vide om vejledning og design af bedste praksis for indlæsning af dimensionelle modeltabeller.