Esempi di stati alternativi nelle espressioni grafiche

Questi esempi hanno lo scopo di fornire la metodologia migliore relativa all'utilizzo degli stati alternativi per gli sviluppatori di QlikView e/o gli utenti avanzati di QlikView. Questi esempi sono disponibili nel file 'Alternate States Functionality.qvw'.

Sincronizzazione delle selezioni tra gli stati

Le espressioni seguenti possono essere utilizzate in un unico grafico:

count({$} DISTINCT [Invoice Number])

count({State1} DISTINCT [Invoice Number])

count({State2} DISTINCT [Invoice Number])

Questo metodo presenta un problema: lo sviluppatore QlikView deve duplicare le selezioni (le caselle di elenco e le caselle multiple) per tutti i tre stati affinché l'utente finale possa effettuare selezioni corrette per i diversi stati. In diversi casi lo sviluppatore QlikView avrà bisogno di disporre di una serie di selezioni 'comuni' disponibili per tutti gli stati. In questo modo l'utente finale potrà impostare il contesto per i diversi grafici e utilizzare in seguito selezioni specifiche per mostrare le differenze fra i vari stati. È possibile utilizzare Set Analysis unitamente agli stati per mantenere la coerenza di alcune selezioni tra gli stati.

count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])

count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])

Lo sviluppatore QlikView si occuperà di mantenere la sincronizzazione delle selezioni Year e Month in State1 e State2 con le selezioni Year e Month nello stato predefinito. Può inoltre aggiungere elementi ai modificatori di gruppo in base alle necessità, al fine di garantire una maggiore coerenza tra gli stati.

Operatori di gruppo

È possibile utilizzare gli operatori di gruppo (+, *, -, /) con gli stati. Le seguenti espressioni sono considerate valide. Verrà eseguito il conteggio dei diversi numeri di fattura che si trovano nello stato predefinito o in State1.

Esempi:  

count({$ + State1} DISTINCT [Invoice Number])
esegue il conteggio dei diversi numeri di fattura nella combinazione dello stato <predefinito> e di State1.

count({1 - State1} DISTINCT [Invoice Number])
esegue il conteggio dei diversi numeri di fattura che non si trovano in State1.

count({State1 * State2} DISTINCT [Invoice Number])
esegue il conteggio dei diversi numeri di fattura che si trovano sia nello stato <predefinito> che in State1.

Nota: Si consiglia di prestare attenzione quando si utilizzano gli operatori di gruppo in questo modo. In alcuni casi, il risultato potrebbe essere diverso da quello previsto. Ciò è dovuto al fatto che le selezioni effettuate in un determinato stato generano un gruppo di dati che potrebbe non essere completamente compatibile con il gruppo o i gruppi a cui viene associato. A maggior ragione quando aumenta la complessità del modello di dati.

Definizioni di valori di campo implicite

Un altro modo per utilizzare gli operatori di gruppo è unitamente alle funzioni di elemento P() e E(). Queste funzioni sono disponibili solo all'interno delle espressioni set.

Esempi:  

count({$<[Invoice Number] = p({State1} [Invoice Number])>} DISTINCT [Invoice Number])
Questa espressione esegue il conteggio dei diversi numeri di fattura nello stato <predefinito> in base all'eventuale numero di fatture disponibile in State1.

È simile, anche se non equivalente, alla seguente espressione:

count({$<[Invoice Number] = State::[Invoice Number]>} DISTINCT [Invoice Number])

La differenza tra le due espressioni è che nella prima gli eventuali valori sul numero di fattura vengono trasferiti da State1 allo stato predefinito. Nella seconda espressione, i valori selezionati da State1 vengono trasferiti allo stato predefinito. Se l'utente non ha selezionato alcun numero di fattura in State1, nessun valore del numero di fattura verrà trasferito allo stato predefinito.

Si consiglia di utilizzare gli operatori di gruppo unitamente ai modificatori di gruppo. L'espressione seguente individua l'intersezione degli eventuali numeri di fattura da State1 e State2 e li trasferisce nei numeri di fattura nello stato predefinito.

Esempi:  

count({$<[Invoice Number] = p({State1} [Invoice Number]) * p({State2} [Invoice Number])>} DISTINCT [Invoice Number])
L'espressione per individuare l'intersezione dei numeri di fattura nello stato <predefinito> e State1 è:

count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1} [Invoice Number])>} DISTINCT [Invoice Number])

Questa espressione potrebbe creare confusione poiché utilizza uno stato (in questo caso <predefinito>) sia nella funzione di elemento che nell'identificatore di gruppo. Tenere presente che la funzione di elemento p($) restituisce gli eventuali valori nello stato predefinito. L'identificatore di gruppo/stato {$} viene modificato dal risultato delle funzioni di elemento. Le eventuali selezioni delle fatture esistenti attualmente nello stato predefinito vengono sovrascritte dai valori provenienti dall'intersezione delle funzioni di elemento.

Tenere inoltre presente che l'espressione precedente non è completamente corretta perché non è in grado di sincronizzare le selezioni comuni tra lo stato predefinito e State1. L'espressione seguente può risolvere il problema:

Esempi:  

count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1<Year = $::Year, Month = $::Month>} [Invoice Number])>} DISTINCT [Invoice Number])

Come in precedenza, lo sviluppatore di QlikView può aggiungere campi nel modificatore per mantenere la coerenza delle selezioni tra i vari stati.