Non so voi, ma a me il fatto che debba per forza mettere tutti i campi nelle pivot o nelle tabelle piatte mi fa venire il nervoso. Rende la Pivot più lenta e difficile da leggere. Il cliente si aspetta di poter “accendere” o “spegnere” i campi che di volta in volta gli interessano, cosa che non si può fare (e pare non si possa fare ancora per un bel po’ a vedere la “wish list” del forum di Qlik).
La “custom report” di Climber non è più disponibile in versione free; la versione di VizLib è decisamente ottima ma non sempre è possibile aggiungere il costo dell’estensione all’offerta del cliente…
L’unico modo quindi è quello di sfruttare la possibilità di condizionare la visibilità di un campo (dimensione o misura) alla selezione filtrata.
Ecco come ho fatto io.
ETL
Nell’ETL va aggiunta la load dei campi da inserire nella tabella/pivot (mi riferirò ad essa col termine tab per brevità). Se usate campi diversi in diverse tab, allora conviene che nella load mettiate anche un identificativo per ognuna che deve usare quel campo:
TAB_CustomReportDims:
Load * inline [
[Seleziona Campo],TABCLI,TABVEND,TABRIEP
Ragione Sociale,1,0,1
Descr. Prodotto, 1,0,0
Listino Prod.,1,0,1
];
In questo modo ho il campo da usare come descrittivo, i campi con 1 e 0 che mi dicono se va usato quel campo nella tab dei clienti, in quella delle vendite o in quella di riepilogo (nell’esempio).
Per avere l’elenco completo dei campi, per non scriverli uno ad uno, di solito prendo un oggetto filtro e uso come campo =[$Field] e poi copio il contenuto su Notepad++ con delle macro riempio i pezzi che mancano per ottenere una LOAD INLINE corretta (magari ne parlo in un altro articolo).
Stessa cosa farò per le misure con una tabella diversa (con “[Seleziona Misura]” invece che “[Seleziona campo]” come nome.)
Sempre nell’ETL definiamo due variabili che ci serviranno per facilitarci la vita quando dovremo scrivere tutte le condizioni di visibilità dei campi:
SET DimIsSelected = (SubStringCount(Concat('@' & [Seleziona Campo] & '@'),'@$1@')=1);
SET MisIsSelected = (SubStringCount(Concat('@' & [Seleziona Misura] & '@'),'@$1@')=1);
Vediamo dopo come usarle sull’interfaccia.
Sull’interfaccia
Si impostano 2 filtri a fianco della tabella, l’una per le misure e l’altra per le dimensioni e come campi di selezione si usano le seguenti formule:
=if(TABVEND,[Seleziona Campo]) per la selezione delle dimensioni
e
=if(TABVEND,[Seleziona Misura]) per la selezione delle misure
Si mette poi la tab e si inseriscono tutti i campi di dimensione previsti e tutti i campi di misura previsti.
Come condizione di visibilità useremo questa funzione:
=$(DimIsSelected(NomeCampo))
La DimIsSelected() restituirà Vero o Falso a seconda che sia selezionato nell’elenco dei campi previsto. Facendo così è molto più semplice poi cambiare la funzione in base ad altri parametri per tutti i campi della tab.

Ricordarsi di taggare “Hidden” i campi dimensione e misura in modo che non compaiano nell’header e di insegnare agli utenti l’uso del “salva bookmark”… così da potersi salvare le composizioni come gli servono.
NB: per come sono scritte le funzioni di verifica, se non si seleziona nessuna dimensione (o nessuna misura) si intende che siano TUTTE selezionate (come da comportamento standard di Sense).
Se si desidera fare in modo che siano visibili SOLO ed unicamente quelle veramente selezionate occorre modificare la funzione come segue:
SET DimIsSelected = (SubStringCount(Concat('@' & [Seleziona Campo] & '@'),'@$1@')=1 and GetSelectedCount([Seleziona Campo])>0);
SET MisIsSelected = (SubStringCount(Concat('@' & [Seleziona Misura] & '@'),'@$1@')=1 and GetSelectedCount([Seleziona Misura])>0);
In questo modo si esclude lo stato di “nessuna selezionata” = “tutte selezionate”.
