Crosstable
Il prefisso di caricamento crosstable viene utilizzato per trasporre i dati strutturati in “tabella incrociata” o in "tabella pivot". I dati strutturati in questo modo si trovano comunemente quando si lavora con le sorgenti dei fogli di calcolo. L'output e lo scopo del prefisso di caricamento crosstable è di trasporre tali strutture nell'equivalente di una normale tabella in un formato a colonne, poiché questa struttura è generalmente più adatta per l'analisi in Qlik Sense.
Sintassi:
crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )
Argomento | Descrizione |
---|---|
attribute field name | Il nome del campo di output desiderato che descrive la dimensione orientata orizzontalmente da trasporre (la riga di intestazione). |
data field name |
Il nome del campo di output desiderato che descrive i dati orientati orizzontalmente della dimensione da trasporre (ma matrice dei valori di dati sotto la riga dell'intestazione). |
n |
Il numero di campi qualificatori, o le dimensioni invariate, che precedono la tabella da trasformare in un formato generico. Il valore predefinito è 1. |
Questa funzione di script è correlata alle funzioni seguenti:
Funzione | Interazione |
---|---|
Generic | Un prefisso del carico di trasformazione che prende un set di dati strutturati entity-attribute-value e lo trasforma nella struttura di una normale tabella relazionale, separando ogni attributo rilevato in un nuovo campo o colonna di dati. |
Esempio 1 – Trasformazione dei dati di vendita pivot (semplice)
Panoramica
Aprire l'Editor caricamento dati e aggiungere il primo script di caricamento di seguito in una nuova scheda.
Il primo script di caricamento contiene un set di dati a cui verrà successivamente applicato il prefisso dello script crosstable, con la sezione che applica crosstable con commenti. Ciò significa che la sintassi dei commenti è stata utilizzata per disabilitare questa sezione nello script di caricamento.
Il secondo script di caricamento è uguale al primo, ma con l'applicazione di crosstable senza commenti (abilitato rimuovendo la sintassi del commento). Gli script vengono mostrati in questo modo per evidenziare il valore di questa funzione di script nella trasformazione dei dati.
Primo script di caricamento (funzione non applicata)
tmpData:
//Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
//Final:
//Load Product,
//Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
//Sales
//Resident tmpData;
//Drop Table tmpData;
Per ulteriori informazioni sull'utilizzo di caricamenti inline, vedere Caricamento inline.
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
Product
-
Jan 2021
-
Feb 2021
-
Mar 2021
-
Apr 2021
-
May 2021
-
Jun 2021
Prodotto | Gen 2021 | Feb 2021 | Mar 2021 | Apr 2021 | Mag 2021 | Giu 2021 |
---|---|---|---|---|---|---|
A | 100 | 98 | 103 | 63 | 108 | 82 |
B | 284 | 279 | 297 | 305 | 294 | 292 |
C | 50 | 53 | 50 | 54 | 49 | 51 |
Questo script consente la creazione di una tabella incrociata con una colonna per ogni mese e una riga per prodotto. Nel suo formato attuale, questi dati non sono facili da analizzare. Sarebbe preferibile disporre di tutti i numeri in un campo e tutti i mesi in un altro, in una tabella a tre colonne. La sezione successiva spiega come eseguire questa trasformazione nella tabella incrociata.
Secondo script di caricamento (funzione non applicata)
Cancellare i commenti nello script rimuovendo //. Lo script di caricamento dovrebbe avere l'aspetto seguente:
tmpData:
Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
Final:
Load Product,
Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
Sales
Resident tmpData;
Drop Table tmpData;
Per ulteriori informazioni sull'utilizzo di caricamenti inline, vedere Caricamento inline.
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
Product
-
Month
-
Sales
Prodotto | Mese | Vendite |
---|---|---|
A | Jan 2021 | 100 |
A | Feb 2021 | 98 |
A | Mar 2021 | 103 |
A | Apr 2021 | 63 |
A | May 2021 | 108 |
A | Jun 2021 | 82 |
B | Jan 2021 | 284 |
B | Feb 2021 | 279 |
B | Mar 2021 | 297 |
B | Apr 2021 | 305 |
B | May 2021 | 294 |
B | Jun 2021 | 292 |
C | Jan 2021 | 50 |
C | Feb 2021 | 53 |
C | Mar 2021 | 50 |
C | Apr 2021 | 54 |
C | May 2021 | 49 |
C | Jun 2021 | 51 |
Una volta applicato il prefisso dello script, la tabella incrociata viene trasformata in una tabella lineare con una colonna per il valore Month e un'altra per Sales. Ciò migliora la leggibilità dei dati.
Esempio 2 – Trasformazione dei dati sugli obiettivi di vendita pivot in una tabella con struttura verticale (livello intermedio)
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
Un set di dati che viene caricato in una tabella denominata Destinazione.
-
Il prefisso di caricamento crosstable, che traspone i nomi degli agenti dedicati alle vendite pivot in un campo a sé stante con l'etichetta Sales Person.
-
I dati degli obiettivi di vendita associati, sono strutturati in un campo denominato Target.
Script di caricamento
SalesTargets:
CROSSTABLE([Sales Person],Target,1)
LOAD
*
INLINE [
Area, Lisa, James, Sharon
APAC, 1500, 1750, 1850
EMEA, 1350, 950, 2050
NA, 1800, 1200, 1350
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
Area
-
Sales Person
Aggiungere questa misura:
=Sum(Target)
Area | Venditore | =Sum(Target) |
---|---|---|
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
N/D | James | 1200 |
N/D | Lisa | 1800 |
N/D | Sharon | 1350 |
Se si desidera replicare la visualizzazione dei dati come tabella pivot di input, è possibile creare una tabella pivot equivalente in un foglio.
Procedere come indicato di seguito:
- Copiare e incollare la tabella appena creata nel foglio.
- Trascinare l'oggetto grafico Tabella pivot sopra la copia della tabella appena creata. Selezionare Converti.
- Fare clic su Termina modifica.
- Trascinare il campo Sales Person dalla casella della colonna verticale alla casella della colonna orizzontale.
La tabella seguente mostra i dati nella forma della tabella iniziale, come è visualizzato in Qlik Sense:
Area | Venditore | =Sum(Target) |
---|---|---|
Totali | - | 13800 |
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
N/D | James | 1200 |
N/D | Lisa | 1800 |
N/D | Sharon | 1350 |
La tabella pivot equivalente è simile a quella seguente, con la colonna per il nome di ogni dipendente addetto alle vendite contenuta all'interno della riga più grande per Sales Person:
Area | James | Lisa | Sharon |
---|---|---|---|
APAC | 1750 | 1500 | 1850 |
EMEA | 950 | 1350 | 2050 |
N/D | 1350 | 1350 | 1350 |
Esempio 3 – Trasformazione dei dati e degli obiettivi di vendita pivot in una tabella con struttura verticale (avanzata)
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
Un set di dati che rappresenta i dati sulle vendite e sugli obiettivi, organizzati per area e mese dell'anno. Questo viene caricato in una tabella denominata SalesAndTargets.
-
Il prefisso di caricamento crosstable. Questo viene utilizzato per annullare il pivot della dimensione Month Year in un campo dedicato, nonché per trasporre la matrice delle vendite e degli importi target in un campo dedicato chiamato Amount.
-
Conversione del campo Month Year da testo in una data corretta, utilizzando la funzione di conversione text-to-date date#. Il campo Month Year convertito in data viene unito nuovamente alla tabella SalesAndTarget tramite un prefisso di caricamento Join.
Script di caricamento
SalesAndTargets:
CROSSTABLE(MonthYearAsText,Amount,2)
LOAD
*
INLINE [
Area Type Jan-22 Feb-22 Mar-22 Apr-22 May-22 Jun-22 Jul-22 Aug-22 Sep-22 Oct-22 Nov-22 Dec-22
APAC Target 425 425 425 425 425 425 425 425 425 425 425 425
APAC Actual 435 434 397 404 458 447 413 458 385 421 448 397
EMEA Target 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5
EMEA Actual 363.5 359.5 337.5 361.5 341.5 337.5 379.5 352.5 327.5 337.5 360.5 334.5
NA Target 375 375 375 375 375 375 375 375 375 375 375 375
NA Actual 378 415 363 356 403 343 401 365 393 340 360 405
] (delimiter is '\t');
tmp:
LOAD DISTINCT MonthYearAsText,date#(MonthYearAsText,'MMM-YY') AS [Month Year]
RESIDENT SalesAndTargets;
JOIN (SalesAndTargets)
LOAD * RESIDENT tmp;
DROP TABLE tmp;
DROP FIELD MonthYearAsText;
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
Area
-
Month Year
Creare le seguenti misure, con l'etichetta Actual:
=Sum({<Type={'Actual'}>} Amount)
Inoltre, creare questa misura, con l'etichetta Target:
=Sum({<Type={'Target'}>} Amount)
Area | Anno mese | Effettivo | Destinazione |
---|---|---|---|
APAC | Gen-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | Mag-22 | 458 | 425 |
APAC | Giu-22 | 447 | 425 |
APAC | Lug-22 | 413 | 425 |
APAC | Ago-22 | 458 | 425 |
APAC | Set-22 | 385 | 425 |
APAC | Ott-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dic-22 | 397 | 425 |
EMEA | Gen-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
Se si desidera replicare la visualizzazione dei dati come tabella pivot di input, è possibile creare una tabella pivot equivalente in un foglio.
Procedere come indicato di seguito:
- Copiare e incollare la tabella appena creata nel foglio.
- Trascinare l'oggetto grafico Tabella pivot sopra la copia della tabella appena creata. Selezionare Converti.
- Fare clic su Termina modifica.
- Trascinare il campo Month Year dalla casella della colonna verticale alla casella della colonna orizzontale.
- Trascinare l'elemento Values dalla casella della colonna verticale alla casella della colonna orizzontale.
La tabella seguente mostra i dati nella forma della tabella iniziale, come è visualizzato in Qlik Sense:
Area | Anno mese | Effettivo | Destinazione |
---|---|---|---|
Totali | - | 13812 | 13950 |
APAC | Gen-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | Mag-22 | 458 | 425 |
APAC | Giu-22 | 447 | 425 |
APAC | Lug-22 | 413 | 425 |
APAC | Ago-22 | 458 | 425 |
APAC | Set-22 | 385 | 425 |
APAC | Ott-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dic-22 | 397 | 425 |
EMEA | Gen-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
La tabella pivot equivalente è simile a quella seguente, con la colonna per ogni mese dell'anno contenuta all'interno della riga più grande per Month Year:
Area (valori) | Gen-22 | Feb-22 | Mar-22 | Apr-22 | Mag-22 | Giu-22 | Lug-22 | Ago-22 | Set-22 | Ott-22 | Nov-22 | Dic-22 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
APAC - Effettivo | 435 | 434 | 397 | 404 | 458 | 447 | 413 | 458 | 385 | 421 | 448 | 397 |
APAC - Destinazione | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 |
EMEA - Effettivo | 363.5 | 359.5 | 337.5 | 361.5 | 341.5 | 337.5 | 379.5 | 352.5 | 327.5 | 337.5 | 360.5 | 334.5 |
EMEA - Destinazione | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 |
N/D - Effettivo | 378 | 415 | 363 | 356 | 403 | 343 | 401 | 365 | 393 | 340 | 360 | 405 |
N/D - Destinazione | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 |