Magia mapowania

https://xpil.eu/o8EGX

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.

https://xpil.eu/o8EGX

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.