La funzione DUAL per ordinamenti custom

Riporto di seguito la sintesi di un post interessante che ho letto poco fa, perché penso che possa essere d’aiuto per chi non conoscesse una funzione semplice e potente di QlikView: la funzione DUAL.

Probabilmente molti non conoscono la “Dual”, ma tutti quelli che usano QlikView ne conoscono “l’effetto” su una caratteristica standard dello script di ETL e delle funzioni di interfaccia: quando si esegue una “Month()” su un campo data, l’effetto è quello di ritrovarsi un elenco di valori STRINGA che rispetta un settaggio di base da fare al momento di creazione dello script; è grazie a queste impostazioni di base che all’applicazione della funzione Month su una data come “12/03/2010″, il risultato non sarà “03″ bensì “Mar”. Se però chediamo al sistema di ordinare l’elenco dei mesi disponibili, sappiamo bene di doverlo fare indicando un ordinamento NUMERICO, che permette di ottenere la sequenza corretta Gen, Feb, Mar,…

La “Dual” estende questa possibilità a qualsiasi campo della base dati, grazie alla facoltà che possiede di salvare, allinterno dello stesso campo, due valori: una descrizione testuale ed un ordinamento numerico. Vediamo un esempio pratico: carichiamo una tabella con i 7 colori dell’arcobaleno e diamo loro l’ordinamento che hanno nella realtà.

TabellaTest:
LOAD
Dual(colore, ordinamento) as arcobaleno;
LOAD * INLINE  [
colore, ordinamento
violetto, 7
arancione, 2
giallo, 3
rosso, 1
verde, 4
indaco, 6
azzurro, 5
];

Il risultato di uno script del genere consente di mostrare all’utente il campo “arcobaleno” come stringa (sfruttando il campo “colore”), ma di poterlo ordinare (da proprietà di ordinamento) come un NUMERO, grazie al campo “ordinamento”, proprio come si fa per i mesi estratti con una funzione Month().

Se creassimo una casella elenco del campo “arcobaleno”, ordinandola come fosse un numerico, otterremmo la sequenza corretta:

rosso arancione giallo verde azzurro indaco violetto