Share This Post, Help Others, And Earn My Heartfelt Appreciation! :)

tMap pozwala na wykonywanie wielu operacji [ Talend Łączenie źródeł danych z tMap Join ] – możesz w nim łączyć źródła danych, filtrować rekordy, transformować dane oraz zarządzać ścieżkami wynikowymi. Komponent ten, w przeciwieństwie do tJoin umożliwiającego łączenie maksymalnie dwóch obiektów, pozwala na łączenie danych z wielu źródeł.

W tym szkoleniu pokaże:

  • jakie typu złączeń możesz wykonać w komponencie tMap,
  • jak łączyć źródła danych używając tMap,
  • jak stworzyć output dla rekordów, które nie spełniają warunków złączenia.

Typy złączeń danych w tMap -> Talend Łączenie źródeł danych z tMap Join

Typ złączenia

Komponent tMap pozwala na dwa typy złączeń: Inner Join oraz Left Outer Join. Przypomnijmy szybko o co w nich chodzi.

Jeżeli łączymy dwie tabele używając INNER JOIN, jako wynik dostaniemy tylko rekordy występujące w obu tabelach. Świetnie obrazuje to poniższy rysunek:

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Z kolei LEFT OUTER JOIN, znany też jako LEFT JOIN, jako wynik daje wszystkie rekordy występujące w tabeli A (pierwsza tabela, główna) oraz tylko te rekordy z tabeli B, które spełniają warunek złączenia. Spójrzmy na poniższy rysunek:

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Domyślne ustawienia złączeń

Talend DI podczas złączeń obiektów wykonywanych w komponencie tMap pozwala na skonfigurowanie dwóch ważnych parametrów: Lookup Model oraz Match Model.

Lookup Model domyślnie ustawiony jest jako Load once. Oznacza to, że przed wykonaniem pierwszego złączenia tabeli głównej (dla przykładu A) z inną tabelą (B), Talend zaczytuje wszystkie rekordy z tabeli B i przez cały czas wykonywania złączenia z tabelą A przechowuje je na dysku bądź w pamięci (w zależności od ustawień Store temp data). Tabela B zaczytywana jest tylko raz. Reload at each row oznacza, że tabela B będzie zaczytywana ponownie dla każdego złączenia z rekordem tabeli głównej.

Tego typu złączenia stosowane są jeśli tabela B jest aktualizowana w czasie rzeczywistym i chcemy łączyć tabele A z najnowszymi wersjami rekordów tabeli B bądź jeśli tabela B zawiera bardzo dużo rekordów, które nie powinny być przechowywane w pamięci ze względu na możliwość jej przepełnienia. Trzecim typem Lookup Model jest Reload at each row (cache), który jak wynika z jego nazwy, uniemożliwia nam przechowywanie zaczytanych danych na dysku. Wszystkie zaczytane rekordy przechowywane są w pamięci podręcznej i jeśli wystąpią jakieś zmiany w tabeli B, tylko one zostaną doładowane do pamięci.

Match Model domyślnie ustawiony jest jako Unique match, co oznacza, że jeśli dla warunku złączenia w tabeli B wystąpią duplikaty, jako output uzyskamy unikalny wynik i będzie to ostatni napotkany w tabeli rekord dla tego warunku złączenia. Można więc jego działanie nazwać Last match. First match jeśli spotka duplikaty w tabeli B, pobierze tylko pierwszy rekord. Natomiast All matches dopasowuje dla tabeli A , wszystkie możliwe złączenia z tabeli B. Podczas tego typu złączenia możemy więc uzyskać duplikaty. Dostępna jest jeszcze jedna opcja – All rows, która polega na wykonaniu iloczynu kartezjańskiego zbiorów. Wszystkie wiersze z tabeli B zostają połączone z wszystkimi rekordami tabeli głównej A.

Łączymy źródła danych – przykład

W przykładowym jobie połączymy dane o klientach (CUSTOMER_SRC) z poprzedniego szkolenia z danymi o organizacjach, które możesz pobrać poniżej:

Utwórz nowy proces w Talend  Data Integration i przenieś na płótno designera tabelę CUSTOMER_SRC utworzoną w poprzednim szkoleniu. Następnie, po utworzeniu na bazie obiektu ORGANIZATION, zaczytaj ją do repozytorium i także przeciągnij do designera. Dzięki przeciągnięciu obiektów z repozytorium, mamy już ustawione wszystkie parametry bazy danych oraz zapytania.

Następnie, dodaj na płótno komponent tMap i połącz go z obiektem CUSTOMER_SRC, która będzie naszą główną tabelą. Połącz także tabele ORGANIZATION jako źródło dla komponentu tMap. Proces powinien w tym kroku wyglądać następująco:

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Jako tabelę główną Talend zawsze oznacza tę, która jako pierwsza została podłączona do tMap’a. Druga i każda kolejna tabela będzie oznaczona jako lookup.

Zanim jeszcze ustawimy warunek naszego złączenia dodajmy dwa obiekty wyjściowe – tLogRow. Jeden z nich będzie wyświetlał dane połączone według naszego warunku, zaś drugi dane niepołączone. Ja swoje ścieżki nazwałam odpowiednio main oraz reject.

Ustawmy teraz komponent tMap, kliknij na niego podwójnie, aby wejść w ustawienia. Z pierwszej tabeli wybierz wiersz ORG_ID i przeciągnij go do tabeli, z którą się łączysz. U mnie główną tabelą jest CUSTOMER_SRC (row1), natomiast tabelą z którą wykonuję złączenie jest ORGANIZATION (row2). Jeśli chcesz możesz zmienić nazwę ścieżek (row1, row2) w ogólnym widoku procesu klikając na nią dwukrotnie). 

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Wejdź w ustawienia tMap Setting i wybierz Join Model, następnie zmień go na Inner Join.

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

W kolejny kroku przeciągnij wszystkie atrybuty z row1 oraz ORG_NAME z row2 na output main. W ustawieniach dla output reject , zmień Catch lookup inner join reject na true. Wiersze, które nie połączą się podczas INNER JOINa zostaną przeładowane ścieżką reject. Kliknij OK, aby wyjść z ustawień tMap’a.

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

tLogRow domyślnie wyświetla wszystkie rekordy w nowej linii , a kolumny są oddzielne znakiem „|”. Mając jako obiekt docelowy dwa komponenty tLogRow, może to być trochę kłopotliwe, żeby zobaczyć dla którego output’u należą jakie rekordy. Wynik będzie mniej więcej taki:

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Aby szybko zauważyć, które rekordy się nie połączyły z tabelą ORGANIZATION możemy zmienić ustawienia wyświetlania wyniku w tLogRow. W tym celu wybierz zakładkę Component View -> Mode -> Table

Talend DI Tutorial: Talend Łączenie źródeł danych z tMap Join - naucz się na 1 prostym przykładzie!
Talend Łączenie źródeł danych z tMap Join

Teraz wynik jest zdecydowanie bardziej czytelny.

Jeśli spodobał Ci się ten post to zostaw proszę komentarz poniżej lub udostępnij ten post na swoim Facebook’u, Twitter’ze, LinkedIn lub innej stronie z mediami społecznościowymi.
Dzięki!

How useful was this post?

Click on a star to rate it!

Average rating 4.9 / 5. Vote count: 54

No votes so far! Be the first to rate this post.

Subscribe
Powiadom o
guest
0 Comments
Inline Feedbacks
View all comments