Combinazione di tabelle con Join e Keep
L'operazione di unione utilizza due tabelle e le unisce in una. 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 Qlik Sense le unioni possono essere eseguite nello script, producendo tabelle logiche.
È possibile unire le tabelle già presenti nello script. La logica di Qlik Sense 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 Qlik Sense.
- 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 Qlik Sense, è stata progettata per ridurre il numero dei casi in cui è necessario utilizzare unioni esplicite.
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'unione esterna, che crea tutte le possibili combinazioni di valori dalle due tabelle.
Esempio:
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.
Per ulteriori informazioni, vedere Join.
Utilizzo di Join
Il prefisso Join esplicito nel linguaggio dello script di Qlik Sense consente di eseguire un'unione completa delle due tabelle. Il risultato è una sola tabella. Queste unioni possono spesso comportare tabelle molto grandi.
Procedere come indicato di seguito:
- Aprire l'app Advanced Scripting Tutorial.
- Aggiungere una nuova sezione dello script nell'editor caricamento dati.
- Richiamare la sezione Transactions.
-
Nel menu a destra, in DataFiles, fare clic su Seleziona dati.
- Caricare e selezionare Transactions.csv.
- Nella finestra Seleziona dati da, fare clic su Inserisci script.
- Caricare e selezionare Salesman.xlsx.
- Nella finestra Seleziona dati da, fare clic su Inserisci script.
- Fare clic su Carica dati.
- Aprire il sistema di visualizzazione modello dati. Il modello dati ha l'aspetto seguente:
Lo script avrà questo aspetto:
Tuttavia la separazione delle tabelle Transactions e Salesman potrebbe non essere il risultato richiesto. Una soluzione migliore potrebbe essere quella di unire le due tabelle.
Procedere come indicato di seguito:
- Per impostare un nome per la tabella unita, aggiungere la riga seguente sopra la prima istruzione LOAD:
- Per unire le tabelle Transactions e Salesman, sopra la seconda istruzione LOAD aggiungere la riga seguente:
- Fare clic su Carica dati.
- Aprire il sistema di visualizzazione modello dati. Il modello dati ha l'aspetto seguente:
Transactions:
Join(Transactions)
Lo script avrà questo aspetto:
Transactions:
LOAD
"Transaction ID",
"Salesman ID",
Product,
"Serial No",
"ID Customer",
"List Price",
"Gross Margin"
FROM [lib://DataFiles/Transactions.csv]
(txt, codepage is 28591, embedded labels, delimiter is ',', msq);
Join(Transactions)
LOAD
"Salesman ID",
Salesman,
"Distributor ID"
FROM [lib://DataFiles/Salesman.xlsx]
(ooxml, embedded labels, table is Salesman);
Tutti i campi delle tabelle Transactions e Salesman risultano ora uniti in un'unica tabella Transactions.
Keep
Una delle principali funzioni di Qlik Sense è 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 riduce una o tutte e due le tabelle all'intersezione dei dati della tabella prima che vengano memorizzate in Qlik Sense. 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 . Qlik Sense come due tabelle separate.
Per ulteriori informazioni, vedere Keep.
Inner
I prefissi Join e Keep nello script di caricamento dei dati 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 Qlik Sense.
Esempio:
In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2.
Notare che questi sono solo esempi. Non sono disponibili esercizi accompagnatori da completare in Qlik Sense.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Inner Join
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.
A | B | C |
---|---|---|
1 | aa | xx |
Inner Keep
Se invece si esegue Inner Keep, avremo ancora due tabelle. Le due tabelle vengono associate mediante il campo comune A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
Per ulteriori informazioni, vedere Inner.
Left
I prefissi Join e Keep nello script di caricamento dei dati 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 Qlik Sense.
Esempio:
In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Prima, si esegue Left Join nelle tabelle, determinando VTable, contenente tutte le righe di Table1, combinata con i campi delle righe corrispondenti in Table2.
A | B | C |
---|---|---|
1 | aa | xx |
2 | cc | - |
3 | ee | - |
Se invece si esegue Left Keep, avremo ancora due tabelle. Le due tabelle vengono associate mediante il campo comune A.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
Per ulteriori informazioni, vedere Left.
Right
I prefissi Join e Keep nel linguaggio dello script di Qlik Sense possono essere preceduti dal prefisso right.
Se viene utilizzato prima di Join, specifica che l'unione tra le due tabelle deve essere un Right Join. 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 Qlik Sense.
Esempio:
In questi esempi vengono utilizzate le tabelle di origine Table1 e Table2.
A | B |
---|---|
1 | aa |
2 | cc |
3 | ee |
A | C |
---|---|
1 | xx |
4 | yy |
Prima, si esegue Right Join nelle tabelle, determinando VTable, contenente tutte le righe di Table2, combinata con i campi delle righe corrispondenti in Table1.
A | B | C |
---|---|---|
1 | aa | xx |
4 | - | yy |
Se invece si esegue Right Keep, avremo ancora due tabelle. Le due tabelle vengono associate mediante il campo comune A.
A | B |
---|---|
1 | aa |
A | C |
---|---|
1 | xx |
4 | yy |
Per ulteriori informazioni, vedere Right.