Provádět Pomalu Mění Typ 2 Dimenze v SQL Server Integration Services – Část 1

Provádět Pomalu Mění Typ 2 Dimenze v SQL Server Integration Services – Část 1

: Koen Verbeeck | Aktualizováno: 2018-08-09 | Komentáře (4) | Související: 1 | 2 | 3 | 4 | > Integrace Služeb Rozvoj

Zdarma MSSQLTips Webináře: Začínáme s SSIS

Naučte se, jak začít s SQL Server Integration Services a jak vytvořit SSIS projekt s tímto demo zaměřené webináře.,

problém

rádi bychom udrželi historii v našem datovém skladu pro několik rozměrů.Pro implementaci ETL (Extractttransform a Load) používáme SQL Server Integration Services (SSIS). Zkoušeli jsme průvodce pomalu se měnícím rozměrem, ale výkon se zdá být špatný. Jak můžemeimplementovat požadovanou funkci s běžnými součástmi SSIS?

Řešení

Úvod do Pomalu Mění Rozměry

pomalu mění rozměr (SCD) udržuje historii svých individualmembers., Ralph Kimball ve své knize DatawarehouseToolkit navrhuje několik metod:

  • typ 1 – přepište pole, když se hodnota změní. Žádná historie není.
  • typ 2-Vytvořte nový řádek s novými hodnotami pro pole. Extracolumns označují, kdy byl řádek platný.
  • typ 3 – ponechte starou hodnotu sloupce v samostatném sloupci.
  • existuje více typů Scd, ale většinou jde o hybridní kombinaci výše uvedeného.

v tomto tipu se zaměříme na situaci typu 2. Podívejme se na příklad., Máme jednoduchou tabulku ukládání dat o zákaznících.

sloupec SK_Customer je sloupec s identityproperty, který vygeneruje novou hodnotu pro každý řádek. Rádi bychom, aby keephistory pro atribut umístění. Při umístění se změní z Antverp do Bruselu,nebudeme aktualizovat řádek, ale jsme-li vložit nový rekord:

Pomocí ValidFrom a ValidTo pole, weindicate, kdy rekord byl platný v čase. Nový náhradní klíč je generován, alepodnikatelský klíč-CustomerName-zůstává stejný., Při načtení tabulky faktů se na zákaznickém stole provede vyhledávání. V závislosti na časovém razítkuz záznamu faktů bude jeden ze dvou řádků vrácen. Například:

všechna fakta jsou pro stejného zákazníka. Když se zeptáte celkové částky prodejepro CustomerA je výsledek 31. Celkový prodej na místo je 12.75 pro Antwerpand 18.25 pro Brusel, i když údaje jsou pro stejného zákazníka. Pomocí SCDType 2 můžeme analyzovat naše data s historickými atributy.,

implementační metody

existuje několik metod pro načítání pomalu se měnícího rozměru datového skladu typu 2 ina. Můžete se rozhodnout pro čistý přístup T-SQL, buď s příkazy multipleT-SQL, nebo pomocí příkazu MERGE. Ten je vysvětlen v popisupomocí příkazu SQL Server MERGE ke zpracování typu 2 pomalu se měnící rozměry.

S SSIS, můžete použít vestavěný pomalu se měnící průvodce dimenzí, který canhandle více scénářů., Tento průvodce je popsán v tipsloadingu historických dat do datového skladu SQL Server a pomalu se měnící rozměry v integračních službách SQL Server. Downsideof tohoto průvodce je výkon: používá příkaz OLE DB pro everyupdate, což může mít za následek špatný výkon pro větší datové sady. Pokud provedete změny v datovém toku, abyste tyto problémy vyřešili, nemůžete průvodce spustit znovu, protože byste ztratili všechny změny.

poslední možností-kromě použití komponent 3rdParty-je vytvoření logiky SCD Type 2 sami v datovém toku, který popíšeme v další části.,

implementace v SSIS

řešení navržené v tomto tipu funguje pro jakoukoli verzi SSIS. Příklad zákaznické dimenze budeme sledovat, ale bylo přidáno další pole: atribut e-mailu. Neuchováváme historii e-mailových adres, takže anynová hodnota přepíše všechny ostatní hodnoty.

nejprve si přečteme data ze zdroje, pravděpodobně z prostředí stagingu. Při použití relačního zdroje můžete použít zdrojovou komponentu OLE DB s dotazem SQL pro čtení dat. Vyberte pouze sloupce, které skutečně potřebujete pro svůj rozměr. Počítáno je i zde., Vzhledem k tomu, že obvykle načítáte data z předchozího dne, ValidFrom je nastaven na datum včerejška. Pokud nemáte relační zdroj, můžete tento sloupec přidat pomocí odvozené kolony.

V dalším kroku provádíme vyhledávání proti dimenzi.Zde ověříme, zda jsou příchozí řádky buď vložkou nebo aktualizací.Pokud není nalezena žádná shoda, řádek je členem nové dimenze a musí být vložen.Pokud je nalezena shoda, člen dimenze již existuje a budeme potřebovat tocheck pro změny typu SCD 2., Pokud nemáte velmi velký rozměr, můžete použít plnou cache:

Konfigurovat vyhledávání transformace poslat non-odpovídající řádky na žádný zápas výstup. V SSIS 2005 tato možnost zatím neexistuje, takže je můžete použít buď chybový výstup, nebo nastavit transformaci ignorovat selhání andsplit se vloží a aktualizace pomocí podmíněného rozdělení.

v podokně připojení následující dotaz SQL načte náhradní klíč, obchodní klíč (CustomerName) a sloupce typu 2 SCD., Pro každého člena je načten pouze poslední řádek filtrováním pole ValidTo.

pole Umístění je přejmenováno na Location_OLD pro přehlednost. V podokně columns se shodujte s obchodním klíčem a vyberte všechny ostatní sloupce.

Nyní můžeme na plátno přidat cíl OLE DB. Tento cíl napíševšechny nové řádky do dimenze. Připojte vyhledávací výstup bez shody z Transformace vyhledávání do cíle.,

na podokně mapování mapujte sloupce datového toku se sloupci tabulky zobrazení.

sloupec SK_Customer je ponechán nezmapovaný, protože je to sloupec IDENTITY a jeho hodnoty jsou generovány databázovým motorem. Validto columnis také zůstal prázdný. Nové řádky nemají pro tento sloupec žádnou hodnotu.

v části 2 tohoto tipu budeme pokračovat v konfiguraci datového toku, kde zkontrolujeme, zda je řádek aktualizací typu 2 nebo ne.,

Další Kroky,
  • Pokud chcete vědět více o prováděcích pomalu mění rozměry inSSIS, můžete se podívat na následující tipy:
    • Pomocí SQL Server SLOUČENÍ Prohlášení k Procesu Typu 2 se Pomalu Mění Rozměry
    • Načítání Historických Dat do serveru SQL Server Datového Skladu
    • Rukojeť Pomalu Mění Rozměry v SQL Server Integration Services
  • můžete najít další vývoj SSIS tipy v tomto přehledu.,

Poslední aktualizace: 2018-08-09

O autorovi
Koen Verbeeck je BI profesionální, specializující se na Microsoft BI stack s zvláštní lásku pro SSIS.
Zobrazit všechny moje tipy

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *