Freigeben über


HASONEVALUE-Funktion (DAX)

Gibt TRUE zurück, wenn der Kontext für columnName bis zu nur noch einem unterschiedlichen Wert gefiltert wurde. Anderenfalls FALSE.

Syntax

HASONEVALUE(<columnName>)

Parameter

  • columnName
    Der Name einer vorhandenen Spalte mit Standard-DAX-Syntax. Kann kein Ausdruck sein.

Rückgabewert

TRUE, wenn der Kontext für columnName bis zu nur noch einem unterschiedlichen Wert gefiltert wurde. Anderenfalls FALSE.

Hinweise

  • Ein gleichwertiger Ausdruck für HASONEVALUE() ist COUNTROWS(VALUES(<columnName>)) = 1.

Beispiel

Im folgenden Beispiel möchten Sie eine Formel erstellen, die überprüft, ob der Kontext anhand eines Werts in Slices aufgeteilt ist, um einen Prozentwert im Vergleich zu einem vordefinierten Szenario zu schätzen. In diesem Fall möchten Sie Verkäufe von Wiederverkäufern mit Verkäufen im Jahr 2007 vergleichen, dabei müssen Sie wissen, ob der Kontext nach einzelnen Jahren gefiltert wird. Außerdem soll, wenn der Vergleich bedeutungslos ist, ein leerer Wert zurückgegeben werden.

Wenn Sie dem Szenario folgen möchten, können Sie das Arbeitsblatt mit dem Modell aus dem Arbeitsblatt PowerPivot-Beispieldaten herunterladen.

Erstellen Sie ein Measure mit der Bezeichnung [ResellerSales compared to 2007] mithilfe des folgenden Ausdrucks:

=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
  1. Nach dem Erstellen des Measure sollte unter [ResellerSales compared to 2007] ein leeres Ergebnis wie folgt angezeigt werden:

    ResellerSales compared to 2007

    Der Grund für die leere Zelle im Ergebnis ist, dass im Kontext keine einzelnen Jahresfilter vorhanden sind.

  2. Ziehen Sie DateTime[CalendarYear] in das Feld Spaltenbezeichnungen; die Tabelle sollte wie folgt aussehen:

    Spaltenbezeichnungen

    2005

    2006

    2007

    2008

    ResellerSales compared to 2007

    24.83 %

    74.88 %

    100.00 %

    50.73 %

  3. Ziehen Sie ProductCategory[ProductCategoryName] in das Feld Zeilenbezeichnungen, um in etwa folgendes Ergebnis zu erhalten:

    ResellerSales compared to 2007

    Spaltenbezeichnungen

    Zeilenbezeichnungen

    2005

    2006

    2007

    2008

    Accessories

    6.74 %

    31.40 %

    100.00 %

    55.58 %

    Bikes

    28.69 %

    77.92 %

    100.00 %

    53.46 %

    Clothing

    3.90 %

    55.86 %

    100.00 %

    44.92 %

    Components

    11.05 %

    65.99 %

    100.00 %

    38.65 %

    Gesamtergebnis

    24.83 %

    74.88 %

    100.00 %

    50.73 %

    Haben Sie bemerkt, dass die Gesamtergebnisse unten in den Spalten angezeigt wurden, jedoch nicht für Zeilen? Das liegt daran, dass der Kontext für Gesamtergebnisse in Zeilen mehr als ein Jahr voraussetzt, für Spalten jedoch ein einzelnes Jahr.

  4. Ziehen Sie DateTime[CalendarYear] in das Feld Horizontale Slicer, und ziehen Sie SalesTerritory[SalesTerritoryGroup] in das Feld Horizontale Bezeichnungen. Sie sollten ein leeres Resultset sehen, da die Tabelle Daten für mehrere Jahre enthält. Wählen Sie 2006 im Slicer aus, und die Tabelle sollte jetzt wieder Daten enthalten. Wählen Sie weitere Jahre aus, um zu sehen, wie sich die Ergebnisse ändern.

  5. Zusammengefasst können Sie mit HASONEVALUE() feststellen, ob der Ausdruck im Kontext eines einzelnen Werts für columnName ausgewertet wird.