Loading

Berechnetes Feld gibt Null-Ergebnisse zurück

Veröffentlichungsdatum: Nov 13, 2023
Beschreibung
Berechnete Felder geben anstelle der erwarteten Ergebnisse NULL oder leere Werte zurück.

Cause

  • Für die Szenarien 1, 2 & 4 gibt jede Berechnung, die NULL enthält NULL zurück, da NULL-Werte keine numerischen Werte sind, und deshalb speziell behandelt werden müssen.
  • In Szenario 3 fügt Tableau logischen Berechnungen ohne ELSE-Anweisung den Zusatz ELSE NULL hinzu. Demnach wird NULL zurückgegeben, wenn alle Bedingungen "False" sind.
  • Bei Szenario 5 ist jede Zahl, die durch 0 dividiert wird mathematisch nicht definiert. Aus Konsistenzgründen zeigt Tableau den Wert als NULL an. Weitere Informationen finden Sie im Wikipedia-Artikel Division durch Null.
Lösung
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 1: Ausdrücke mit einem Feld mit einem NULL-Wert geben möglicherweise NULL-Werte zurück
Der Ausdruck [Umsatz]+[Gewinn] gibt NULL für jeden Datensatz in den zugrunde liegenden Daten zurück, bei dem eine oder beide Kennzahlen NULL sind. Der Ausdruck SUM([Umsatz])+SUM([Gewinn]) kann auch NULL zurückgeben, obwohl Aggregationen wie SUM() NULL-Werte ignorieren, wenn die gesamte Summe NULL ist.

Lösung: Felder oder Aggregationen in ZN() umbrechen
Die ZN()-Funktion konvertiert NULL-Werte in Nullen.

[Sales] + [Profit] würde zu ZN( [Sales] ) + ZN( [Profit] ) werden

SUM( [Sales] ) + SUM( [Profit] ) würde zu ZN( SUM( [Sales] )) + ZN( SUM( [Profit] )) werden
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 2: Bedingungen mit einem NULL-Wert geben NULL-Werte zurück
Jede Bedingung, die auf einen beliebigen NULL-Wert verweist, gibt NULL zurück. Zum Beispiel wird [Region] = NULL immer einen NULL-Wert zurückgeben.

Lösung: ISNULL() oder IFNULL() verwenden
Die ISNULL()-Funktion überprüft, ob ein Feld oder Literalwert NULL ist, und gibt "True" oder "False" zurück. Die IFNULL()-Funktion ersetzt NULL-Werte durch einen angegebenen Wert.

[Region] = NULL würde zu ISNULL( [Region] ) werden
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 3: CASE- oder IF-Anweisungen ohne ELSE-Anweisungen geben NULL-Werte zurück, wenn keine Bedingungen "True" sind
Tableau durchläuft jede Bedingung bis eine Wahr ist, und gibt anschließend diesen Wert zurück. Wenn keine Bedingungen "True" sind, gibt Tableau den Wert in der ELSE-Anweisung zurück. Wenn keine ELSE-Anweisung vorhanden ist, gibt Tableau NULL zurück. Die folgende Berechnung gibt beispielsweise immer NULL zurück, weil "Nordpol" keine Region im Superstore-Beispieldatensatz ist:
 
IF [Region] = "Nordpol"
THEN [Umsatz]
END
 
Option 1: Ändern Sie die Bedingung, sodass sie "True" zurückgibt. Beispiel:

IF [Region] = "Zentral"
THEN [Umsatz]
END


Option 2: Fügen Sie eine ELSE-Anweisung hinzu, um einen anderen Wert als NULL zurückzugeben. Beispiel:

IF [Region] = "Nordpol"
THEN [Umsatz]
ELSE 0
END
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 4: Ausdrücke mit mehreren sich gegenseitig ausschließenden CASE- oder IF-Anweisungen geben möglicherweise NULL-Werte zurück
Berechnungen, die IF oder CASE Anweisungen vergleichen oder mehrere Bedingungen enthalten, die nie zur selben Zeit "True" sind, geben möglicherweise NULL zurück. Zum Beispiel gibt das folgende Beispiel, das Superstore-Daten verwendet, immer NULL zurück, da es in den zugrundeliegenden Daten keine Aufzeichnungen gibt, in denen beide IF Anweisungen einen nicht-NULL-Wert zur selben Zeit zurückgeben: 
IF [Region] = "Zentral" THEN [Umsatz] END
-
IF [Region] = "Westen" THEN [Umsatz] END

Lösung: Bearbeiten Sie die Berechnung, sodass alle Ausdrücke nicht-NULL-Werte zurückgeben

Option 1 

Schließen Sie jede IF THEN Anweisung in eine Aggregation wie SUM():
SUM( IF [Region] = "Zentral" THEN [Umsatz] END )
 - 
SUM( IF [Region] = "Westen" THEN [Umsatz] END )

Hinweis: diese Option wird nicht funktionieren wenn eine der Dimensionen, die in der bedingten Anweisung verwende werden, in der Ansicht enthalten sind. Das Beispiel oben funktioniert nicht, wenn [Region] in der Ansicht miteinbegriffen ist.


Option 2

Schließen Sie jede aggregierte IF THEN Anweisung in einen Detailgenauigkeitsausdruck (LOD-Ausdruck) ein. Beispiel:
{ FIXED : SUM( IF [Region] = "Zentral" THEN [Umsatz] END ) }

-

{ FIXED : SUM( IF [Region] = "Westen" THEN [Umsatz] END ) }

 

Hinweis: Es kann notwendig sein, Dimensionen der Ansicht zur Berechnung oben hinzuzufügen (nach FIXED).

Option 3

Schließen Sie jede aggregierte IF THEN Anweisung in eine Tabellenfunktion ein. Beispiel:
WINDOW_SUM( SUM( IF [Region] = "Zentral" THEN [Umsatz] END ))
- 
WINDOW_SUM( SUM( IF [Region] = "Westen" THEN [Umsatz] END ))
Ein anderes Beispiel, das Tabellenfunktionen verwendet finden Sie unter Berechnen der Differenz zwischen zwei Werten für die gleiche Kennzahl in einer Ansicht.
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 5: Eine nichtnumerische Zeichenfolge in eine Nummer konvertieren
Eine Zeichenfolge (auch bekannt als Textwert), die nichtnumerische Zeichen enthält gibt NULL zurück, wenn es in eine Nummer konvertiert wird.

Lösung: Modifizieren Sie die Zeichenfolge, um nichtnumerische Zeichen zu entfernen
Zum Beispiel, wenn das Feld [Preis] die Zeichenfolge "$4,50" enthält, wird die folgende Berechnung NULL zurückgeben:

FLOAT( [Preis] )

Wenn jeder Wert in [Preis] ein voranstehendes '$' hat, dann kann die Berechnung wie folgt modifiziert werden:

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

Falls [Preis] enthält einige Zeichenfolgenwerte mit einem '$' und einige ohne, dann kann die Berechnung wie folgt modifiziert werden:

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

)
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 6: Ausdrücke mit Division durch Null geben NULL zurück
Jede Zahl, die durch Null dividiert wird, gibt in Tableau einen NULL-Wert zurück.

Lösung: Ändern Sie den Nenner zu einem anderen Wert.
ZUM ANZEIGEN DER LÖSUNG KLICKEN
Szenario 7: DATE() oder DATEPARSE() geben möglicherweise NULL zurück
Die Funktionen DATE() oder DATEPARSE() können NULL zurückgeben, wenn das Datenformat des Textwertes durch das Gebietsschema des Computers nicht unterstützt wird. Weitere Informationen finden Sie unter Konvertieren eines Feldes in ein Datumsfeld.

Die Funktion DATEPARSE() kann auch NULL zurückgeben, wenn das angegebene Datenformat das Datenformat im Feld nicht entspricht. Das Feld [Bestelldatum] enthält beispielsweise als "M/T/JJJJ" formatierte Werte wie "1/13/2018". Die Berechnung DATEPARSE('m-d-yyyy', [Bestelldatum]) gibt NULL-Werte zurück, weil sie Bindestriche anstelle von Schrägstrichen verwendet.

Lösung: Ändern Sie das Datumsformat, sodass es exakt mit dem Datumsformat der Daten übereinstimmt.
Nummer des Knowledge-Artikels

001474028

 
Laden
Salesforce Help | Article