Vai al contenuto principale Passa a contenuto complementare

Combinazione di tabelle con Join e Keep

L'operazione di unione utilizza due tabelle unendole in un'unica tabella. I record della tabella risultante sono combinazioni dei record presenti nelle tabelle originali, in modo che i due record che contribuiscono a qualsiasi combinazione data nella tabella risultante presentino un valore comune per uno o più campi altrettanto comuni, formando quella che può essere definita un'unione naturale. In licenza le unioni possono essere eseguite nello script, producendo tabelle logiche.

La logica di licenza non vede quindi le tabelle separate, ma il risultato dell'unione, ossia una sola tabella interna. In alcune circostanze, ciò si rivela necessario, anche se può presentare svantaggi.

  • Le tabelle caricate diventano spesso più grandi, rallentando licenza.
  • Alcune informazioni potrebbero andare perse: la frequenza (numero di record) all'interno della tabella originale potrebbe non essere più disponibile.

La funzionalità Keep, che ha l'effetto di ridurre una o entrambe le due tabelle all'intersezione dei dati della tabella prima della loro memorizzazione in licenza, è stata progettata per ridurre il numero dei casi in cui è necessario utilizzare unioni esplicite.

Nota informaticaIn questa documentazione il termine unione si riferisce di solito alle unioni precedenti alla creazione delle tabelle interne. L'associazione, effettuata dopo la creazione delle tabelle interne, è tuttavia essenzialmente un'unione.

Join

Il modo più semplice per creare un'unione è con il prefisso Join nello script, che unisce la tabella interna con un'altra tabella con nome o con l'ultima tabella creata in precedenza. L'unione sarà un'outer join, che crea tutte le possibili combinazioni di valori dalle due tabelle.

Esempio:  

LOAD a, b, c from table1.csv;

join LOAD a, d from table2.csv;

La tabella interna risultante presenta i campi a, b, c e d. Il numero di record differisce a seconda dei valori di campo delle due tabelle.

Nota informaticaI nomi dei campi da unire devono essere identici. Il numero di campi da unire è arbitrario. Di solito, le tabelle devono avere uno o più campi in comune. Nessun campo in comune rende il prodotto cartesiano delle tabelle. Sono possibili anche tutti i campi in comune, ma di solito non ha senso. A meno che nell'istruzione Join non sia specificato il nome di una tabella caricata in precedenza, il prefisso Join utilizza l'ultima tabella creata. L'ordine delle due istruzioni, pertanto, non è arbitrario.

Keep

Una delle principali funzioni di licenza è la sua capacità di generare associazioni tra tabelle invece di unirle, il che riduce lo spazio nella memoria, aumenta la velocità e offre grande flessibilità. La funzionalità keep è stata progettata per ridurre le situazioni in cui occorre utilizzare operazioni di unione esplicite.

Il prefisso Keep compreso tra due istruzioni LOAD o SELECT ha l'effetto di ridurre una o tutte e due le tabelle all'intersezione dei dati della tabella prima che vengano memorizzate in licenza. Il prefisso Keep deve sempre essere preceduto da una delle seguenti parole chiave: Inner, Left o Right. La selezione dei record dalle tabelle viene effettuata nello stesso modo di un'unione corrispondente. In ogni modo, le due tabelle non vengono unite e verranno memorizzate in . licenza come due tabelle separate.

Inner

I prefissi Join e Keep nel linguaggio dello script di licenza possono essere preceduti dal prefisso Inner.

Se viene utilizzato prima di Join, specifica che l'unione tra le due tabelle deve essere un'unione interna. La tabella risultante conterrà solo combinazioni fra le due tabelle con una serie di dati completa da tutte e due le parti.

Se viene utilizzato prima di Keep, specifica che le due tabelle devono essere ridotte alla loro intersezione comune prima di essere memorizzate in licenza.

Esempio:  

In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2:

Inner example tables, with one record appearing in both tables
Tabelle di origine di esempio Inner

Prima, si esegue Inner Join nelle tabelle, determinando VTable, contenente solo una riga, l'unico record esistente in entrambe le tabelle, con i dati combinati da entrambe le tabelle.

VTable:

SELECT * from Table1;

inner join SELECT * from Table2;

Inner Join example table, with the one record that appeared in both tables
Esempio Inner Join

Se si esegue invece Inner Keep, si avranno ancora due tabelle. Le due tabelle vengono ovviamente associate mediante il campo comune A.

VTab1:

SELECT * from Table1;

VTab2:

inner keep SELECT * from Table2;

Inner Keep example tables, both tables reduced to the one record that appeared in both tables
Esempio Inner Keep

Left

I prefissi Join e Keep nel linguaggio dello script di licenza possono essere preceduti dal prefisso left.

Se viene utilizzato prima di Join, specifica che l'unione tra le due tabelle deve essere un'unione a sinistra. La tabella risultante conterrà solo combinazioni fra le due tabelle con una serie di dati completa proveniente dalla prima tabella.

Se viene utilizzato prima di Keep, specifica che la seconda tabella deve essere ridotta alla sua intersezione comune con la prima tabella prima di essere memorizzata in licenza.

Esempio:  

In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2:

Left example tables, with one record that appears in both tables
Tabelle di origine di esempio Left

Prima, si esegue Left Join nelle tabelle, determinando VTable, contenente tutte le righe di Table1, combinata con i campi delle righe corrispondenti in Table2.

VTable:

SELECT * from Table1;

left join SELECT * from Table2;

Left Join example table, with all records from the first table and the one record that appeared in both tables added from the second table
Esempio Left Join

Se si esegue invece Left Keep, si avranno ancora due tabelle. Le due tabelle vengono ovviamente associate mediante il campo comune A.

VTab1:

SELECT * from Table1;

VTab2:

left keep SELECT * from Table2;

Left Keep example tables, with the first table unchanged and the second table containing only the one record that appeared in both tables
Esempio Left Keep

Right

I prefissi Join e Keep nel linguaggio dello script di licenza possono essere preceduti dal prefisso right.

Se viene utilizzato prima di Join, specifica che l'unione tra le due tabelle dovrà essere un'unione a destra. La tabella risultante contiene combinazioni fra le due tabelle con una serie di dati completa dalla seconda tabella.

Se viene utilizzato prima di Keep, specifica che la prima tabella deve essere ridotta alla sua intersezione comune con la seconda tabella prima che venga memorizzata in licenza.

Esempio:  

In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2:

Right example tables, with one record that appears in both tables
Tabelle di origine di esempio Right

Prima, si esegue Right Join nelle tabelle, determinando VTable, contenente tutte le righe di Table2, combinata con i campi delle righe corrispondenti in Table1.

VTable:

SELECT * from Table1;

right join SELECT * from Table2;

Right Join example table, with all records from the second table and the one record that appeared in both tables added from the first table
Esempio Right Join

Se si esegue invece Right Keep, si avranno ancora due tabelle. Le due tabelle vengono ovviamente associate mediante il campo comune A.

VTab1:

SELECT * from Table1;

VTab2:

right keep SELECT * from Table2;

Right Keep example tables, with the second table unchanged and the first table containing only the one record that appeared in both tables
Esempio Right Keep

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!

Partecipa al programma Analytics Modernization

Remove banner from view

Modernizza senza compromettere le tue preziose app QlikView con il programma Analytics Modernization. Fare clic qui per maggiori informazioni o per contattarci: ampquestions@qlik.com