Freigeben über


ALLNOBLANKROW-Funktion (DAX)

Gibt aus der übergeordneten Tabelle einer Beziehung alle Zeilen außer der leere Zeile oder alle unterschiedlichen Werte einer Spalte außer der leeren Zeile zurück und ignoriert alle Kontextfilter, die ggf. vorhanden sind.

Syntax

ALLNOBLANKROW(<table>|<column>)

Parameter

Ausdruck

Definition

table

Die Tabelle, für die alle Kontextfilter außer Kraft gesetzt werden.

column

Die Spalte, für die alle Kontextfilter außer Kraft gesetzt werden.

Nur ein Parameter muss übergeben werden. Der Parameter ist entweder eine Tabelle oder eine Spalte.

Rückgabewert

Eine Tabelle, wenn der übergebene Parameter eine Tabelle war, oder eine Spalte mit Werten, wenn der übergebene Parameter eine Spalte war.

Hinweise

Die ALLNOBLANKROW-Funktion filtert nur die leere Zeile, die in einer übergeordneten Tabelle einer Beziehung angezeigt wird, wenn die untergeordnete Tabelle mindestens eine Zeile mit Werten enthält, die nicht mit der übergeordneten Spalte übereinstimmen. Dies wird anhand des folgenden Beispiels deutlich veranschaulicht.

In der folgenden Tabelle werden die in DAX bereitgestellten Variationen der ALL-Funktion und ihre Unterschiede zusammengefasst:

Funktion und Verwendung

Beschreibung

ALL(Column)

Entfernt alle Filter für die angegebene Spalte in der Tabelle. Alle anderen Filter bleiben in Kraft.

ALL(Table)

Entfernt alle Filter für die angegebene Tabelle.

ALLEXCEPT(Table,Col1,Col2...)

Setzt alle Kontextfilter in der Tabelle mit Ausnahme der Filter für die angegebenen Spalten außer Kraft.

ALLNOBLANK(table|column)

Gibt aus der übergeordneten Tabelle einer Beziehung alle Zeilen außer der leeren Zeile oder alle unterschiedlichen Werte einer Spalte außer der leeren Zeile zurück und ignoriert alle Kontextfilter, die ggf. vorhanden sind.

Eine allgemeine Beschreibung der ALL-Funktion sowie Schritt-für-Schritt-Beispiele für ALL(Table) und ALL(Column) finden Sie unter ALL-Funktion (DAX).

Beispiel

In den Beispieldaten enthält die ResellerSales_USD-Tabelle eine Zeile, die keine Werte enthält und daher nicht mit übergeordneten Tabellen der Beziehungen innerhalb der Arbeitsmappe verknüpft werden kann. Sie verwenden diese Tabelle in einer PivotTable, damit Sie sehen, wie sich die leere Zeile verhält und wie das Zählen bei nicht verknüpften Daten gehandhabt wird.

Schritt 1: Überprüfen der nicht verknüpften Daten

Öffnen Sie das PowerPivot-Fenster, und wählen Sie dann die ResellerSales_USD-Tabelle aus. Filtern Sie die ProductKey-Spalte nach leeren Werten. Nach dem Filtern bleibt eine Zeile bestehen. In dieser Zeile sollten alle Spaltenwerte außer SalesOrderLineNumber leer sein.

Schritt 2: Erstellen einer PivotTable

Erstellen Sie eine neue PivotTable, und ziehen Sie dann die datetime.[Calendar Year]-Spalte in den Bereich Zeilenbezeichnungen. In der folgenden Tabelle werden die erwarteten Ergebnisse angezeigt:

Zeilenbeschriftungen

2001

2002

2003

2004

 

Gesamtsumme

Beachten Sie die leere Beschriftung zwischen 2004 und Gesamtsumme. Diese leere Beschriftung stellt das unbekannte Element dar. Dies ist eine von PowerPivot erstellte besondere Gruppe, in der alle Werte in der untergeordneten Tabelle erfasst werden, für die kein übereinstimmender Wert in der übergeordneten Tabelle verfügbar ist. In diesem Beispiel ist das die Datetime.[Calendar Year]-Spalte.

Wenn Sie diese leere Beschriftung in der PivotTable sehen, wissen Sie, dass es in einigen der Tabellen, die mit der datetime.[Calendar Year]-Spalte verknüpft sind, entweder leere Werte oder nicht übereinstimmende Werte gibt. In der übergeordneten Tabelle wird die leere Beschriftung anzeigt, aber die nicht übereinstimmenden Zeilen sind in einer oder mehreren untergeordneten Tabellen enthalten.

Die Zeilen, die dieser leeren Beschriftungsgruppe hinzugefügt werden, sind entweder Werte, die mit keinem Wert in der übergeordneten Tabelle übereinstimmen (z. B. ein Datum, das in der datetime-Tabelle nicht vorhanden ist), oder NULL-Werte, die gar keinen Datumswert aufweisen. In diesem Beispiel haben wir in allen Spalten der untergeordneten Verkaufstabelle einen leeren Wert eingefügt. Es ist kein Problem, wenn in der übergeordneten Tabelle mehr Werte als in den untergeordneten Tabellen vorhanden sind.

Schritt 3: Zählen der Zeilen mit ALL und ALLNONBLANK

Fügen Sie der datetime-Tabelle die folgenden zwei Measures zum Zählen der Tabellenzeilen hinzu: Countrows ALLNOBLANK of datetime, Countrows ALL of datetime. Die Formeln, mit denen Sie diese Measures definieren können, sind im folgenden Codeabschnitt angegeben.

Fügen Sie den Zeilenbezeichnungen in einer leeren PivotTable die Datetime.[Calendar Year]-Spalte und anschließend die neu erstellten Measures hinzu. Die Ergebnisse sollten wie die folgende Tabelle aussehen:

Zeilenbeschriftungen

Countrows ALLNOBLANK of datetime

Countrows ALL of datetime

2001

1280

1281

2002

1280

1281

2003

1280

1281

2004

1280

1281

 

1280

1281

Gesamtsumme

1280

1281

Die Ergebnisse zeigen, dass es bei der Tabellenzeilenanzahl einen Unterschied von 1 Zeile gibt. Wenn Sie jedoch das PowerPivot-Fenster öffnen und die datetime-Tabelle auswählen, können Sie keine leere Zeile in der Tabelle finden, da die hier erwähnte spezielle leere Zeile das unbekannte Element ist.

Schritt 4: Überprüfen, ob die Anzahl genau ist

Um nachzuweisen, dass die ALLNOBLANKROW-Funktion keine tatsächlich leeren Zeilen zählt und nur die spezielle leere Zeile in der übergeordneten Tabelle behandelt, fügen Sie der ResellerSales_USD-Tabelle die folgenden beiden Measures hinzu: Countrows ALLNOBLANKROW of ResellerSales_USD, Countrows ALL of ResellerSales_USD.

Erstellen Sie eine neue PivotTable, und ziehen Sie die datetime.[Calendar Year]-Spalte in den Bereich Zeilenbezeichnungen. Fügen Sie jetzt die Measures hinzu, die Sie soeben erstellt haben. Die Ergebnisse sollten wie folgt aussehen:

Zeilenbeschriftungen

Countrows ALLNOBLANKROW of ResellerSales_USD

Countrows ALL of ResellerSales_USD

2001

60856

60856

2002

60856

60856

2003

60856

60856

2004

60856

60856

 

60856

60856

Gesamtsumme

60856

60856

Jetzt liefern die beiden Measures die gleichen Ergebnisse. Der Grund ist, dass die ALLNOBLANKROW-Funktion keine tatsächlich leeren Zeilen in einer Tabelle zählt, sondern nur die oben beschriebene spezielle leere Zeile behandelt. Diese wird in einer übergeordneten Tabelle generiert, wenn mindestens eine untergeordnete Tabelle in der Beziehung nicht übereinstimmende Werte oder leere Werte enthält.

// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))

// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime')) 

// Countrows ALLNOBLANKROW of ResellerSales_USD
=COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))

// Countrows ALL of ResellerSales_USD
=COUNTROWS(ALL('ResellerSales_USD'))

Siehe auch

Verweis

Andere Ressourcen