Sådan implementerer du dimensionstypen 1, der langsomt ændres, ved hjælp af Power Query
Dimensioner, der langsomt ændres, og som ofte kaldes SCD, er en struktur til opdatering og vedligeholdelse af data, der er gemt i dimensionstabeller, efterhånden som dimensionerne ændres. Der er et par forskellige metoder til at håndtere ændrede dimensioner, og disse teknikker kaldes ofte for langsomt skiftende dimensionstyper.
Langsomt skiftende dimensionstype 1
Hvis dimensionstypen 1 ændres langsomt, opdateres eller overskrives den eksisterende post, hvis en post i en dimensionstabel ændres. Ellers indsættes den nye post i dimensionstabellen. Det betyder, at poster i dimensionstabellen altid afspejler den aktuelle tilstand, og at der ikke vedligeholdes historiske data. Denne designtilgang er almindelig for kolonner, der gemmer supplerende værdier, f.eks. en kundes mailadresse eller telefonnummer. Når en kundes mailadresse eller telefonnummer ændres, opdaterer dimensionstabellen kunderækken med de nye værdier. Det er, som om kunden altid har haft disse kontaktoplysninger. En ikke-oprettende opdatering af en tabel af dimensionstypen Power BI-model opnår resultatet af en dimension, der langsomt ændrer type 1. Tabeldataene opdateres for at sikre, at de nyeste værdier indlæses.
Eksempler:
item_id | navn | price | skib |
---|---|---|---|
83201 | Kiks | 4.99 | 6 |
17879 | Sodavand | 7.99 | 13 |
Hvis crackere flyttes til midtergangen 11, giver følgende resultat ved hjælp af langsomt skiftende dimensionstype 1 for at registrere denne ændring i dimensionstabellen:
item_id | navn | price | skib |
---|---|---|---|
83201 | Kiks | 4.99 | 11 |
17879 | Sodavand | 7.99 | 13 |
Det antages, at faktatabellen for data warehouse eller lake house har en fremmed nøgle til dimensionstabellen. Opdaterede rækker i dimensionstabeller afspejles derfor korrekt i faktatabellen til rapporteringsformål.
Hvis dimensionstypen 1 ændres langsomt, sikrer du, at der ikke er dublerede poster i tabellen, og at dataene afspejler den seneste aktuelle dimension. Manglende duplikering er især nyttig til dashboarding i realtid og forudsigende modellering, hvor kun den aktuelle tilstand er af interesse. Da det kun er de nyeste oplysninger, der er gemt i tabellen, kan brugerne ikke sammenligne ændringer i dimensioner over tid. En dataanalytiker ville f.eks. have problemer med at identificere løft i indtægten for crackere, efter at de blev flyttet til midtergangen 11 uden andre oplysninger.
En langsom ændring af dimensionstypen 1 gør det nemt at rapportere og analysere den aktuelle tilstand, men har begrænsninger, når der udføres historiske analyser.
I Power Query kan du opnå den tidligere beskrevne funktionsmåde ved hjælp af handlingen Flet. Se følgende Dataflow Gen2.
Som du kan se i diagramvisningen, kører vi en sammenligning mellem kildedimensionsposter og eksisterende dimensionsposter. Derefter finder vi poster, der skal erstattes. Den M-kode, der realiserer dette mønster, er som følger:
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"
Du kan også bruge Flet tabeller som et andet eksempel, der passer til dit behov. Vi præsenterer flere eksempler, der er baseret på Flet for at nå dine mål for dimension 1, der langsomt ændrer sig.
Langsomt skiftende dimensionstype 2
Når dimensionstypen 2 ændres langsomt, bevares historiske data ved at tilføje en ny række, når en dimension ændres, og den nye række angives korrekt som aktuel, samtidig med at den nyligt historiske post angives i overensstemmelse hermed. Brug af denne teknik til at implementere dimensionstypen 1, der langsomt ændrer sig, bevarer ikke kun historiske data, men indeholder også oplysninger om, hvornår data ændres. Vedligeholdelse af historiske data gør det muligt for dataanalytikere og dataforskere at udforske driftsmæssige ændringer, udføre A/B-test og styrke informeret beslutningstagning.
Dataflow Gen2 i Fabric Data Factory gør det visuelt og nemt at implementere dimensionstype 1-mønstre, der ændrer sig langsomt. Du kan også opnå et dimensionstype 2-mønster, der ændrer sig langsomt, som beskrevet i Dimensionstype 2, der langsomt ændres.