Magia mapowania

Dziś pomarudzę trochę w temacie ODI.

ODI, o czym z pewnością wszyscy doskonale wiedzą, to narzędzie do ELT. ELT z kolei to taki jakby ETL tylko ma L i T zamienione miejscami.

Na razie wszystko jasne…

Tak czy siak, nadziałem się niedawno na interesujący błąd w ODI, który dziś opiszę.

Przez “interesujący” rozumiem tak naprawdę “interesujący dla garstki popaprańców nie mających nic lepszego do roboty tylko oglądanie błędów ODI”.

Jak każde narzędzie do pompowania danych z miasta A do miasta B, ODI umożliwia mapowanie kolumn źródłowych na kolumny docelowe. Niestety, w odróżnieniu od takiego na przykład SSIS, tutaj nie mamy możliwości zadania dowolnego zapytania źródłowego w postaci SQL, i nawet najbardziej złożoną logikę musimy zaimplementować na piechotę, przeciągając tabele i tworząc wszystkie JOIN-y, filtry i formuły sposobem myszowym. Można to oczywiście w niektórych przypadkach obejść zapisując zapytanie SQL u źródełka w postaci widoku, ale to jednak nie to samo, bo wymaga specjalnych uprawnień po stronie systemu źródłowego, których czasem nie mamy.

Tak czy siak, miałem niedawno całkiem rozłożystego pająka z dziesięciu tabel, z czego dwie to były typowe przelotki, mapujące identyfikatory rekordów źródłowych na docelowe. Z jakichś bliżej niewyjaśnionych przyczyn w pewnym momencie ODI zaczęło generować JOIN-y dla tych tabel w sposób nieprawidłowy. Załóżmy, że przelotka P1 linkuje się po prawej stronie z tabelą T1 po kolumnach P1.C11 = T1.C12, a przelotka P2 z tabelą T2: P2.C21 = T2.C22. Tak to wyglądało na obrazku, jednak wygenerowany kod SQL zamieniał kolumny “na krzyż”, a więc wyglądał o tak: P1.C11 = T1.C22 oraz P2.C21 = T2.C12. Oczywiście w momencie wykonywania całość szła w maliny z powodu nieistniejących kolumn (w tabeli T1 nie ma kolumny C22 i na odwrót), i nijak nie szło wyjaśnić temu upartemu kawałkowi złomu, że robi na krzyż.

Rozwiązanie okazało się rzecz jasna proste: należało skasować JOIN-y między P1 a T1 oraz między P2 a T2, a następnie utworzyć je od nowa. Kolega, który się w tym na początku babrał, nie wpadł na tak oczywisty pomysł i wezwał mnie awaryjnie do pomocy. Mi się udało wpaść na rozwiązanie całkiem przypadkiem, ale udawałem, że to przecież oczywiste i znów wyszło na to, że jestem guru 🙂 Grunt to umieć się sprzedać…

No dobra, najciekawsze już za nami. Jeszcze tylko kawał i kończymy:

Prawdziwy macho nie je miodu. Prawdziwy macho żuje pszczoły.


Liczba słów w tym wpisie: 471

Sprawdź też

Siedem tygodni, czyli rzecz o szukaniu pracy w czasach zarazy

Blog mi ostatnio zwolnił do ślimaczego tempa. Trochę dlatego, że postanowiłem sobie zrobić przerwę od …

Pchełki Powershell: odzyskujemy klucz aktywacyjny do Windows 10

Niedawno zachciało mi się na jednym z domowych laptopów przetestować Docker for Windows. Niektóre opcje …

Zapisz się
Powiadom o
guest
0 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze
0
Zapraszam do skomentowania wpisu.x
()
x