Funzione ALLSELECTED (DAX)
Vengono rimossi filtri di contesto da colonne e righe nella query corrente, mantenendo tutti gli altri filtri di contesto o filtri espliciti.
La funzione ALLSELECTED consente di ottenere il contesto in cui sono rappresentate tutte le righe e le colonne nella query, mantenendo filtri e contesti espliciti diversi dai filtri di riga e colonna. Questa funzione può essere utilizzata per ottenere i totali visualizzati nelle query.
Sintassi
ALLSELECTED([<tableName> | <columnName>])
Parametri
tableName
Nome di una tabella esistente tramite la sintassi DAX standard. Questo parametro non può essere un'espressione. Questo parametro è facoltativo.columnName
Nome di una colonna esistente tramite la sintassi DAX standard, di solito completo. Non può essere un'espressione. Questo parametro è facoltativo.
Valore restituito
Contesto della query senza filtri di colonna e riga.
Osservazioni
Questa funzione consente di accettare uno o nessun argomento. Se è disponibile un argomento, sarà uno dei parametri tableName o columnName
Questa funzione è diversa da ALL() perché consente di mantenere tutti i filtri impostati in modo esplicito all'interno della query nonché tutti i filtri di contesto diversi da quelli di riga e colonna.
Esempio
Nell'esempio seguente viene mostrato come generare livelli differenti di totali visualizzati in un report tabella mediante espressioni DAX. Nel report due (2) i filtri precedenti sono stati applicati ai dati Reseller Sales, vale a dire uno su Sales Territory Group = Europe e l'altro su Promotion Type = Volume Discount. Una volta applicati i filtri, i totali visualizzati possono essere calcolati per il report intero, per All Years o per All Product Categories. Inoltre, per scopi illustrativi, si ottiene anche il totale complessivo per All Reseller Sales, rimuovendo tutti i filtri nel report. La valutazione dell'espressione DAX seguente comporta la generazione di una tabella con tutte le informazioni necessarie per compilare una tabella con i totali visualizzati.
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]
Dopo aver eseguito l'espressione sopra indicata in SQL Server Management Studio su AdventureWorks DW Tabular Model 2012, si ottengono i risultati seguenti:
[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 |
Le colonne nel report sono:
Reseller Sales Amount
Valore effettivo di Reseller Sales per l'anno e la categoria di prodotti. Questo valore viene visualizzato in una cella al centro del report, in corrispondenza dell'intersezione tra anno e categoria.Reseller Visual Total for All of Calendar Year
Valore totale per una categoria di prodotti in tutti gli anni. Questo valore viene visualizzato alla fine di una colonna o riga per una categoria di prodotti specificata e in tutti gli anni nel report.Reseller Visual Total for All of Product Category Name
Valore totale per un anno in tutte le categorie di prodotti. Questo valore viene visualizzato alla fine di una colonna o riga per un anno specificato e in tutte le categorie di prodotti nel report.Reseller Visual Total
Valore totale per tutti gli anni e per tutte le categorie di prodotti. Questo valore viene visualizzato di solito nell'angolo inferiore più a destra della tabella.Reseller Grand Total
Si tratta del totale complessivo per tutte le vendite del rivenditore, prima che sia stato applicato qualsiasi filtro. È opportuno notare la differenza con [Reseller Visual Total]. Si tenga presente che in questo report sono inclusi due (2) filtri, uno su Product Category Group e l'altro su Promotion Type.
Nell'esempio seguente viene mostrato l'utilizzo di ALLSELECTED() senza argomenti per illustrare in che modo calcolare un rapporto in base al valore totale mostrato in una tabella filtrata utilizzando filtri dei dati orizzontali e verticali. In questo esempio viene utilizzato SQL Server 2012, PowerPivot per Excel e idati di esempio PowerPivot (DAX_AdventureWorks).
Nell'elenco di campi di PowerPivot trascinare la colonna ResellerSales[SalesAmount_USD] nell'area Valori.
Trascinare Promotion[PromotionType] nell'area Filtro dei dati verticale. Selezionare il filtro dei dati per Discontinued Product, Excess Inventory e Seasonal Discount.
Trascinare SalesTerritory[SalesTerritoryGroup] nell'area Filtro dei dati orizzontale. Selezionare il filtro dei dati per Europe.
Il valore di Sum Of SalesAmount_USD deve essere $19.614,37.
Trascinare ProductCategory[ProductCategoryName] nell'area Etichette di riga e DateTime[CalendarYear] nell'area Etichette di colonna.
La tabella dovrebbe essere simile a:
SalesTerritoryGroup
Europe
North America
Pacific
ND
PromotionType
Discontinued Product
Sum of SalesAmount_USD
Column Labels
Excess Inventory
Row Labels
2006
2007
2008
Grand Total
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
Utilizzando una calcolatrice, verificare che la somma $ 3.414,43 (per Accessories nel 2007) rappresenti il 17,41% di $ 19.614,37.
Utilizzando una calcolatrice, verificare che la somma $6.253,78 (per Bikes nel 2008) rappresenti il 31,88% di $ 19.614,37.
Utilizzando una calcolatrice, verificare che la somma $ 15.088,72 (per Bikes Grand Total) rappresenti il 76,93% di $ 19.614,37.
Rimuovere ResellerSales[SalesAmount_USD] dall'area Valori.
Creare una misura, denominata Reseller Sales Ratio, nella tabella ResellerSales utilizzando la formula seguente (formattare il risultato come percentuale):
=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())
La tabella dovrebbe essere simile alla seguente:
SalesTerritoryGroup |
||||||
Europe |
North America |
|||||
Pacific |
ND |
|||||
PromotionType |
||||||
Discontinued Product |
Reseller Sales Ratio |
Column Labels |
||||
Excess Inventory |
Row Labels |
2006 |
2007 |
2008 |
Grand Total |
|
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 |
Confrontare i risultati della calcolatrice con quelli forniti da Reseller Sales Ratio e assicurarsi che corrispondano; il valore del denominatore viene fissato come valore nella parte inferiore della tabella.
Poiché tramite la formula CALCULATE nel denominatore viene utilizza la funzione ALLSELECTED, con il denominatore si rappresenta il totale complessivo di vendite, nella parte inferiore della tabella, dopo che i filtri dei dati verticali, orizzontali e di pagina sono stati applicati, ma, prima che lo siano i filtri dei dati di riga e colonna.
Nota: se si dispone di filtri espliciti nell'espressione, tali filtri vengono applicati anche all'espressione.