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.

Autor: xpil

Po czterdziestce. Żonaty. Dzieciaty. Komputerowiec. Krwiodawca. Emigrant. Rusofil. Lemofil. Sarkastyczny. Uparty. Mól książkowy. Ateista. Apolityczny. Nie oglądam TV. Uwielbiam matematykę. Walę prosto z mostu. Gram na paru instrumentach. Lubię planszówki. Słucham bluesa, poezji śpiewanej i kapel a'capella. || Kliknij tutaj po więcej szczegółów ||

Dodaj komentarz

Bądź pierwszy!

Powiadom o
avatar
wpDiscuz