Utilizzo delle tabelle incrociate nello script di caricamento dei dati
Una tabella incrociata è un tipo comune di tabella contenente una matrice di valori tra due elenchi ortogonali di dati di intestazione. Generalmente non è il formato dati ottimale se si desidera associare i dati ad altre tabelle di dati.
Questo argomento descrive come trasformare tramite UnPivot una tabella incrociata, ossia trasporne parti in righe, utilizzando il prefisso crosstable per un'istruzione LOAD nello script di caricamento dei dati.
UnPivot di una tabella incrociata con una colonna di qualifica
Una tabella incrociata è spesso preceduta da un certo numero di colonne di qualifica, che devono essere lette in modo diretto. In questo caso vi è una colonna di qualifica, Year, e una matrice di dati sulle vendite per mese.
Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|
2008 | 45 | 65 | 78 | 12 | 78 | 22 |
2009 | 11 | 23 | 22 | 22 | 45 | 85 |
2010 | 65 | 56 | 22 | 79 | 12 | 56 |
2011 | 45 | 24 | 32 | 78 | 55 | 15 |
2012 | 45 | 56 | 35 | 78 | 68 | 82 |
Se la tabella viene semplicemente caricata in Qlik Sense, il risultato sarà un campo per Year e un campo per ciascun mese. In genere, ciò non corrisponde al risultato desiderato. È probabilmente preferibile generare tre campi:
- La colonna di qualifica, in questo caso Year, evidenziata in verde nella tabella precedente.
- Il campo attributo, che in questo caso è rappresentato dai nomi dei mesi Jan - Jun, evidenziato in giallo. Questo campo può essere giustamente denominato Month.
- I valori della matrice dei dati, evidenziati in blu. In questo caso contiene i dati sulle vendite, quindi può essere denominato Sales.
Ciò può essere ottenuto aggiungendo al prefisso crosstable l'istruzione LOAD o SELECT, ad esempio:
crosstable (Month, Sales) LOAD * from ex1.xlsx;
Ciò crea la seguente tabella in Qlik Sense:
Year | Month | Sales |
---|---|---|
2008 | Jan | 45 |
2008 | Feb | 65 |
2008 | Mar | 78 |
2008 | Apr | 12 |
2008 | May | 78 |
2008 | Jun | 22 |
2009 | Jan | 11 |
2009 | Feb | 23 |
... | ... | ... |
UnPivot di una tabella incrociata con due colonne di qualifica
In questo caso vi sono due colonne di qualifica a sinistra, seguite dalle colonne della matrice.
Salesman | Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|---|
A | 2008 | 45 | 65 | 78 | 12 | 78 | 22 |
A | 2009 | 11 | 23 | 22 | 22 | 45 | 85 |
A | 2010 | 65 | 56 | 22 | 79 | 12 | 56 |
A | 2011 | 45 | 24 | 32 | 78 | 55 | 15 |
A | 2012 | 45 | 56 | 35 | 78 | 68 | 82 |
B | 2008 | 57 | 77 | 90 | 24 | 90 | 34 |
B | 2009 | 23 | 35 | 34 | 34 | 57 | 97 |
B | 2010 | 77 | 68 | 34 | 91 | 24 | 68 |
B | 2011 | 57 | 36 | 44 | 90 | 67 | 27 |
B | 2012 | 57 | 68 | 47 | 90 | 80 | 94 |
Il numero di colonne di qualifica può essere indicato come il terzo parametro del prefisso crosstable come segue:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
Questo crea il seguente risultato in Qlik Sense:
Salesman | Year | Month | Sales |
---|---|---|---|
A | 2008 | Jan | 45 |
A | 2008 | Feb | 65 |
A | 2008 | Mar | 78 |
A | 2008 | Apr | 12 |
A | 2008 | May | 78 |
A | 2008 | Jun | 22 |
A | 2009 | Jan | 11 |
A | 2009 | Feb | 23 |
... | ... | ... | ... |