: 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

Zobrazit všechny moje tipy