Vai al contenuto principale Passa a contenuto complementare

Utilizzo del mapping come alternativa all'unione

Il prefisso Join in Qlik Sense è un metodo efficace per la combinazione di più tabelle dati nel modello dati.

Uno dei suoi svantaggi è che le dimensioni delle tabelle combinate possono diventare eccessive creando problemi di prestazioni. Una soluzione alternativa a Join nei casi in cui occorra ricercare un unico valore in un'altra tabella è quella di utilizzare il mapping. Ciò evita di dover caricare dati superflui che rallentano i calcoli e possono creare errori di calcolo, dato che le unioni possono modificare il numero di record nelle tabelle.

Una tabella di mapping è composta da due colonne; un campo di confronto (input) e un campo con il valore del mapping (output).

In questo esempio, occorre presentare una tabella di ordini (Orders) ed è necessario conoscere i paesi dei clienti, memorizzati nella tabella dei clienti (Customers).

Tabella dati Orders
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Tabella dati Customers
CustomerID Nome Country ...
1 DataSales Spain ...
2 BusinessCorp Italy ...
3 TechCo Germany ...
4 Mobecho France ...

Per poter ricercare il paese (Country) di un cliente, occorre una tabella di mapping come quella seguente:

Tabella di mapping
CustomerID Country
1 Spain
2 Italy
3 Germany
4 France

La tabella di mapping, denominata MapCustomerIDtoCountry, viene definita nello script nel modo seguente:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

Il passaggio successivo è quello di applicare il mapping mediante la funzione ApplyMap durante il caricamento della tabella dell'ordine:

Orders: LOAD *, ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country From Orders ;

Il terzo parametro della funzione ApplyMap viene utilizzato per definire i valori da restituire quando il valore non è stato trovato nella tabella di mapping, in questo caso Null().

La tabella risultante avrà l'aspetto seguente:

Tabella risultante
OrderID OrderDate ShipperID Freight CustomerID Country
12987 2007-12-01 1 27 3 Germany
12988 2007-12-01 1 65 4 France
12989 2007-12-02 2 32 2 Italy
12990 2007-12-03 1 76 3 Germany

Ulteriori informazioni

 

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!