CalcDim - funzione per grafici
Quando si utilizza in un'espressione di dimensione, CalcDim() sovrascrive l'interpretazione automatica del motore su come gestire internamente l'espressione. Nello specifico, la funzione impedisce che venga creato un nuovo campo interno nel modello dati. Invece, le selezioni effettuate nell'app vengono considerate come selezioni nei campi applicabili dal modello dati.
Questa funzione non può essere utilizzata nello script di caricamento. Inoltre, una best practice per le prestazioni del sistema è caricare i campi utilizzati nella dimensione calcolata come campi logici tramite lo script di caricamento quando possibile. CalcDim() offre un modo per controllare il comportamento del motore in scenari in cui il caricamento del campo calcolato dallo script non è possibile.
In Qlik Sense, l'espressione della dimensione è per impostazione predefinita realizzata come un campo al volo, ovvero come un campo effettivo, visibile nella barra di selezione corrente, costruito su richiesta. Le selezioni vengono applicate e inferite a questo campo, in modo simile a qualsiasi campo logico dallo script.
Un'espressione racchiusa in CalcDim() si comporterà allo stesso modo in cui funzionano tutte le espressioni di dimensione calcolata in QlikView, ovvero una mappatura ad hoc dei valori calcolati ai valori del campo di origine sottostante. Tutti i calcoli field-on-the-fly possono essere trasferiti in dimensioni calcolate utilizzando la funzione CalcDim() poiché la dimensione calcolata deve soddisfare meno requisiti basati sul modello dati rispetto al corrispondente calcolo field-on-the-fly. Questa trasformazione può essere desiderabile per garantire un comportamento simile per tutte le dimensioni calcolate, laddove il modello dati potrebbe impedire l'uso di un calcolo field-on-the-fly in alcuni casi, ma non in altri.
Sintassi:
CalcDim(expr)
Tipo di dati restituiti: duale
Argomento | Descrizione |
---|---|
expr |
Un'espressione utilizzata come dimensione o come segmento all'interno di un'espressione di dimensione. |
Quando usare CalcDim
CalcDim() è utile quando è necessario un maggiore controllo su come il motore Qlik gestisce i campi richiamati in un'espressione di dimensione.
Per impostazione predefinita, Qlik Sense decide automaticamente se creare e fare riferimento a campi interni nel modello dati quando si utilizza un'espressione di dimensione personalizzata. Qlik Sense crea e utilizza questi campi interni ogni volta che è possibile. Quando non è possibile, l'espressione viene gestita con riferimento ai campi del modello dati esistenti su cui si basa.
A seconda del caso d'uso, questa elaborazione automatica potrebbe non essere sempre desiderabile. Ad esempio, se si sta utilizzando una variabile in un'espressione di dimensione, la creazione automatica di nuovi campi può diventare problematica. In questo caso, utilizzare CalcDim() per forzare la gestione dell'espressione senza questo metodo.
Di seguito sono riportati alcuni casi d'uso comuni:
-
È stata eseguita la migrazione del contenuto QlikView in Qlik Sense e si desidera conservare il metodo di elaborazione QlikView per le dimensioni calcolate.
-
Si desidera semplificare il comportamento di selezione nella propria app. Ad esempio, si preferisce mostrare le selezioni di campo come selezioni nei campi del modello dati originale, piuttosto che selezioni in nuovi campi.
-
Il tuo caso d'uso richiede un'espressione ad hoc per coerenza e prestazioni. Ad esempio, se l'espressione della tua dimensione contiene parametri di visualizzazione dinamici controllabili dall'utente, come formattazione controllabile, valori di cut-off o periodi.
Esempio | Risultato |
---|---|
=CalcDim(if(Year < 2023, 'Older', Year)) |
Effettuare una selezione in una visualizzazione che utilizza questa dimensione verrà elaborato e visualizzato come una selezione nel valore del campo Year associato dal modello dati. Al contrario, supponiamo che tu non racchiuda l'espressione in CalcDim(). In questo caso, apparirebbe così: =if(Year < 2023, 'Older', Year) Effettuare una selezione nell'espressione precedente verrebbe elaborata e visualizzata come una selezione nel campo interno =if(Year < 2023, 'Older', Year), che non è presente nel modello dati. |