Del via


Dimensjonal modellering i Microsoft Fabric Warehouse: Faktatabeller

Gjelder for:✅ SQL Analytics-endepunkt og Warehouse i Microsoft Fabric

Merk

Denne artikkelen er en del av dimensjonalmodelleringsserien med artikler. Denne serien fokuserer på anbefalte fremgangsmåter for veiledning og utforming knyttet til dimensjonal modellering i Microsoft Fabric Warehouse.

Denne artikkelen gir deg veiledning og anbefalte fremgangsmåter for utforming av faktatabeller i en dimensjonal modell. Det gir praktisk veiledning for Warehouse i Microsoft Fabric, som er en opplevelse som støtter mange T-SQL-funksjoner, som å opprette tabeller og administrere data i tabeller. Så du har full kontroll over å opprette dimensjonale modelltabeller og laste dem inn med data.

Merk

I denne artikkelen refererer termdatalageret til et virksomhetsdatalager, som leverer omfattende integrering av kritiske data på tvers av organisasjonen. Derimot refererer det frittstående termlageret til et Fabric Warehouse, som er en programvare som en tjeneste (SaaS) relasjonsdatabase som du kan bruke til å implementere et datalager. For klarhet, i denne artikkelen sistnevnte er nevnt som Fabric Warehouse.

Tips

Hvis du er uerfaren med dimensjonal modellering, bør du vurdere denne serien med artikler ditt første trinn. Det er ikke ment å gi en fullstendig diskusjon om dimensjonal modelleringsutforming. Hvis du vil ha mer informasjon, kan du se allment publisert innhold, for eksempel Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling (3. utgave, 2013) av Ralph Kimball og andre.

I en dimensjonal modell lagrer en faktatabell målinger som er knyttet til observasjoner eller hendelser. Det kan lagre salgsordrer, børssaldoer, valutakurser, temperaturmålinger og mer.

Faktatabeller inkluderer mål, som vanligvis er numeriske kolonner, for eksempel salgsordreantall. Analysespørringer oppsummerer mål (ved hjelp av sum, antall, gjennomsnitt og andre funksjoner) innenfor konteksten til dimensjonsfiltre og grupperinger.

Faktatabeller inneholder også dimensjonsnøkler, som bestemmer dimensjonaliteten til fakta. Dimensjonsnøkkelverdiene bestemmer detaljnivået til fakta, som er atomnivået som fakta defineres etter. En ordredatodimensjonsnøkkel i en faktatabell for salg angir for eksempel detaljnivået til fakta på datonivå, mens en måldatodimensjonsnøkkel i en faktatabell for salgsmål kan angi detaljnivået på kvartalsnivå.

Merk

Selv om det er mulig å lagre fakta på en høyere detaljnivå, er det ikke lett å dele ut målverdier til lavere nivåer av kornethet (hvis nødvendig). Rene datavolumer, sammen med analytiske krav, kan gi gyldig grunn til å lagre fakta om høyere detaljnivå, men på bekostning av detaljert analyse.

Hvis du vil identifisere faktatabeller på en enkel måte, prefikser du vanligvis navnene deres med f_ eller Fact_.

Faktatabellstruktur

Hvis du vil beskrive strukturen i en faktatabell, kan du vurdere følgende eksempel på en salgsfaktatabell med navnet f_Sales. Dette eksemplet bruker gode utformingspraksiser. Hver av gruppene med kolonner er beskrevet i avsnittene nedenfor.

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ærnøkkel

Som tilfellet er i eksemplet, har ikke eksempelfaktatabellen en primærnøkkel. Det er fordi det vanligvis ikke tjener et nyttig formål, og det vil unødvendig øke størrelsen på tabelllagringen. En primærnøkkel er ofte underforstått av settet med dimensjonstaster og attributter.

Dimensjonsnøkler

Eksempelfaktatabellen har ulike dimensjonstaster, som bestemmer dimensjonaliteten til faktatabellen. Dimensjonstaster er referanser til surrogatnøklene (eller attributter på høyere nivå) i de relaterte dimensjonene.

Merk

Det er en uvanlig faktatabell som ikke inneholder minst én datodimensjonsnøkkel.

En faktatabell kan referere til en dimensjon flere ganger. I dette tilfellet er det kjent som en rollespilldimensjon. I dette eksemplet har faktatabellen OrderDate_Date_FK og ShipDate_Date_FK dimensjonsnøklene. Hver dimensjonsnøkkel representerer en distinkt rolle, men det finnes bare én fysisk datodimensjon.

Det er en god praksis å angi hver dimensjonsnøkkel som NOT NULL. Under faktisk tabellinnlasting kan du bruke spesielle dimensjonsmedlemmer til å representere manglende, ukjente, I/T- eller feiltilstander (om nødvendig).

Attributter

Eksempelfaktatabellen har to attributter. Attributter gir tilleggsinformasjon og angir detaljnivået til faktadata, men de er verken dimensjonstaster eller dimensjonsattributter eller mål. I dette eksemplet lagrer attributtkolonner salgsordreinformasjon. Andre eksempler kan omfatte sporingsnumre eller billettnumre. For analyseformål kan et attributt danne en degenerert dimensjon.

Measures

Eksempelfaktatabellen har også mål, for eksempel Quantity kolonnen. Målkolonner er vanligvis numeriske og ofte additive (noe som betyr at de kan summeres og oppsummeres ved hjelp av andre aggregasjoner). Hvis du vil ha mer informasjon, kan du se Måltyper senere i denne artikkelen.

Overvåkingsattributter

Eksempelfaktatabellen har også ulike revisjonsattributter. Overvåkingsattributter er valgfrie. De lar deg spore når og hvordan faktaposter ble opprettet eller endret, og de kan inkludere diagnosedata eller feilsøkingsinformasjon som ble opphøyd under utpakkings-, transformerings- og belastningsprosesser (ETL). Du vil for eksempel spore hvem (eller hvilken prosess) som har oppdatert en rad, og når. Overvåkingsattributter kan også bidra til å diagnostisere et utfordrende problem, for eksempel når en ETL-prosess stopper uventet.

Faktatabellstørrelse

Faktatabeller varierer i størrelse. Størrelsen tilsvarer dimensjonalitet, detaljnivå, antall mål og mengden historie. Sammenlignet med dimensjonstabeller er faktatabeller smalere (færre kolonner), men store eller til og med enorme når det gjelder rader (i overkant av milliarder).

Faktautformingskonsepter

Denne delen beskriver ulike faktautformingskonsepter.

Faktatabelltyper

Det finnes tre typer faktatabeller:

  • Transaksjonsfaktatabeller
  • Periodiske faktatabeller for øyeblikksbilde
  • Akkumulering av faktatabeller for øyeblikksbilde

Transaksjonsfaktatabeller

En transaksjonsfaktatabell lagrer forretningshendelser eller transaksjoner. Hver rad lagrer fakta i form av dimensjonsnøkler og mål, og eventuelt andre attributter. Alle dataene er fullt kjent når de settes inn, og de endres aldri (bortsett fra for å rette feil).

Faktatabeller for transaksjoner lagrer vanligvis fakta på lavest mulig nivå av detaljnivå, og de inneholder mål som er additive på tvers av alle dimensjoner. En faktatabell for salg som lagrer hver salgsordrelinje, er et godt eksempel på en transaksjonsfaktatabell.

Periodiske faktatabeller for øyeblikksbilde

En periodisk faktatabell for øyeblikksbilde lagrer målinger på et forhåndsdefinert tidspunkt eller bestemte intervaller. Det gir et sammendrag av viktige måledata eller ytelsesindikatorer over tid, og er derfor nyttig for trendanalyse og overvåking av endringer over tid. Mål er alltid semi-additive (beskrevet senere).

En faktatabell for lager er et godt eksempel på en periodisk øyeblikksbildetabell. Den lastes inn hver dag med sluttlagersaldoen for hvert produkt.

Periodiske øyeblikksbildetabeller kan brukes i stedet for en transaksjonsfaktatabell når du registrerer store mengder transaksjoner, og det støtter ikke noen nyttige analytiske krav. Det kan for eksempel være millioner av aksjebevegelser på en dag (som kan lagres i en transaksjonsfaktatabell), men analysen er bare opptatt av trender for sluttlagernivåer.

Akkumulering av faktatabeller for øyeblikksbilde

En faktatabell for et samlet øyeblikksbilde lagrer målinger som akkumuleres på tvers av en veldefinert periode eller arbeidsflyt. Det registrerer ofte tilstanden til en forretningsprosess på distinkte stadier eller milepæler, noe som kan ta dager, uker eller måneder å fullføre.

En faktarad lastes inn kort tid etter den første hendelsen i en prosess, og deretter oppdateres raden i en forutsigbar sekvens hver gang en milepælhendelse forekommer. Oppdateringer fortsetter til prosessen er fullført.

Akkumulerende faktatabell for øyeblikksbilde har flere datodimensjonsnøkler, som hver representerer en milepælhendelse. Noen dimensjonsnøkler kan registrere en I/T-tilstand til prosessen kommer til en bestemt milepæl. Mål registrerer vanligvis varigheter. Varigheter mellom milepæler kan gi verdifull innsikt i en forretningsarbeidsflyt eller samlingsprosess.

Måltyper

Mål er vanligvis numeriske og ofte additive. Noen mål kan imidlertid ikke alltid legges til. Disse målene er kategorisert som enten semi-additive eller ikke-additiv.

Additive mål

Et additivt mål kan summeres på tvers av enhver dimensjon. Ordreantall og salgsinntekter er for eksempel additive mål (forutsatt at omsetning registreres for én enkelt valuta).

Semi-additive mål

Et semi-additive mål kan bare summeres på tvers av bestemte dimensjoner.

Her er noen eksempler på semi-additive mål.

  • Alle mål i en periodisk faktatabell for øyeblikksbilder kan ikke summeres på tvers av andre tidsperioder. Du bør for eksempel ikke summere alderen på en lagervare som er utvalgt hver natt, men du kan summere alderen på alle lagervarer på en hylle, hver natt.
  • Et aksjesaldomål i en lagerfaktatabell kan ikke summeres på tvers av andre produkter.
  • Salgsinntekter i en salgsfaktatabell som har en valutadimensjonsnøkkel, kan ikke summeres på tvers av valutaer.

Ikke-additive mål

Et ikke-additivt mål kan ikke summeres på tvers av noen dimensjon. Et eksempel er en temperaturavlesning, som av sin natur ikke gir mening å legge til andre målinger.

Andre eksempler inkluderer priser, for eksempel enhetspriser og forhold. Det anses imidlertid som en bedre praksis å lagre verdiene som brukes til å beregne forholdet, noe som gjør at forholdet kan beregnes om nødvendig. En rabattprosent av et salgsfakta kan for eksempel lagres som et mål for rabattbeløp (som skal deles på salgsinntektsmålet). Eller alderen på en lagervare på hyllen bør ikke summeres over tid, men du kan se en trend i gjennomsnittsalderen for lagervarer.

Selv om noen mål ikke kan summeres, er de fremdeles gyldige mål. De kan aggregeres ved hjelp av antall, distinkt antall, minimum, maksimum, gjennomsnitt og andre. I tillegg kan ikke-additive mål bli additive når de brukes i beregninger. Enhetspris multiplisert med ordreantall produserer for eksempel salgsinntekter, som er additive.

Faktaløse faktatabeller

Når en faktatabell ikke inneholder noen målkolonner, kalles den en faktaløs faktatabell. En faktaløs faktatabell registrerer vanligvis hendelser eller hendelser, for eksempel elever som deltar i klassen. Fra et analyseperspektiv kan en måling oppnås ved å telle faktarader.

Aggreger faktatabeller

En samlet faktatabell representerer en sammendrag av en basisfaktatabell til en lavere dimensjonalitet og/eller høyere detaljnivå. Formålet er å akselerere spørringsytelsen for vanlige spørringsdimensjoner.

I den neste artikkelen i denne serien kan du lære mer om veiledning og utforme anbefalte fremgangsmåter for innlasting av dimensjonale modelltabeller.