Fonction ALLSELECTED (DAX)
Supprime des filtres de contexte des colonnes et des lignes dans la requête actuelle, tout en conservant l'ensemble des autres filtres de contexte ou filtres explicites.
La fonction ALLSELECTED obtient le contexte qui représente toutes les lignes et colonnes de la requête, tout en conservant les filtres explicites et les filtres de contexte qui ne sont pas des filtres de lignes et de colonnes. Cette fonction peut être utilisée pour obtenir des valeurs totales affichées dans les requêtes.
Syntaxe
ALLSELECTED([<tableName> | <columnName>])
Paramètres
tableName
Nom d'une table existante, dans la syntaxe DAX standard. Ce paramètre ne peut pas être une expression. Ce paramètre est facultatif.columnName
Nom (complet, en règle générale) d'une colonne existante dans la syntaxe DAX standard. Il ne peut pas s'agir d'une expression. Ce paramètre est facultatif.
Valeur de retour
Contexte de la requête sans filtre de lignes et de colonnes.
Notes
Cette fonction ne prend qu'un seul argument, ou n'en prend aucun. S'il y a un argument, l'argument est tableName ou columnName.
Cette fonction est différente de ALL(), car elle conserve tous les filtres définis explicitement dans la requête, ainsi que tous les filtres de contexte qui ne sont pas des filtres de lignes et de colonnes.
Exemple
L'exemple suivant montre comment générer différents niveaux de valeurs totales affichées dans un rapport tabulaire à l'aide d'expressions DAX. Dans le rapport, deux (2) filtres précédents ont été appliqués aux données Reseller Sales : un sur Sales Territory Group = Europe et l'autre sur Type de promotion = Volume Discount. Une fois les filtres appliqués, les valeurs totales affichées peuvent être calculées pour l'ensemble du rapport, pour toutes les années ou pour toutes les catégories de produits. En outre, à des fins d'illustration, le total général de All Reseller Sales est également obtenu en supprimant tous les filtres du rapport. L'évaluation des résultats de l'expression DAX suivante se solde par une table contenant toutes les information requises pour générer une table avec les valeurs totales affichées.
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]
Après voir exécuté l'expression ci-dessus dans SQL Server Management Studio sur le modèle tabulaire AdventureWorks DW 2012, vous obtenez les résultats suivants :
[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 |
||
Composants |
2000 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Composants |
2001 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Composants |
2002 |
4958.1457 |
80450596.9823 |
877006.7987 |
53842.2111 |
91495.3104 |
Composants |
2003 |
48884.0654 |
80450596.9823 |
877006.7987 |
53842.2111 |
572927.0136 |
Composants |
2004 |
80450596.9823 |
877006.7987 |
53842.2111 |
212584.4747 |
|
Composants |
2005 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Composants |
2006 |
80450596.9823 |
877006.7987 |
53842.2111 |
Les colonnes du rapport sont les suivantes :
Reseller Sales Amount
Valeur réelle des ventes du revendeur pour l'année et la catégorie de produit. Cette valeur s'affiche dans une cellule au centre de votre rapport, à l'intersection de l'année et de la catégorie.Reseller Visual Total for All of Calendar Year
Valeur totale pour une catégorie de produits pour toutes les années. Cette valeur s'affiche à la fin d'une colonne ou d'une ligne pour une catégorie de produits donnée et pour toutes les années du rapport.Reseller Visual Total for All of Product Category Name
Valeur totale pour une année pour toutes les catégories de produits. Cette valeur s'affiche à la fin d'une colonne ou d'une ligne pour une année donnée et pour toutes les catégories de produits du rapport.Reseller Visual Total
Valeur totale pour toutes les années et toutes les catégories de produits. Cette valeur s'affiche généralement dans l'angle inférieur droit de la table.Reseller Grand Total
Il s'agit du total général pour toutes les ventes du revendeur, avant l'application d'un quelconque filtre ; vous devez remarquer la différence avec [Reseller Visual Total]. Vous devez vous souvenir que ce rapport inclut deux (2) filtres, un sur le groupe Product Category et l'autre sur Type de promotion.
L'exemple suivant illustre l'utilisation de ALLSELECTED() sans arguments pour montrer comment calculer un ratio par rapport à la valeur totale affichée dans une table filtrée à l'aide de segments horizontaux et verticaux. Cet exemple utilise SQL Server 2012, PowerPivot pour Excel et les exemples de données PowerPivot (DAX_AdventureWorks).
Dans la liste de champs PowerPivot, faites glisser la colonne ResellerSales[SalesAmount_USD] vers la zone Valeurs.
Faites glisser Promotion[PromotionType] vers la zone Segments verticaux. Sélectionnez les segments pour Discontinued Product, Excess Inventory et Seasonal Discount.
Faites glisser SalesTerritory[SalesTerritoryGroup] vers la zone Segments horizontaux. Sélectionnez le segment pour Europe.
La valeur de Sum Of SalesAmount_USD doit être égale à 19 614,37 $
Faites glisser ProductCategory[ProductCategoryName] vers la zone Étiquettes de ligne et DateTime[CalendarYear] vers la zone Étiquettes de colonne.
Votre table doit ressembler à ce qui suit :
SalesTerritoryGroup
Europe
North America
Pacific
N/A
PromotionType
Discontinued Product
Sum of SalesAmount_USD
Étiquettes de colonne
Excess Inventory
Étiquettes de ligne
2006
2007
2008
Total général
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
Total général
$9,946.16
$3,414.43
$6,253.78
$19,614.37
Volume Discount
À l'aide d'une calculatrice, vérifiez que le montant 3 414,43 $ (pour Accessories en 2007) représente 17,41 % de 19 614,37 $.
À l'aide d'une calculatrice, vérifiez que le montant 6 253,78 $ (pour Bikes en 2008) représente 31,88 % de 19 614,37 $.
À l'aide d'une calculatrice, vérifiez que le montant 15 088,72 $ (pour Bikes - Total général) représente 76,93 % de 19 614,37 $.
Supprimez ResellerSales[SalesAmount_USD] de la zone Valeurs.
Créez une mesure nommée Reseller Sales Ratio dans la table ResellerSales, à l'aide de la formule suivante (mettez en forme le résultat en tant que pourcentage) :
=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())
Votre table doit ressembler à ceci :
SalesTerritoryGroup |
||||||
Europe |
North America |
|||||
Pacific |
N/A |
|||||
PromotionType |
||||||
Discontinued Product |
Reseller Sales Ratio |
Étiquettes de colonne |
||||
Excess Inventory |
Étiquettes de ligne |
2006 |
2007 |
2008 |
Total général |
|
New Product |
Accessories |
5.67 % |
17.41 % |
23.07 % |
||
No Discount |
Bikes |
45.04 % |
31.88 % |
76.93 % |
||
Seasonal Discount |
Total général |
50.71 % |
17.41 % |
31.88 % |
100.00 % |
|
Volume Discount |
Si vous comparez les résultats de votre calculatrice à ceux fournis par Reseller Sales Ratio, ils doivent correspondre ; la valeur de votre dénominateur est fixe comme la valeur située au bas de la table.
Dans la mesure où la formule CALCULATE du dénominateur utilise la fonction ALLSELECTED, le dénominateur représente le total général des ventes, au bas de la table, après application des segments verticaux, horizontaux et de page, mais avant application des segments de ligne et de colonne.
Remarque : si vous disposez de filtres explicites dans votre expression, ces filtres sont également appliqués à l'expression.