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
OrderIDOrderDateShipperIDFreightCustomerID
129872007-12-011273
129882007-12-011654
129892007-12-022322
129902007-12-031763
Tabella dati Customers
CustomerIDNomeCountry...
1DataSalesSpain...
2BusinessCorpItaly...
3TechCoGermany...
4MobechoFrance...

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

Tabella di mapping
CustomerIDCountry
1Spain
2Italy
3Germany
4France

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
OrderIDOrderDateShipperIDFreightCustomerIDCountry
129872007-12-011273Germany
129882007-12-011654France
129892007-12-022322Italy
129902007-12-031763Germany

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!