Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
I dette selvstudium skal du oprette en løsning til dimensionstype 1, der langsomt ændrer sig, ved hjælp af Data Factory og Dataflow Gen2 i Microsoft Fabric.
Langsomt skiftende dimensioner (SCD) er strukturer til opdatering og vedligeholdelse af data i dimensionstabeller, når dimensioner ændres. Der er forskellige metoder til at håndtere skiftende dimensioner, og disse kaldes langsomt skiftende dimensionstyper.
Nogle af de mest almindelige SCD-tilgange er type 1 og type 2. Type 1 overskriver eksisterende poster med nye værdier og bevarer kun den aktuelle tilstand. Type 2 bevarer historiske data ved at tilføje nye linjer for ændringer, mens tidligere poster markeres som historiske. Denne vejledning fokuserer på type 1, hvilket er ideelt, når du kun har brug for de mest aktuelle oplysninger.
Hvad ændrer langsomt dimensionstype 1?
Med dimensionstype 1, der langsomt skifter, kan du enten opdatere eksisterende poster eller tilføje nye. Når der allerede findes en post i dimensionstabellen, skal du overskrive den med de nye værdier. Når det er en helt ny post, indsætter du den som en ny række.
Denne fremgangsmåde bevarer kun den aktuelle tilstand af dine data. Der gemmes ingen historiske oplysninger. Den er perfekt til supplerende data som f.eks. kunders e-mailadresser eller telefonnumre.
Sådan fungerer det: Når en kunde ændrer sin mailadresse, opdaterer du deres række med den nye mailadresse. Den gamle e-mail er væk for altid. Det er, som om de altid har haft den nye e-mailadresse.
Du kan opnå det samme resultat i Power BI ved at udføre en ikke-trinvis opdatering af dimensionstabellen. Opdateringen overskriver de eksisterende data med de nyeste værdier.
Her er et simpelt eksempel:
| item_id | name | price | aisle |
|---|---|---|---|
| 83201 | Crackers | 4.99 | 6 |
| 17879 | Soda | 7.99 | 13 |
Hvis du flytter Crackers til gang 11, ved at bruge langsomt skiftende dimensionstype 1 giver dette resultat i dimensionstabellen:
| item_id | name | price | aisle |
|---|---|---|---|
| 83201 | Crackers | 4.99 | 11 |
| 17879 | Soda | 7.99 | 13 |
Dit data warehouse eller din faktatabel for søhus har en fremmed nøgle til dimensionstabellen. Det betyder, at opdaterede rækker i dimensionstabeller vises korrekt i faktatabellen til rapporteringsformål.
Implementere ved hjælp af Power-forespørgsel
I Power Query kan du opnå denne funktionsmåde ved hjælp af handlingen Flet. Tag et kig på følgende Dataflow Gen2:
Som du kan se i diagramvisningen, kan du foretage en sammenligning mellem hentede dimensionsposter og eksisterende dimensionsposter. Derefter finder du poster, der skal erstattes. Her er M'et til denne opskrift:
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"
Fordele og begrænsninger
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.
SCD-type 1 sikrer, at der ikke er nogen duplikerede poster i tabellen, og at dataene viser den seneste aktuelle dimension, hvilket er nyttigt til dashboarding i realtid og forudsigende modellering, hvor kun den aktuelle tilstand betyder noget.
Men da det kun er de mest up-todatooplysninger, der er gemt i tabellen, kan brugerne ikke sammenligne ændringer i dimensioner over tid. For eksempel ville en dataanalytiker have problemer med at sammenligne omsætningen for Crackers, da de var i gang 6, og efter at de blev flyttet til gang 11 uden andre oplysninger.
Related content
Hvis du har brug for at beholde historiske data, kan du overveje langsomt at ændre dimensionstype 2 i stedet. Type 2 tilføjer nye rækker til ændringer, mens de gamle data bevares. Få mere at vide om langsomt skiftende dimensionstype 2.