Rappresentazione testuale, numerica, duale

| | Comments (0)

Di default, QlikView decide automaticamente se un campo è testuale o numerico (le date sono considerate numeri).
A volte però risulta utile forzare un tipo piuttosto che un altro mediante text() o num().
Ad esempio avere ID che finiscono per ,00 è brutto, oppure si può voler forzare un formato numerico come default del campo.

In verità per i campi numerici QlikView memorizza sia una rappresentazione testuale che il valore: può far comodo sfruttare ciò specificando esplicitamente testo e numero.
È qui che entra in gioco la funzione dual(rappresentazione testuale, valore numerico).

Spesso si denormalizzano i campi di date per rendere possibile selezionare, ad esempio, tutte le date che ricadono in un certo anno-mese:

load year(data) & ' ' & month(data) as anno_mese, ...;

Ottenendo stringhe tipo "2008 gen". Il problema è che l'ordine alfabetico non ha senso; inoltre non è possibile usarle come dimensione impostando l'asse delle ascisse come continua.
Non sarebbe molto più bello avere "gennaio 08", che sia anche ordinabile come numero?

load dual(text(date(data, 'MMMM YY'))
          ,
          date#(text(date(data, 'MMMM YY')), 'MMMM YY')
     ) as mese_anno,
     ...;

Suggerimento: in caso si voglia giorno/mese/anno (tagliando fuori quindi ore, minuti, secondi), poiché QlikView memorizza le date come giorni passati dal 1900, è sufficiente approssimare per difetto: date(floor(data)) as giorno_mese_anno.

Altro esempio: classi d'età ordinabili.

load if(anni < 1, dual('meno di un anno', 0),
     if(anni < 10, dual('fra 1 e 9 anni', 1),
     dual('da 10 anni in su', 10))) as classe_eta,
     ...;

Leave a comment

Novità! Se vuoi essere contattato da un consulente Querit lascia nome e numero e Ti telefoneremo:





Pages