implementere en langsomt skiftende type 2 Dimension I S 2L Server Integration Services-Del 1

implementere en langsomt skiftende type 2 Dimension I S 2L Server Integration Services-Del 1

af: Koen Verbeeck / opdateret: 2018-08-09 / Kommentarer (4) / relateret: 1 | 2 | 3 | 4 | mere > udvikling af integrationstjenester

gratis MSS :ltips Weebinar: Kom godt i gang med SSIS

Lær hvordan at komme i gang med S .l Server Integration Services og hvordan man opbygger et SSIS-projekt med dette demofokuserede .ebinar.,

Problem

Vi vil gerne beholde historikken i vores datavarehus i flere dimensioner.Vi bruger S .l Server Integration Services (SSIS) til at gennemføre ETL (e .tracttransform og belastning). Vi forsøgte theindbygget langsomt skiftende Dimension wizardi .ard, men ydeevnen virker dårlig. Hvordan kan vi implementere den ønskede funktionalitet med regelmæssige SSIS-komponenter?

løsning

Introduktion til langsomt skiftende dimensioner

en langsomt skiftende dimension (SCD) holder styr på historien om de enkelte medlemmer., Der er flere metoder foreslået af Ralph Kimball i sin bog The Datareharehousetoolkit:

  • Type 1 – Overskriv felterne, når værdien ændres. Ingen historie iskept.
  • Type 2-Opret en ny linje med de nye værdier for felterne. E extractracolumns angiver, hvornår en række var gyldig.
  • Type 3-opbevar den gamle værdi af en kolonne i en separat kolonne.
  • Der er flere typer SCD ‘ er, men de er for det meste en hybridkombination afovenstående.

i dette tip fokuserer vi på type 2-situationen. Lad os illustreremed et eksempel., Vi har en simpel tabel lagring kundedata.

kolonnen SK_Customer er en kolonne med en identityproperty, som vil generere en ny værdi for hver række. Vi vil gerne beholde historien om Placeringsattributten. Når placeringen ændres fra Ant .erpen til Bru Brusselselles,opdaterer vi ikke rækken, men vi indsætter en ny post:

brug af felterne ValidFrom og ValidTo, viangiv, når en post var gyldig i tide. En ny surrogatnøgle genereres, Menden forretningsnøgle-CustomerName-forbliver den samme., Når en fact tableis indlæst, vil et opslag ske på kundebordet. Afhængigt af tidsstempletaf faktaoptegnelsen vil en af de to rækker blive returneret. For eksempel:

alle fakta er for den samme kunde. Når du vil spørge det samlede salg beløbfor CustomerA, resultatet er 31. Det samlede salg pr. lokation er 12,75 for Ant .erpenog 18,25 for Bru .elles, selv om dataene er for den samme kunde. Ved hjælp af SCDType 2 kan vi analysere vores data med historiske attributter.,

implementeringsmetoder

Der er flere metoder til indlæsning af en langsomt skiftende Dimension af type 2 ina data dataarehouse. Du kan vælge en ren T-s .l-tilgang, enten med multipleT-s .l-sætninger eller ved at bruge MERGE-sætningen. Sidstnævnte forklares itipusering af S .l Server MERGE-sætningen til at behandle type 2 langsomt skiftende dimensioner.

Med SSIS kan du bruge den indbyggede langsomt skiftende Dimensionsguide, som kanhåndtere flere scenarier., Denne guide er beskrevet i tipsLoading Historiske Data i en SQL Server-Data Warehouse andHandle Langsomt at Ændre Dimensioner i SQL Server Integration Services. Ulempen ved denne guide er ydeevne: den bruger OLE DB-kommandoen til everyupdate, hvilket kan resultere i dårlig ydelse for større datasæt. Hvis du foretager changesto datastrømmen for at løse disse problemer, kan du ikke køre guiden igen, som du ville miste alle ændringer.

den sidste mulighed – bortset fra at bruge 3rdparty – komponenter-bygger SCD type 2-logikken selv i dataflo .et,som vi beskriver i næste afsnit.,

implementering i SSIS

løsningen foreslået i dette tip fungerer for enhver version af SSIS. Vi vil beskrive eksemplet på kundedimensionen, men der er tilføjet et ekstra felt: e-mailattributten. Vi har ikke holde Historie af e-mail-adresser, så anyne.værdi vil overskrive alle andre værdier.

først læser vi dataene fra en kilde, sandsynligvis et iscenesættelsesmiljø. Nårved hjælp af en relationel kilde kan du bruge OLE DB-Kildekomponenten med en S .l-forespørgsel for at læse dataene. Vælg kun kolonner, du faktisk har brug for til din dimension. Her beregnes også validiteten fra feltet., Da du typiskindlæse data fra den foregående dag, ValidFrom er indstillet til datoen for i går. Hvis du ikke har en relationel kilde, kan du tilføje denne kolonne ved hjælp af en afledt Kolonnetransformation.

i det næste trin laver vi et opslag mod dimensionen.Her vil vi kontrollere, om de indgående rækker er enten en indsats eller en opdatering.Hvis der ikke findes nogen match, rækken er et nyt dimensionsmedlem, og det skal indsættes.Hvis der findes en kamp, dimensionsmedlemet findes allerede, og vi har brug for tocheck for SCD Type 2 ændringer., Medmindre du har en meget stor dimension, kan du brugeden fulde cache:

Konfigurer opslagstransformationen til at sende ikke-matchende rækker til no match-output. I SSIS 2005 findes denne indstilling ikke endnu, så du kan enten bruge fejludgangen eller indstille transformationen til at ignorere fejl ogsplit ud indsatser og opdateringer ved hjælp af en betinget split.

i forbindelsesruden henter følgende s .l-forespørgsel surrogatnøglen, forretningsnøglen (CustomerName) og kolonnerne SCD type 2., For hvert medlem hentes kun den seneste række ved at filtrere på ValidTo-feltet.

placeringsfeltet omdøbes til Location_OLD for klarhedens skyld. I columns rude skal du matche på forretningsnøglen og vælge alle andre kolonner.

nu kan vi tilføje en OLE DB Destination på lærredet. Denne destination vil skrivealle nye rækker til dimensionen. Tilslut Opslag Ingen Match Outputof opslag transformation til destinationen.,

på kortlægningsruden skal du kortlægge kolonnerne i datastrømmen med kolonnerne i dimensionstabellen.

kolonnen SK_Customer er ikke kortlagt, da det er en IDENTITETSKOLONNEOG dens værdier genereres af databasemotoren. ValidTo columnis forlod også tomt. Nye rækker har ingen værdi for denne kolonne.i del 2 af dette tip fortsætter vi vores konfiguration af dataflo .et,hvor vi kontrollerer, om en række er en type 2-opdatering eller ej.,

næste trin
  • hvis du vil vide mere om implementering af langsomt skiftende dimensioner inSSIS, kan du tjekke følgende tip:
    • brug S 2L Server MERGE-erklæringen til at behandle type 2 langsomt skiftende dimensioner
    • indlæsning af Historiske Data i et S 2L Server Data Warehousearehouse
    • Håndter langsomt skiftende dimensioner I S INL Server Integration Services
  • du kan finde flere SSIS-udviklingstips inthis oversigt.,

Senest Opdateret: 2018-08-09

Om forfatteren
Koen Verbeeck er en BI-professionel, der har specialiseret sig i Microsoft BI stack med en særlig kærlighed for SSIS.
Se alle mine tips

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *