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.