EDW #7: Landing & XREF

https://xpil.eu/ZF8

Ten wpis nale偶y do serii wpis贸w po艣wi臋conych architekturze hurtowni danych.

Warstwy Landing oraz Cross Reference (w skr贸cie: XREF) id膮 zawsze w parze.

Dla dowolnej encji E w naszej hurtowni danych prawdziwe jest jedno z dw贸ch zda艅:

  1. E pochodzi z dok艂adnie jednego systemu 藕r贸d艂owego
  2. E pochodzi z wi臋cej ni偶 jednego systemu 藕r贸d艂owego

Warstwy Landing oraz XREF s膮 wykorzystywane w przypadku numer 2, a wi臋c w贸wczas, kiedy jaka艣 encja w naszej hurtowni pochodzi w kilku r贸偶nych system贸w 藕r贸d艂owych.

Za艂贸偶my dla przyk艂adu, 偶e dane o klientach (encja [Klient]) pochodz膮 zar贸wno z systemu finansowo-ksi臋gowego (kod: FIKS) jak te偶 z systemu zarz膮dzania relacjami z klientem (kod: CRM). Dane o dowolnie wybranym kliencie K mog膮 istnie膰 albo tylko w FIKS, albo tylko w CRM, albo w obydwu na raz.

Do DW chcemy za艂adowa膰 JEDEN rekord klienta K. Jak to zrobi膰?

W艂a艣nie za pomoc膮 warstw Landing / XREF.

Za艂贸偶my, 偶e mamy w Stage dwie tabele klient贸w:

  1. STG_FIKS_KLIENCI (ID, NAZWISKO, IMIE, NUMER_VAT, r贸偶ne inne kolumny...)
  2. STG_CRM_CLIENT_DATA (ID, NAME, SURNAME, VAT_NO, BIRTHDATE, r贸偶ne inne kolumny...)

Za艂贸偶my dodatkowo, 偶e w obydwu tabelach mamy dost臋pny jaki艣 klucz biznesowy wsp贸lny dla obydwu system贸w.

Spe艂nienie tego za艂o偶enia jest wymagane do poprawnego dzia艂ania warstw Landing / XREF. Czasami znalezienie wsp贸lnych atrybut贸w jednoznacznie identyfikuj膮cych rekordy po obu stronach jest czasoch艂onne, a czasem ich po prostu nie ma, i wtedy, jak mawiaj膮 Eskimosi, dupa zimna.

Kluczem tym mo偶e by膰 na przyk艂ad numer VAT. Opr贸cz tego chcemy te偶 za艂adowa膰 do DW nast臋puj膮ce kolumny: NAZWISKO, IMIE, DATA_URODZENIA.

W pierwszym kroku wype艂niamy warstw臋 Landing.

Najpierw tworzymy tabel臋 L_KLIENT

Prefix L oznacza warstw臋 Landing

Tabela L_KLIENT ma nast臋puj膮ce kolumny:

NR_VAT, NAZWISKO, IMIE, DATA_URODZENIA, CRM_ID, CRM_NAME, CRM_SURNAME, CRM_VAT_NO, CRM_BIRTHDATE, FIKS_ID, FIKS_NAZWISKO, FIKS_IMIE, FIKS_NUMER_VAT, SRC_SYSTEM_CODE, SRC_SYSTEM_ID

Czujny Czytelnik by膰 mo偶e ju偶 zauwa偶y艂, 偶e tabela L_KLIENT ma cztery zestawy kolumn:

Zestaw 1: NR_VAT, NAZWISKO, IMIE, DATA_URODZENIA - to kolumny, kt贸re chcemy uzyska膰 na wyj艣ciu ca艂ego procesu. Innymi s艂owy, docelowe atrybuty encji Klient

Zestaw 2: CRM_ID, CRM_NAME, CRM_SURNAME, CRM_VAT_NO, CRM_BIRTHDATE - to kolumny z tabeli STG_CRM_CLIENT_DATA (ale nie wszystkie, tylko te, kt贸rych potrzebujemy)

Zestaw 3: FIKS_ID, FIKS_NAZWISKO, FIKS_IMIE, FIKS_NUMER_VAT - to kolumny z tabeli STG_FIKS_KLIENCI.

Nazwy kolumn w zestawach 2 i 3 s膮 dodatkowo poprzedzone przedrostkami odpowiadaj膮cych im system贸w 藕r贸d艂owych - to na wypadek, gdyby kolumna o tej samej nazwie istnia艂a w obydwu tabelach Stage.

Zestaw 4: SRC_SYSTEM_CODE, SRC_SYSTEM_ID - kolumny oznaczaj膮ce system 藕r贸d艂owy, z kt贸rego dany rekord pochodzi (tak naprawd臋 wystarczy艂oby samo SRC_SYSTEM_ID, ale dla wygody programist贸w warto tu po艣wi臋ci膰 dodatkow膮 kolumn臋 na kod znakowy systemu 藕r贸d艂owego)

Wype艂niamy tabel臋 L_KLIENT danymi, w nast臋puj膮cy spos贸b:

  1. Kasujemy jej zawarto艣膰 do zera (TRUNCATE TABLE L_KLIENT)
  2. Wstawiamy do niej dane z tabeli STG_FIKS_KLIENCI, wype艂niaj膮c wszystkie kolumny z wyj膮tkiem kolumn z zestawu 2 (w kolumny z zestawu 1 wstawiamy odpowiednio warto艣ci z kolumn z zestawu 3 - a wi臋c mamy zduplikowane dane, ale tak ma by膰). W kolumny zestawu 4 wpisujemy 'FIKS' oraz 1 (zak艂adam, 偶e system FIKS ma ID=1 w tabeli SOURCE_SYSTEMS)
  3. Wstawiamy do niej dane z tabeli STG_CRM_CLIENT_DATA, wype艂niaj膮c wszystkie kolumny z wyj膮tkiem kolumn z zestawu 3 (w kolumny z zestawu 1 wstawiamy odpowiednio warto艣ci z kolumn z zestawu 2 - a wi臋c zn贸w mamy zduplikowane dane, jest ok). W kolumny zestawu 4 wpisujemy 'CRM' oraz 2 (zak艂adam, 偶e system CRM ma ID=2 w tabeli SOURCE_SYSTEMS)

W tym momencie mamy tabel臋 L_KLIENT wype艂nion膮 danymi o wszystkich klientach z obydwu system贸w (FIKS i CRM). Niekt贸rzy klienci powtarzaj膮 si臋, bo pochodz膮 z obu system贸w na raz.

Kolejnym krokiem jest wype艂nienie warstwy XREF.

Tworzymy tabel臋 X_KLIENT.

Prefiks X_ oznacza wartw臋 XREF - Cross Reference

Tabela X_KLIENT zawiera zestaw kolumn identyczny jak tabela L_KLIENT, z jednym, jedynym wyj膮tkiem: na samym pocz膮tku dodajemy tam kolumn臋 ID, kt贸ra b臋dzie identyfikatorem (kluczem) technicznym klienta w naszej DW.

Uwaga: kolumna ID nie jest kluczem w tabeli X_KLIENT. Warto艣膰 tej kolumny dopiero stanie si臋 kluczem w kolejnej warstwie DW.

Nast臋pnie kasujemy zawarto艣膰 tabeli X_KLIENT i wype艂niamy j膮 danymi z tabeli L_KLIENT w taki spos贸b, 偶e kopiujemy z niej wszystkie rekordy, a w kolumn臋 ID wstawiamy kolejne warto艣ci numeryczne ID, takie same dla rekord贸w maj膮cych wsp贸lny klucz biznesowy (w naszym przypadku: numer VAT).

Uwaga: opis powy偶szego kroku jest na razie niekompletny - pomin臋li艣my tu jeden wa偶ny element, wymagaj膮cy danych z warstwy EDW, kt贸rej jeszcze nie omawiali艣my. Pami臋tamy o tym i na razie zostawiamy, jak jest.

Po wype艂nieniu tabeli X_KLIENT danymi mamy w niej dok艂adnie tyle samo rekord贸w, co w tabeli L_KLIENT, oraz identyczne kolumny, z wyj膮tkiem dodatkowej ca艂kowitoliczbowej kolumny ID, kt贸ra ma r贸偶ne warto艣ci dla rekord贸w o r贸偶nych numerach VAT, a identyczne warto艣ci dla rekord贸w o identycznych numerach VAT.

W艂a艣nie dopasowali艣my do siebie dane o klientach z dw贸ch r贸偶nych system贸w 藕r贸d艂owych. Ka偶dy klient ma swoje w艂asne, unikalne ID, niezale偶ne od jakiegokolwiek identyfikatora technicznego w systemie 藕r贸d艂owym.

Je艣li chodzi o indeksy, to w tabeli X_ warto za艂o偶y膰 indeks unikalny na kolumnach odpowiadaj膮cych kluczowi biznesowemu w kolumnach z zestawu 1 (patrz wy偶ej), wraz z kolumn膮 SRC_SYSTEM_CODE (dzi臋ki temu zapewnimy unikalno艣膰 rekordom pochodz膮cym z wielu 藕r贸de艂).

Jeste艣my gotowi do wype艂nienia danymi kolejnej warstwy DW, ale o tym dopiero za tydzie艅.

https://xpil.eu/ZF8

Leave a Comment

Komentarze mile widziane.

Je偶eli chcesz do komentarza wstawi膰 kod, u偶yj sk艂adni:
[code]
tutaj wstaw sw贸j kod
[/code]

Je偶eli zrobisz liter贸wk臋 lub zmienisz zdanie, mo偶esz edytowa膰 komentarz po jego zatwierdzeniu.