Przenoszenie tabel zagnieżdżonych
Qlik Talend Data Integration obsługuje przenoszenie na tabelach bazy danych Oracle zawierających kolumny, które są tabelami zagnieżdżonymi lub zdefiniowanego typu. Aby włączyć tę funkcję, wybierz opcję Support nested tables (Obsługa zagnieżdżonych tabel) w ustawieniach łącznik.
Zadanie danych tworzy tabele docelowe z zagnieżdżonych tabel Oracle jako zwykłe tabele bez wymogu niepowtarzalności. Ponieważ najprawdopodobniej będzie konieczne połączenie tabel nadrzędnych z potomnymi, aby uzyskać znaczące dane, będzie należało ręcznie utworzyć nieunikatowy indeks na kolumnie NESTED_TABLE_ID w docelowej tabeli potomnej. Kolumna NESTED_TABLE_ID może zostać następnie użyta w klauzuli JOIN ON, razem z kolumną nadrzędną odpowiadającą nazwie tabeli potomnej. Ponadto utworzenie takiego indeksu zwiększy wydajność podczas aktualizacji/usuwania danych docelowej tabeli potomnej przez zadanie danych.
Zalecane jest skonfigurowanie zadania tak, aby się zatrzymywało po zakończeniu pełnego ładowania. Po zakończeniu pełnego ładowania ręcznie utwórz nieunikatowe indeksy dla wszystkich tabel potomnych przeniesione w bazie docelowej, a następnie wznów zadanie.
Jeśli przechwycona zagnieżdżona tabela zostanie dodana do istniejącej tabeli nadrzędnej (przechwyconej lub nieprzechwyconej), zadanie danych obsłuży ją poprawnie, ale nieunikatowy indeks dla odpowiedniej tabeli docelowej nie zostanie utworzony. W takim przypadku, jeśli docelowa tabela potomna stanie się bardzo duża, może to mieć negatywny wpływ na wydajność. W takim przypadku zalecane jest zatrzymanie zadania, utworzenie indeksu i wznowienie zadania. Przed wznowieniem zadania zalecamy jednak utworzenie widoków, które umożliwią spłaszczenie tabel przeniesione. Widoki te powinny zawierać instrukcje JOIN, które odpowiadają konkretnym potrzebom w zakresie spłaszczania, jak wyjaśniono w poniższym przykładzie.
Wymagania wstępne
Pamiętaj aby wykonać operację Przenieś na tabelach nadrzędnych dla wszystkich tabel zagnieżdżonych (przeniesione). Zarówno tabele nadrzędne (zawierające zagnieżdżoną kolumnę tabeli) jak i potomne (tj. zagnieżdżone) będą dostępne do wyboru w Qlik Talend Data Integration.
Obsługiwane typy tabel zagnieżdżonych
Obsługiwane są następujące typy tabel zagnieżdżonych:
- Typ danych
- Obiekt zdefiniowany przez użytkownika
Ograniczenia
- Obsługiwany jest tylko jeden poziom zagnieżdżania.
- Qlik Talend Data Integration nie sprawdza, czy dla przenoszenie wybrano zarówno tabele nadrzędne, jak i potomne. Innymi słowy, można wybrać tabelę nadrzędną bez potomnej i odwrotnie.
Jak są replikowane (przeniesione) tabele zagnieżdżone
Tabele nadrzędne i zagnieżdżone są replikowane (przeniesione) do bazy docelowej w następujący sposób:
-
Tabela nadrzędna jest tworzona w miejscu docelowym podobnie do źródła, gdzie każda zagnieżdżona kolumna jest zdefiniowana jako RAW(16). W każdym wierszu tabeli nadrzędnej kolumna ta zawiera tę samą wartość co odpowiednie wiersze zagnieżdżone tabeli podrzędnej w kolumnie NESTED_TABLE_ID.
- Tabela potomna jest tworzona identycznie jak źródło, ale z dodatkową kolumną NESTED_TABLE_ID, jak wspomniano wcześniej.
Przykład instrukcji JOIN
Załóżmy, że w źródle Oracle istnieją następujące definicje:
- CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
- CREATE TABLE my_parent_table (id NUMBER PRIMARY KEY, col1 my_tab_t) NESTED TABLE col1 STORE AS col1_tab;
W takim przypadku zadanie danych zazwyczaj utworzy dwie tabele docelowe, tak jak poniżej:
- CREATE TABLE my_parent_table (id NUMBER PRIMARY KEY, col1 RAW(16));
- CREATE TABLE col1_tab(nested_table_id RAW(16), column_value VARCHAR2(30));
Instrukcję JOIN spłaszczającą dwie tabele docelowe można zdefiniować następująco:
- Select id, column_value from my_parent_table LEFT OUTER JOIN col1_tab child ON child.nested_table_id = parent.col1;