Implementere en Sakte Endring av Type 2 Dimensjon i SQL Server Integration Services – Del 1

Implementere en Sakte Endring av Type 2 Dimensjon i SQL Server Integration Services – Del 1

Av: Koen Verbeeck | Oppdatert: 2018-08-09 | Comments (4) | i Slekt: 1 | 2 | 3 | 4 | Mer > Integration Services-Utvikling

Gratis MSSQLTips Webinar: Komme i Gang med inkluderinger for serverside

Lær hvordan å komme i gang med SQL Server Integration Services og hvordan å bygge en inkluderinger for serverside prosjekt med denne demoen fokusert webinar.,

Problem

Vi ønsker å holde historien i våre data warehouse for flere dimensjoner.Vi bruker SQL Server Integration Services (inkluderinger for serverside) for å gjennomføre ETL (ExtractTransform og Belastning). Vi prøvde thebuilt-i Sakte Endring Dimensjon veiviseren, men ytelsen virker dårlig. Hvordan canwe implementere ønsket funksjonalitet med vanlig inkluderinger for serverside komponenter?

Løsning

Innføring i Sakte Endring av Mål

En sakte endring dimensjon (SCD) holder rede på historien til sin individualmembers., Det er flere metoder som er foreslått av Ralph Kimball i sin bok DatawarehouseToolkit:

  • Type 1 – Overskriv feltene når verdien endringer. Ingen historie iskept.
  • Type 2 – Opprette en ny tråd med de nye verdiene for feltene. Extracolumns angir når i gang en rad var gyldig.
  • Skriv inn 3 – Beholde den gamle verdien av en kolonne i en egen kolonne.
  • Det finnes flere typer av SCDs, men de er stort sett en hybrid kombinasjon ofthe ovenfor.

I dette tipset, vi vil fokusere på type 2-situasjon. La oss illustratewith et eksempel., Vi har en enkel tabell lagring av kundedata.

SK_Customer kolonnen er en kolonne med en identityproperty som vil generere en ny verdi for hver rad. Vi ønsker å keephistory for Plassering attributtet. Når plasseringen endres fra Antwerpen til Brussel,har vi ikke oppdatere rad, men vi setter inn en ny rekord:

ved Hjelp av ValidFrom og ValidTo felt, weindicate når en rekord som var gyldig i tid. En ny surrogat nøkkelen genereres, butthe business-tasten – CustomerName – forblir den samme., Når et faktum tableis lagt, et oppslag vil bli gjort på kunde-tabellen. Avhengig av timestampof det faktum posten, en av de to rader vil bli returnert. For eksempel:

Alle fakta er på samme kunde. Når du ber om det totale salget amountfor CustomerA, resultatet er 31. Den totale omsetningen per beliggenhet er 12.75 for Antwerpand 18.25 for Brussel, selv om dataene er på samme kunde. Ved hjelp av SCDType 2, kan vi analysere våre data med historiske egenskaper.,

Implementering Metoder

Det finnes flere metoder for å legge i en Sakte Endring Dimensjon av type 2 ina data warehouse. Du kan velge en ren T-SQL tilnærming, enten med multipleT-SQL-setninger, eller ved å bruke MERGE-setningen. Sistnevnte er forklart i thetipUsing SQL Server MERGE-Setningen til å Behandle Type 2 Sakte Endre Dimensjoner.

Med inkluderinger for serverside, kan du bruke den innebygde Sakte Endre Dimensjon-veiviseren, som canhandle flere scenarier., Denne veiviseren er beskrevet i tipsLoading Historiske Data i en SQL Server Data Warehouse andHandle Sakte Skiftende Mål i SQL Server Integration Services. Den downsideof denne veiviseren er ytelse: den bruker OLE DB-Kommando for everyupdate, noe som kan resultere i redusert ytelse for større datasett. Hvis du gjør changesto dataflyten for å løse disse problemene, kan du ikke kjøre veiviseren på nytt asyou ville miste alle endringer.

Det siste alternativet – bortsett fra å bruke 3rdparty komponenter – er å bygge SCD Type 2 logikk deg selv i dataflyten,som vi skal beskrive i neste avsnitt.,

Implementering i inkluderinger for serverside

løsningen som foreslås i dette tipset fungerer for noen versjon av inkluderinger for serverside. Vi’llreprise eksempel på kunden dimensjon, men et ekstra felt har blitt lagt:e-post-attributt. Vi trenger ikke holde historien til e-postadresser, så anynew verdi vil overskrive alle andre verdier.

for det Første, vi lese data fra en kilde, mest sannsynlig en iscenesettelse miljø. Whenusing en relasjonell kilde, kan du bruke OLE DB-Kilde-komponent med en SQL-queryto lese dataene. Bare velg kolonner du faktisk trenger for din dimensjon. TheValidFrom feltet beregnes her som godt., Siden du typicallyload data fra forrige dag, ValidFrom er satt dato for i går. Hvis youdon ikke har en relasjonell kilde, kan du legge til denne kolonnen ved hjelp av en Avledet Columntransformation.

I det neste trinnet, vi gjør et oppslag mot dimensjon.Her vil vi kontrollere om innkommende rader er enten et sett eller en oppdatering.Hvis ingen treff blir funnet, rad er en ny dimensjon medlem, og det må settes inn.Hvis en kamp er funnet, dimensjon medlem allerede finnes, og vi trenger tocheck for SCD Type 2 endringer., Med mindre du har en veldig stor dimensjon, du kan usethe full cache: –

– >

Konfigurer oppslag transformasjon til å sende ikke-samsvarende rader til ingen treff utgang. I inkluderinger for serverside 2005 dette alternativet ikke eksisterer ennå, så youcan bruke enten feil utgang, eller angi transformasjon for å ignorere feil andsplit ut innlegg og oppdateringer ved hjelp av en betinget del.

I Forbindelse ruten følgende SQL-spørring henter surrogatekey, forretnings-tasten (CustomerName) og SCD Type 2 kolonner., For hvert medlem,bare de siste rad er hentet, ved å filtrere på ValidTo feltet.

Plassering feltet er omdøpt til Location_OLD for klarhet. I theColumns ruten kamp på business-tasten, og velg alle andre kolonner.

Nå kan vi legge til en OLE DB Reisemål på lerretet. Dette målet vil writeall nye rader til dimensjon. Koble Oppslag Ingen Treff Outputof oppslag transformasjon til målet.,

På kartlegging rute, kart kolonnene av data flyte med kolonner av thedimension bordet.

SK_Customer kolonnen er tilordnet venstre, som det er en IDENTITET columnand våre verdier er generert av databasemotoren. Den ValidTo columnis også tomt. Nye rader har ingen verdi for denne kolonnen.

I del 2 av dette tipset vil vi fortsette vår konfigurasjon av data flow,hvor vi skal sjekke om en rad er en type 2-oppdateringen eller ikke.,

Neste Trinn
  • Hvis du ønsker å vite mer om implementering av sakte å endre dimensjoner inSSIS, kan du sjekke ut følgende tips:
    • ved Hjelp av SQL Server MERGE-Setningen til å Behandle Type 2 Sakte Endring av Mål
    • Mates Historiske Data i en SQL Server Data Warehouse
    • Håndtaket Sakte Skiftende Mål i SQL Server Integration Services
  • Du kan finne mer inkluderinger for serverside utvikling tips inthis oversikt.,

Sist Oppdatert: 2018-08-09

Om forfatteren
Koen Verbeeck er en BI professional, som spesialiserer seg på Microsoft BI stack med en forkjærlighet for inkluderinger for serverside.
Vis alle mine tips

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *