Loading

Un campo calcolato restituisce risultati Null

Data pubblicazione: Nov 13, 2023
Descrizione
I campi calcolati restituiscono valori NULL o valori vuoti anziché i risultati attesi

Cause

  • Per gli scenari 1, 2 e 4, qualsiasi calcolo che includa NULL restituirà NULL perché i valori NULL non sono valori numerici e richiedono quindi un approccio particolare.
  • Per lo scenario 3, in Tableau viene aggiunto ELSE NULL a qualsiasi calcolo logico che non contenga un'istruzione ELSE. Ciò significa che se tutte le condizioni sono False, allora verrà restituito NULL.
  • Per lo scenario 5, qualsiasi numero diviso per zero è matematicamente indefinito. Per coerenza, Tableau visualizza il valore come un valore NULL. Per maggiori informazioni, consulta questo articolo di Wikipedia Divisione per zero
Risoluzione
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 1: le espressioni che contengono un campo con un valore NULL possono restituire valori NULL
L'espressione [Sales]+[Profit] restituirà NULL per qualsiasi record nei dati sottostanti dove una o entrambe le misure sono NULL. L'espressione SUM([Sales])+SUM([Profit]) può anche restituire NULL, anche se le aggregazioni come SUM() ignorano i valori NULL, se l'intera somma è NULL.

Soluzione: esegui il wrapping dei campi o le aggregazioni in ZN()
La funzione ZN() converte i valori NULL in zeri.

[Sales] + [Profit]diventerebbe ZN( [Sales] ) + ZN( [Profit] )

SUM( [Sales] ) + SUM( [Profit] ) diventerebbe ZN( SUM( [Sales] )) + ZN( SUM( [Profit] ))
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 2: le condizioni che contengono un valore NULL restituiranno valori NULL
Qualsiasi condizione che fa riferimento a NULL restituirà NULL. Ad esempio, [Region] = NULL restituirà sempre un valore NULL.

Soluzione: usa ISNULL() o IFNULL()
La funzione ISNULL() verifica se un campo o valore letterale è NULL e restituisce True o False. La funzione IFNULL() sostituirà i valori NULL con un valore specificato.

[Region] = NULL diventerebbe ISNULL( [Region] )
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 3: le istruzioni CASE o IF senza istruzioni ELSE restituiranno valori NULL quando non ci sono condizioni True
Tableau legge ogni condizione fino a quando una di esse è True, e poi restituisce quel valore. Se non ci sono condizioni True, Tableau restituirà il valore nell'istruzione ELSE. Se non è presente un'istruzione ELSE, Tableau restituirà NULL. Ad esempio, il calcolo seguente restituirà sempre NULL perché "North Pole" non è una regione nell'insieme di dati campione Superstore:
 

IF [Region] = "North Pole"
THEN [Sales]
END
 
Opzione 1: cambia la condizione in modo che restituisca True. Ad esempio,

IF [Region] = "Central"
THEN [Sales]
END


Opzione 2: aggiungi un'istruzione ELSE per restituire qualcosa di diverso da NULL. Ad esempio,

IF [Region] = "North Pole"
THEN [Sales]
ELSE 0
END
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 4: le espressioni che comprendono più istruzioni CASE o IF reciprocamente esclusive possono restituire valori NULL
Calcoli che confrontano le istruzioni IF o CASE, o contengono condizioni multiple, che non sono mai True allo stesso tempo possono restituire NULL. Ad esempio, l'esempio seguente che utilizza dati Superstore restituirà sempre NULL poiché non è presente alcun record nei dati sottostanti in cui entrambe le istruzioni IF restituiscono un valore non NULL allo stesso tempo: 

IF [Region] = "Central" THEN [Sales] END
-
IF [Region] = "West" THEN [Sales] END

Soluzione: modifica i calcoli in modo che tutte le espressioni restituiscano valori non NULL

Opzione 1 

Esegui il wrapping di ogni istruzione IF THEN in un'aggregazione, come SUM():

SUM( IF [Region] = "Central" THEN [Sales] END )
 - 
SUM( IF [Region] = "West" THEN [Sales] END )

Nota: questa opzione non funzionerà se una qualsiasi delle dimensioni utilizzate nell'istruzione condizionale è inclusa nella vista. L'esempio precedente non funzionerà se [Region] è incluso nella vista.


Opzione 2

Esegui il wrapping di ogni istruzione aggregata IF THEN in un'espressione di livello di dettaglio (LOD). Ad esempio:

{ FIXED : SUM( IF [Region] = "Central" THEN [Sales] END ) }

-

{ FIXED : SUM( IF [Region] = "West" THEN [Sales] END ) }

 

Nota: può essere necessario aggiungere le dimensioni dalla vista al calcolo precedente (dopo FIXED).

Opzione 3

Esegui il wrapping di ogni istruzione IF THEN aggregata in una funzione di tabella. Ad esempio:

WINDOW_SUM( SUM( IF [Region] = "Central" THEN [Sales] END ))
- 
WINDOW_SUM( SUM( IF [Region] = "West" THEN [Sales] END ))
Per un altro esempio di utilizzo delle funzioni di tabella, consulta Calcolo della differenza tra due valori della stessa misura in una vista.
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 5: conversione di una stringa non numerica in un numero
Una stringa (ovvero il valore di testo) che contiene caratteri non numerici restituirà NULL quando viene convertita in un numero.

Soluzione: modifica la stringa per rimuovere i caratteri non numerici
Per esempio, se il campo [Prezzo] contiene la stringa "$4.50" allora il seguente calcolo restituirà NULL:

FLOAT( [Price] )

Se ogni valore in [Prezzo] ha un "$" precedente, allora il calcolo può essere modificato in

FLOAT( RIGHT( [Price], LEN( [Price] ) - 1 ))

Se [Prezzo] contiene dei valori di stringa con un "$" e alcuni senza, allora il calcolo potrebbe essere modificato in

FLOAT(
IF ISNULL( FLOAT( LEFT( [Prezzo],1 )))
THEN RIGHT( [Prezzo], LEN( [Prezzo] ) - 1 )
ELSE [Prezzo]
END

)
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 6: le espressioni che si dividono per zero restituiranno NULL
Qualsiasi numero diviso per zero restituirà un valore NULL in Tableau.

Soluzione: cambia il denominatore in un altro valore.
FAI CLIC PER ESPANDERE LA SOLUZIONE
Scenario 7: DATE() o DATEPARSE() possono restituire NULL
Le funzioni DATE() o DATEPARSE() possono restituire NULL se il formato della data del valore di testo non è supportato dalle impostazioni locali del computer. Per ulteriori informazioni, consulta Convertire un campo in un campo data

La funzione DATEPARSE() può anche restituire NULL se il formato della data specificato non corrisponde al formato della data del campo. Ad esempio, il campo [Data ordine] contiene valori formattati come g/m/aaaa come "13/1/2018". Il calcolo DATEPARSE('g/m/aaaa', [Data ordine] ) restituirà valori NULL in quanto utilizza trattini anziché barre.

Soluzione: modifica il formato della data in modo che corrisponda esattamente al formato della data dei dati.
Numero articolo Knowledge

001474028

 
Caricamento
Salesforce Help | Article