Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
I denne opplæringen skal du opprette en sakte skiftende dimensjonstype 1-løsning ved hjelp av Data Factory og Dataflow Gen2 i Microsoft Fabric.
Dimensjoner som endres sakte, er rammeverk for oppdatering og vedlikehold av data i dimensjonstabeller når dimensjoner endres. Det finnes forskjellige metoder for å håndtere skiftende dimensjoner, og disse kalles sakte skiftende dimensjonstyper.
Noen av de vanligste SCD-tilnærmingene er type 1 og type 2. Type 1 overskriver eksisterende poster med nye verdier, og beholder bare gjeldende tilstand. Type 2 bevarer historiske data ved å legge til nye rader for endringer mens du merker tidligere poster som historiske. Denne opplæringen fokuserer på type 1, som er ideell når du bare trenger den nyeste informasjonen.
Hva er sakte skiftende dimensjonstype 1?
Når dimensjonstype 1 endres sakte, kan du enten oppdatere eksisterende poster eller legge til nye. Når det allerede finnes en post i dimensjonstabellen, overskriver du den med de nye verdiene. Når det er en helt ny post, setter du den inn som en ny rad.
Denne fremgangsmåten beholder bare den gjeldende tilstanden til dataene dine. Ingen historisk informasjon lagres. Den er perfekt for tilleggsdata som kunders e-postadresser eller telefonnumre.
Slik fungerer det: Når en kunde endrer e-postadressen sin, oppdaterer du raden med den nye e-postadressen. Den gamle e-posten er borte for alltid. Det er som om de alltid har hatt den nye e-postadressen.
Du kan oppnå det samme resultatet i Power BI ved å utføre en ikke-trinnvis oppdatering av dimensjonstabellen. Oppdateringen overskriver eksisterende data med de nyeste verdiene.
Her er et enkelt eksempel:
| item_id | name | price | aisle |
|---|---|---|---|
| 83201 | Crackers | 4.99 | 6 |
| 17879 | Soda | 7.99 | 13 |
Hvis du flytter Crackers til gang 11, vil du bruke sakte skiftende dimensjonstype 1 for å få dette resultatet i dimensjonstabellen:
| item_id | name | price | aisle |
|---|---|---|---|
| 83201 | Crackers | 4.99 | 11 |
| 17879 | Soda | 7.99 | 13 |
Datalageret eller faktatabellen for innsjøhus har en sekundærnøkkel til dimensjonstabellen. Dette betyr at oppdaterte rader i dimensjonstabeller vises riktig i faktatabellen for rapporteringsformål.
Implementere ved hjelp av Power Query
I Power Query kan du oppnå denne virkemåten ved hjelp av sammenslåingsoperasjonen. Ta en titt på følgende Dataflow Gen2:
Som du kan se i diagramvisningen, kjører du en sammenligning mellom hentede dimensjonsposter og eksisterende dimensjonsposter. Deretter finner du poster som skal erstattes. Her er M-en for dette mønsteret:
let
Source = Source,
#"Added custom" = Table.TransformColumnTypes(
Table.AddColumn(Source, "Hash", each Binary.ToText(
Text.ToBinary(
Text.Combine(
List.Transform({[FirstName],[LastName],[Region]}, each if _ = null then "" else _),
"|")),
BinaryEncoding.Hex)
),
{{"Hash", type text}}
),
#"Marked key columns" = Table.AddKey(#"Added custom", {"Hash"}, false),
#"Merged queries" = Table.NestedJoin(
#"Marked key columns",
{"Hash"},
ExistingDimRecords,
{"Hash"},
"ExistingDimRecords",
JoinKind.LeftOuter
),
#"Expanded ExistingDimRecords" = Table.ExpandTableColumn(
#"Merged queries",
"ExistingDimRecords",
{"Count"},
{"Count"}
),
#"Filtered rows" = Table.SelectRows(#"Expanded ExistingDimRecords", each ([Count] = null)),
#"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"Count"})
in
#"Removed columns"
Fordeler og begrensninger
Sakte endring av dimensjonstype 1 gjør gjeldende tilstandsrapportering og analyse enkelt, men har begrensninger når du utfører historiske analyser.
SCD-type 1 sikrer at det ikke er noen dupliserte poster i tabellen, og at dataene viser den nyeste gjeldende dimensjonen, noe som er nyttig for instrumentbord i sanntid og prediktiv modellering, der bare gjeldende tilstand betyr noe.
Siden bare den mest up-todatoinformasjonen er lagret i tabellen, kan imidlertid ikke brukere sammenligne endringer i dimensjoner over tid. For eksempel ville en dataanalytiker ha problemer med å sammenligne inntekter for Crackers når de var i midtgang 6 og etter at de ble flyttet til midtgang 11 uten annen informasjon.
Related content
Hvis du trenger å beholde historiske data, bør du vurdere å endre dimensjonstype 2 sakte i stedet. Type 2 legger til nye rader for endringer, samtidig som de gamle dataene beholdes. Finn ut mer om sakte endring av dimensjonstype 2.