Tabelle nidificate Spostamento
Qlik Talend Data Integration supporta l'operazione spostamento delle tabelle Oracle contenenti colonne che sono tabelle nidificate o tipi definiti. Per attivare questa funzionalità, selezionare l'opzione Supporta tabelle nidificate nelle impostazioni del connettore.
L'attività dati crea le tabelle di destinazione delle tabelle nidificate Oracle come tabelle normali senza vincolo di unicità. Poiché molto probabilmente sarà necessario unire le tabelle padre e figlio per ottenere dati significativi, è importante creare manualmente un indice non univoco sulla colonna NESTED_TABLE_ID nella tabella figlio di destinazione. La colonna NESTED_TABLE_ID può quindi essere utilizzata nella clausola JOIN ON, insieme alla colonna genitore corrispondente al nome della tabella figlio. Inoltre, la creazione di un indice di questo tipo migliorerà le prestazioni quando i dati della tabella figlio di destinazione vengono aggiornati/eliminati dall'attività dati.
Si consiglia di configurare l'attività in modo che si interrompa al termine del Caricamento completo. Al termine del Caricamento completo, creare manualmente gli indici non univoci per tutte le tabelle figlio spostato sulla destinazione, quindi riprendere l'attività.
Se una tabella nidificata acquisita viene aggiunta a una tabella padre esistente (acquisita o meno), l'attività dati la gestirà correttamente, ma l'indice non univoco per la tabella di destinazione corrispondente non verrà creato. Si noti che in questo caso, se la tabella figlio di destinazione diventa estremamente grande, le prestazioni potrebbero risentirne. In questo caso, si consiglia di interrompere l'attività, creare l'indice e quindi riprendere l'attività. Prima di riprendere l'attività, tuttavia, si consiglia di creare delle visualizzazioni che consentano di appiattire le tabelle spostato. Queste visualizzazioni devono contenere istruzioni JOIN che corrispondono alle specifiche esigenze di appiattimento, come spiegato nell'esempio seguente.
Prerequisiti
Assicurarsi di avere tabelle padre Sposta per tutte le tabelle nidificate spostato. Sia le tabelle padre (le tabelle che contengono la colonna della tabella nidificata) che le tabelle figlio (cioè nidificate) saranno disponibili per la selezione in Qlik Talend Data Integration.
Tipi di tabella nidificata supportati
Sono supportati i seguenti tipi di tabella nidificata:
- Tipo dati
- Oggetto definito dall'utente
Limitazioni
- È supportato un solo livello di nidificazione.
- Qlik Talend Data Integration non verifica che sia la tabella padre che quella figlio siano selezionate per spostamento. In altre parole, è possibile selezionare una tabella padre senza un figlio e viceversa.
Come vengono spostato le tabelle nidificate
Le tabelle padre e nidificate vengono spostato sulla destinazione come segue:
-
La tabella padre viene creata sulla destinazione in modo simile all'origine, dove ogni colonna nidificata è definita come RAW(16). In ogni riga della tabella padre, questa colonna conterrà lo stesso valore delle righe nidificate della tabella figlio corrispondente nella colonna NESTED_TABLE_ID.
- La tabella figlio viene creata in modo identico all'origine, ma con una colonna NESTED_TABLE_ID aggiuntiva, come già detto.
Esempio di istruzione JOIN
Supponiamo che nell'origine Oracle siano presenti le seguenti definizioni:
- 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;
In questo caso, l'attività dati di solito crea due tabelle di destinazione, come questa:
- 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));
L'istruzione JOIN per appiattire le due tabelle di destinazione può essere definita come segue:
- Select id, column_value from my_parent_table LEFT OUTER JOIN col1_tab child ON child.nested_table_id = parent.col1;