Vai al contenuto principale Passa a contenuto complementare

Riferimenti di campo naked

Un campo viene considerato naked quando non è racchiuso in una funzione di aggregazione.

Un riferimento di campo naked è una matrice, che può contenere svariati valori. Dato che Qlik Sense non conosce quali di questi valori si desidera ottenere, li valuterà come NULL.

Utilizzare sempre una funzione di aggregazione nella propria espressione

Se si ritiene che la propria espressione non valuti correttamente, c'è un'alta probabilità che non abbia una funzione di aggregazione.

Un riferimento di campo in un'espressione corrisponde a una matrice di valori. Ad esempio:

Due tabelle, una che mostra che Max(Invoice Date) è un valore singolo e una che mostra che Invoice Date è una matrice di valori.

Due tabelle, una che mostra che Max(Invoice Date) è un valore singolo e una che mostra che Data fattura (Invoice Date) è una matrice di valori.

È necessario racchiudere il campo Data fattura in una funzione di aggregazione per comprimerlo in un valore singolo.

Se non si utilizza una funzione di aggregazione sulla propria espressione, Qlik Sense utilizzerà la funzione Only() per impostazione predefinita. Se il riferimento di campo restituisce svariati valori, Qlik Sense lo interpreterà come NULL.

Suddivisione delle date delle fatture usando la funzione If()

La funzione If() viene spesso utilizzata per le aggregazioni condizionali. Restituisce un valore a seconda che la condizione fornita all'interno della funzione esegua la valutazione come True o come False.

All'interno dell'app, sul foglio Naked field references è presente una tabella dal titolo Using If() on Invoice dates.

  1. Selezionare la tabella disponibile, dal titolo Using If() on Invoice dates.
    Si apre il pannello delle proprietà.
  2. Fare clic su Aggiungi colonna e selezionare Misura.
  3. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  4. Inserire quanto segue: If( [Invoice Date]>= Date(41323), 'After', 'Before' )
  5. Fare clic su Applica.

La tabella mostra le date delle fatture suddivise da una data di riferimento.

La tabella mostra le date delle fatture suddivise da una data di riferimento.

Questa espressione verifica se Invoice Date sia anteriore alla data di riferimento 18/2/2013 e restituisce 'Before' in caso affermativo. Se la data è posteriore o uguale alla data di riferimento 18/2/2013, viene restituito 'After. La data di riferimento viene espressa come il numero intero 41323.

Per ulteriori informazioni vedere if - funzione per script e grafici

Come evitare i riferimenti di campo naked

A prima vista, questa espressione sembra corretta:

If([Invoice Date]>= Date(41323) 'After', 'Before')

Deve valutare le date delle fatture dopo la data di riferimento, quindi restituire 'After' o 'Before'. Tuttavia, Invoice Date è un riferimento di campo naked, non presenta una funzione di aggregazione e come tale rappresenta una matrice con svariati valori, pertanto valuterà come NULL. Nell'esempio precedente era presente un solo valore Invoice Date per Date , pertanto l'espressione veniva calcolata correttamente.

Vediamo in che modo un'espressione simile viene calcolata sotto un valore dimensionale diverso e come risolvere il problema di riferimento di campo naked:

Come evitare i riferimenti di campo naked in una funzione If()

Utilizzeremo un'espressione simile a quella usata in precedenza:

If([Invoice Date]>= Date(41323), Sum(Sales))

Questa volta la funzione somma le vendite dopo la data di riferimento.

All'interno dell'app, sul foglio Naked field references è presente una tabella dal titolo Sum(Amount).

  1. Selezionare la tabella Sum(Amount) disponibile.
    Si apre il pannello delle proprietà.
  2. Fare clic su Aggiungi colonna e selezionare Misura.
  3. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  4. Inserire quanto segue: If( [Invoice Date]>= 41323, Sum(Sales) )
  5. Fare clic su Applica.

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati dell'espressione usando la funzione If().

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati dell'espressione.

Nota di suggerimentoMantenere l'Etichetta intatta sulle misure per mostrare le differenze tra ciascuna espressione. Nelle colonne con valori monetari, modificare la Formattazione numero su Valuta e il Modello di formattazione su $ #,##0;-$ #,##0.

Per ciascun anno c'è una gamma di date per le fatture che seguono la data di riferimento. Dato che la nostra espressione è priva di una funzione di aggregazione, valuta su NULL. Un'espressione corretta dovrebbe utilizzare una funzione di aggregazione come Min() o Max() nel primo parametro della funzione If():

If(Max([Invoice Date])>= Date(41323), Sum(Sales))

  1. Fare clic su Aggiungi colonna e selezionare Misura.
  2. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  3. Inserire quanto segue: If( [Invoice Date]>= Date(41323), Sum(Sales) )
  4. Fare clic su Applica.

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati delle varie espressioni usando la funzione If().

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati delle differenti espressioni

In alternativa, la funzione If() può essere inserita all'interno della funzione Sum():

Sum(If([Invoice Date]>= Date(41323), Sales) )

  1. Fare clic su Aggiungi colonna e selezionare Misura.
  2. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  3. Inserire quanto segue: Sum( If([Invoice Date]>= Date(41323), Sales ) )
  4. Fare clic su Applica.

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati delle varie espressioni usando la funzione If().

La tabella mostra l'anno, la somma delle vendite per ciascun anno, e i risultati delle differenti espressioni

Nella penultima espressione, la funzione If() è stata valutata una volta per valore dimensionale. Nell'ultima espressione viene valutata una volta per riga nei dati raw. La differenza nel modo in cui la funzione viene valutata fa sì che i risultati siano diversi, ma entrambi restituiscono una risposta. La prima espressione viene valutata semplicemente come NULL. L'immagine sopra mostra la differenza tra le espressioni, utilizzando 18/2/2013 come data di riferimento.

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!