ALLSELECTED-Funktion (DAX)
Entfernt Kontextfilter aus Spalten und Zeilen in der aktuellen Abfrage, während alle anderen Kontextfilter oder expliziten Filter beibehalten werden.
Die ALLSELECTED-Funktion ruft den Kontext ab, der alle Zeilen und Spalten in der Abfrage darstellt, während andere explizite Filter und Kontexte als Zeilen- und Spaltenfilter beibehalten werden. Diese Funktion kann verwendet werden, um sichtbare Gesamtwerte in Abfragen abzurufen.
Syntax
ALLSELECTED([<tableName> | <columnName>])
Parameter
tableName
Der Name einer vorhandenen Tabelle mit Standard-DAX-Syntax. Dieser Parameter kann kein Ausdruck sein. Dieser Parameter ist optional.columnName
Der Name einer vorhandenen Spalte mit Standard-DAX-Syntax, normalerweise vollqualifiziert. Kann kein Ausdruck sein. Dieser Parameter ist optional.
Rückgabewert
Der Kontext der Abfrage ohne Spalten- und Zeilenfilter.
Hinweise
Diese Funktion akzeptiert ein oder keine Argumente. Wenn ein Argument vorhanden ist, ist das Argument entweder tableName oder columnName.
Diese Funktion unterscheidet sich von ALL(), da sie alle innerhalb der Abfrage explizit festgelegten Filter beibehält und alle Kontextfilter außer Zeilen- und Spaltenfilter beibehält.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie mithilfe von DAX-Ausdrücken verschiedene sichtbare Gesamtwerte in einem Tabellenbericht generiert werden. Im Bericht wurden zwei (2) vorherige Filter auf die Reseller Sales-Daten angewendet: ein Filter auf "Sales Territory Group = Europe" und der zweite auf "Promotion Type = Volume Discount". Sobald die Filter angewendet wurden, können sichtbare Gesamtwerte für den gesamten Bericht, für alle Jahre (All Years) oder für alle Produktkategorien (All Product Categories) berechnet werden. Darüber hinaus wird zur Veranschaulichung das Gesamtergebnis für alle Verkäufe von Wiederverkäufern (All Reseller Sales) abgerufen, wobei alle Filter im Bericht entfernt werden. Die Auswertung des folgenden DAX-Ausdrucks ergibt eine Tabelle mit sämtlichen Informationen, die zum Erstellen einer Tabelle mit sichtbaren Gesamtwerten erforderlich sind.
define
measure 'Reseller Sales'[Reseller Sales Amount]=sum('Reseller Sales'[Sales Amount])
measure 'Reseller Sales'[Reseller Grand Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALL('Reseller Sales'))
measure 'Reseller Sales'[Reseller Visual Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED())
measure 'Reseller Sales'[Reseller Visual Total for All of Calendar Year]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Date'[Calendar Year]))
measure 'Reseller Sales'[Reseller Visual Total for All of Product Category Name]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Product Category'[Product Category Name]))
evaluate
CalculateTable(
//CT table expression
summarize(
//summarize table expression
crossjoin(distinct('Product Category'[Product Category Name]), distinct('Date'[Calendar Year]))
//First Group by expression
, 'Product Category'[Product Category Name]
//Second Group by expression
, 'Date'[Calendar Year]
//Summary expressions
, "Reseller Sales Amount", [Reseller Sales Amount]
, "Reseller Grand Total", [Reseller Grand Total]
, "Reseller Visual Total", [Reseller Visual Total]
, "Reseller Visual Total for All of Calendar Year", [Reseller Visual Total for All of Calendar Year]
, "Reseller Visual Total for All of Product Category Name", [Reseller Visual Total for All of Product Category Name]
)
//CT filters
, 'Sales Territory'[Sales Territory Group]="Europe", 'Promotion'[Promotion Type]="Volume Discount"
)
order by [Product Category Name], [Calendar Year]
Nachdem der oben aufgeführte Ausdruck in SQL Server Management Studio für AdventureWorks DW Tabular Model 2012 ausgeführt wurde, erhalten Sie folgende Ergebnisse:
[Product Category Name] |
[Calendar Year] |
[Reseller Sales Amount] |
[Reseller Grand Total] |
[Reseller Visual Total] |
[Reseller Visual Total for All of Calendar Year] |
[Reseller Visual Total for All of Product Category Name] |
---|---|---|---|---|---|---|
Accessories |
2000 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2001 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2002 |
625.7933 |
80450596.9823 |
877006.7987 |
38786.018 |
91495.3104 |
Accessories |
2003 |
26037.3132 |
80450596.9823 |
877006.7987 |
38786.018 |
572927.0136 |
Accessories |
2004 |
12122.9115 |
80450596.9823 |
877006.7987 |
38786.018 |
212584.4747 |
Accessories |
2005 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2006 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Bikes |
2000 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2001 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2002 |
73778.938 |
80450596.9823 |
877006.7987 |
689287.7939 |
91495.3104 |
Bikes |
2003 |
439771.4136 |
80450596.9823 |
877006.7987 |
689287.7939 |
572927.0136 |
Bikes |
2004 |
175737.4423 |
80450596.9823 |
877006.7987 |
689287.7939 |
212584.4747 |
Bikes |
2005 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2006 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Clothing |
2000 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2001 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2002 |
12132.4334 |
80450596.9823 |
877006.7987 |
95090.7757 |
91495.3104 |
Clothing |
2003 |
58234.2214 |
80450596.9823 |
877006.7987 |
95090.7757 |
572927.0136 |
Clothing |
2004 |
24724.1209 |
80450596.9823 |
877006.7987 |
95090.7757 |
212584.4747 |
Clothing |
2005 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2006 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Components |
2000 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2001 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2002 |
4958.1457 |
80450596.9823 |
877006.7987 |
53842.2111 |
91495.3104 |
Components |
2003 |
48884.0654 |
80450596.9823 |
877006.7987 |
53842.2111 |
572927.0136 |
Components |
2004 |
80450596.9823 |
877006.7987 |
53842.2111 |
212584.4747 |
|
Components |
2005 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2006 |
80450596.9823 |
877006.7987 |
53842.2111 |
Die Spalten im Bericht sind:
Reseller Sales Amount
Der Istwert von "Reseller Sales" für das Jahr und die Produktkategorie. Dieser Wert wird in einer Zelle in der Mitte des Berichts am Schnittpunkt von Jahr und Kategorie angezeigt.Reseller Visual Total for All of Calendar Year
Der Gesamtwert einer Produktkategorie übergreifend über sämtliche Jahre. Dieser Wert wird am Ende einer Spalte oder Zeile für eine bestimmte Produktkategorie und über sämtliche Jahre im Bericht angezeigt.Reseller Visual Total for All of Product Category Name
Der Gesamtwert eines Jahres übergreifend über sämtliche Produktkategorien. Dieser Wert wird am Ende einer Spalte oder Zeile für ein bestimmtes Jahr und über sämtliche Produktkategorien im Bericht angezeigt.Reseller Visual Total
Der Gesamtwert für alle Jahre und Produktkategorien. Dieser Wert wird normalerweise in der unteren rechten Ecke der Tabelle angezeigt.Reseller Grand Total
Dies ist das Gesamtergebnis für alle Verkäufe von Wiederverkäufern, bevor Filter angewendet wurden. Beachten Sie die Differenz zu [Reseller Visual Total]. Wie bereits erwähnt, enthält dieser Bericht zwei (2) Filter: einen für "Product Category Group" und einen weiteren für "Promotion Type".
Im folgenden Beispiel wird die Verwendung von ALLSELECTED() ohne Argumente gezeigt, um anzuzeigen, wie ein Verhältnis für den in einer Tabelle dargestellten Gesamtwert, gefiltert mithilfe horizontaler und vertikaler Slicer, berechnet wird. In diesem Beispiel werden SQL Server 2012, PowerPivot für Excel und PowerPivot Sample Data (DAX_AdventureWorks) verwendet.
Ziehen Sie in der PowerPivot-Feldliste die Spalte ResellerSales[SalesAmount_USD] in den Bereich Werte.
Ziehen Sie Promotion[PromotionType] in den Bereich Slicer vertikal. Wählen Sie die Slicer für Discontinued Product, Excess Inventory und Seasonal Discount aus.
Ziehen Sie SalesTerritory[SalesTerritoryGroup] in den Bereich Slicer horizontal. Wählen Sie den Slicer für Europe aus.
Der Wert von Sum Of SalesAmount_USD sollte $19,614.37 lauten.
Ziehen Sie ProductCategory[ProductCategoryName] in den Bereich Zeilenbezeichnungen und DateTime[CalendarYear] in den Bereich Spaltenbezeichnungen.
Die Tabelle sollte etwa wie folgt aussehen:
SalesTerritoryGroup
Europe
North America
Pacific
NA
PromotionType
Discontinued Product
Sum of SalesAmount_USD
Spaltenbezeichnungen
Excess Inventory
Zeilenbezeichnungen
2006
2007
2008
Gesamtergebnis
New Product
Accessories
$1,111.22
$3,414.43
$4,525.66
No Discount
Bikes
$8,834.94
$6,253.78
$15,088.72
Seasonal Discount
Grand Total
$9,946.16
$3,414.43
$6,253.78
$19,614.37
Volume Discount
Überprüfen Sie manuell, dass der Betrag $3,414.43 (für Accessories in Jahr 2007) 17,41 % von $19,614.37 darstellt.
Überprüfen Sie manuell, dass der Betrag $6,253.78 (für Bikes im Jahr 2008) 31,88 % von $19,614.37 darstellt.
Überprüfen Sie manuell, dass der Betrag $15,088.72 (für das Gesamtergebnis von Bikes) 76,93% von $19,614.37 darstellt.
Entfernen Sie ResellerSales[SalesAmount_USD] aus dem Bereich Werte.
Erstellen Sie ein Measure mit der Bezeichnung Reseller Sales Ratio in der Tabelle "ResellerSales" mithilfe der folgenden Formel (formatieren Sie das Ergebnis als Prozentwert):
=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())
Die Tabelle sollte wie folgt aussehen:
SalesTerritoryGroup |
||||||
Europe |
North America |
|||||
Pacific |
NA |
|||||
PromotionType |
||||||
Discontinued Product |
Reseller Sales Ratio |
Spaltenbezeichnungen |
||||
Excess Inventory |
Zeilenbezeichnungen |
2006 |
2007 |
2008 |
Gesamtergebnis |
|
New Product |
Accessories |
5.67 % |
17.41 % |
23.07 % |
||
No Discount |
Bikes |
45.04 % |
31.88 % |
76.93 % |
||
Seasonal Discount |
Grand Total |
50.71 % |
17.41 % |
31.88 % |
100.00 % |
|
Volume Discount |
Vergleichen Sie die manuellen Rechenergebnisse mit den Ergebnissen aus Reseller Sales Ratio, diese sollten übereinstimmen. Der Wert des Nenners ist als der Wert am unteren Rand der Tabelle festgelegt.
Da die CALCULATE-Formel im Nenner die ALLSELECTED-Funktion verwendet, stellt der Nenner das Gesamtergebnis von Verkäufen am unteren Rand der Tabelle dar, nachdem die vertikalen, horizontalen und Seitenslicer, jedoch bevor die Zeilen- und Spaltenslicer angewendet wurden.
Hinweis: Wenn im Ausdruck explizite Filter enthalten sind, werden diese Filter ebenfalls auf den Ausdruck angewendet.