ALL

Retourne toutes les lignes d’une table, ou toutes les valeurs d’une colonne, en ignorant les filtres qui ont été éventuellement appliqués. Cette fonction est utile pour effacer les filtres et créer des calculs sur toutes les lignes d’une table.

Syntaxe

ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )  

Paramètres

Terme Définition
tableau Table dont vous voulez effacer les filtres.
colonne Colonne dont vous voulez effacer les filtres.

L’argument passé à la fonction ALL doit être une référence à une table de base ou à une colonne de base. Vous ne pouvez pas utiliser d’expressions de table ni d’expressions de colonne avec la fonction ALL.

Valeur de retour

Table ou colonne dont les filtres ont été supprimés.

Remarques

  • Cette fonction ne s’utilise pas seule : elle fait office de fonction intermédiaire qui permet de changer le jeu de résultats sur duquel un autre calcul est effectué.

  • Le comportement normal des expressions DAX contenant la fonction ALL() consiste à ignorer tous les filtres appliqués. Toutefois, il existe des scénarios où ce n’est pas le cas en raison d’existence automatique, technologie DAX qui optimise le filtrage afin de réduire la quantité de traitement nécessaire pour certaines requêtes DAX. Par exemple, l’existence automatique et ALL() fournissent des résultats inattendus lors du filtrage d’au moins deux colonnes de la même table (comme lors de l’utilisation de segments) et s’il y a une mesure sur cette table qui utilise ALL(). Dans ce cas, l’existence automatique fusionne les différents filtres en un seul et filtre uniquement les combinaisons de valeurs existantes. En raison de cette fusion, la mesure est calculée sur les combinaisons de valeurs existantes et le résultat est basé sur les valeurs filtrées et non sur toutes les valeurs comme prévu. Pour en savoir plus sur l’existence automatique et son effet sur les calculs, consultez l’article Understanding DAX Auto-Exist du MVP Microsoft, Alberto Ferrari, sur sql.bi.com.

  • Le tableau suivant décrit comment vous pouvez utiliser les fonctions ALL et ALLEXCEPT dans différents scénarios.

    Fonction et utilisation Description
    ALL() Supprime tous les filtres partout. La fonction ALL() peut être utilisée uniquement pour effacer des filtres, et non pour retourner une table.
    ALL(Table) Supprime tous les filtres de la table spécifiée. En effet, ALL(Table) retourne toutes les valeurs de la table, en supprimant tous les filtres du contexte qui auraient pu autrement être appliqués. Cette fonction s’avère utile quand vous utilisez divers niveaux de regroupement et que vous voulez créer un calcul qui établit un rapport entre une valeur agrégée et la valeur totale. Le premier exemple illustre ce scénario.
    ALL (Column[, Column[, …]]) Supprime tous les filtres des colonnes spécifiées de la table ; tous les autres filtres des autres colonnes de la table continuent de s’appliquer. Tous les arguments de colonne doivent provenir de la même table. La variante ALL(Column) est utile quand vous voulez supprimer les filtres de contexte pour une ou plusieurs colonnes spécifiques et conserver tous les autres filtres de contexte. Les deuxième et troisième exemples illustrent ce scénario.
    ALLEXCEPT(Table, Column1 [,Column2]...) Supprime tous les filtres de contexte de la table, à l’exception des filtres appliqués aux colonnes spécifiées. C’est une méthode simple à utiliser si vous souhaitez supprimer les filtres sur beaucoup de colonnes, mais pas sur toutes, dans une table.
  • Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery quand elle est utilisée dans des colonnes calculées ou des règles de sécurité au niveau des lignes (RLS).

Exemple 1

Calculer le ratio des ventes par catégorie par rapport au total des ventes

Supposez que vous voulez calculer le montant des ventes pour la cellule active, dans votre tableau croisé dynamique, divisé par le total des ventes pour tous les revendeurs. Pour faire en sorte que le dénominateur soit le même quel que soit le mode de filtrage ou de regroupement de données employé par l’utilisateur du tableau croisé dynamique, vous définissez une formule qui utilise ALL pour créer le total général exact.

Le tableau suivant présente les résultats obtenus quand la nouvelle mesure All Reseller Sales Ratio est créée en à partir de la formule présentée dans la section de code. Pour voir comment cela fonctionne, ajoutez le champ CalendarYear à la zone Étiquettes de lignes du tableau croisé dynamique, puis ajoutez le champ ProductCategoryName à la zone Étiquettes de colonnes. Ensuite, faites glisser la mesure All Reseller Sales Ratio vers la zone Valeurs du tableau croisé dynamique. Pour afficher les résultats sous forme de pourcentages, utilisez les fonctionnalités de mise en forme d’Excel pour appliquer une mise en forme de pourcentage aux cellules qui contiennent la mesure.

Étiquettes de ligne Accessories Bikes Clothing Components Total général
2005 0,02 % 9,10 % 0,04 % 0,75 % 9,91 %
2006 0,11 % 24,71 % 0,60 % 4,48 % 29,90 %
2007 0,36 % 31,71 % 1,07 % 6,79 % 39,93 %
2008 0,20 % 16,95 % 0,48 % 2,63 % 20,26 %
Total général 0,70 % 82,47 % 2,18 % 14,65 % 100,00 %

Formule

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  

La formule est construite comme suit :

  1. Le numérateur SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) est la somme des valeurs de ResellerSales_USD[SalesAmount_USD] pour la cellule active du tableau croisé dynamique, avec les filtres de contexte appliqués à CalendarYear et ProductCategoryName.

  2. Pour le dénominateur, vous commencez par spécifier une table, ResellerSales_USD, et utilisez la fonction ALL pour supprimer tous les filtres de contexte de la table.

  3. Vous utilisez ensuite la fonction SUMX pour calculer la somme des valeurs de la colonne ResellerSales_USD[SalesAmount_USD]. Autrement dit, vous obtenez la somme de ResellerSales_USD[SalesAmount_USD] pour les ventes de tous les revendeurs.

Exemple 2

Calculer le ratio des ventes de produits par rapport au total des ventes tout au long de l’année en cours

Supposez que vous voulez créer un tableau comparant le pourcentage de ventes au fil des ans pour chaque catégorie de produit (ProductCategoryName). Pour obtenir le pourcentage pour chaque année et chaque valeur de ProductCategoryName, vous devez diviser la somme des ventes pour l’année et la catégorie de produit en question par la somme des ventes de cette même catégorie de produit de toutes les années. En d’autres termes, vous devez conserver le filtre sur ProductCategoryName, mais supprimer celui appliqué à l’année au moment de calculer le dénominateur du pourcentage.

Le tableau suivant présente les résultats obtenus quand la nouvelle mesure Reseller Sales Year est créée à partir de la formule présentée dans la section de code. Pour voir comment cela fonctionne, ajoutez le champ CalendarYear à la zone Étiquettes de ligne d’un tableau croisé dynamique et ajoutez le champ ProductCategoryName à la zone Étiquettes de colonne. Pour afficher les résultats sous forme de pourcentages, utilisez les fonctionnalités de mise en forme d’Excel pour appliquer un format numérique de pourcentage aux cellules contenant la mesure Reseller Sales Year.

Étiquettes de ligne Accessories Bikes Clothing Components Total général
2005 3,48 % 11,03 % 1,91 % 5,12 % 9,91 %
2006 16,21 % 29,96 % 27,29 % 30,59 % 29,90 %
2007 51,62 % 38,45 % 48,86 % 46,36 % 39,93 %
2008 28,69 % 20,56 % 21,95 % 17,92 % 20,26 %
Total général 100,00 % 100,00 % 100,00 % 100,00 % 100,00 %

Formule

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))  

La formule est construite comme suit :

  1. Le numérateur SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) est la somme des valeurs de ResellerSales_USD[SalesAmount_USD] pour la cellule active du tableau croisé dynamique, avec les filtres de contexte appliqués aux colonnes CalendarYear et ProductCategoryName.

  2. Pour le dénominateur, vous supprimez le filtre existant de CalendarYear à l’aide de la fonction ALL(Column). Cette fonction calcule la somme sur les lignes restantes de la table ResellerSales_USD, après application des filtres de contexte existants des étiquettes de colonnes. Résultat final pour le dénominateur : la somme est calculée sur la colonne ProductCategoryName sélectionnée (filtre de contexte implicite) et pour toutes les valeurs de l’année.

Exemple 3

Calculer la contribution des catégories de produit par rapport au total des ventes par an

Supposez que vous voulez créer une table qui présente le pourcentage des ventes pour chaque catégorie de produit, année par année. Pour obtenir le pourcentage de chaque catégorie de produit pour une année déterminée, vous devez calculer la somme des ventes dans ladite catégorie de produit (ProductCategoryName) pour l’année n, puis diviser la valeur obtenue par la somme des ventes de l’année n pour toutes les catégories de produit. En d’autres termes, vous devez conserver le filtre sur l’année, mais supprimer celui appliqué à ProductCategoryName au moment de calculer le dénominateur du pourcentage.

Le tableau suivant présente les résultats obtenus quand la nouvelle mesure Reseller Sales CategoryName est créée à partir de la formule présentée dans la section de code. Pour voir comment cela fonctionne, ajoutez le champ CalendarYear à la zone Étiquettes de lignes du tableau croisé dynamique, puis ajoutez le champ ProductCategoryName à la zone Étiquettes de colonnes. Ajoutez ensuite la nouvelle mesure à la zone Valeurs du tableau croisé dynamique. Pour afficher les résultats sous forme de pourcentages, utilisez les fonctionnalités de mise en forme d’Excel pour appliquer un format numérique de pourcentage aux cellules qui contiennent la nouvelle mesure, Reseller Sales CategoryName.

Étiquettes de ligne Accessories Bikes Clothing Components Total général
2005 0,25 % 91,76 % 0,42 % 7,57 % 100,00 %
2006 0,38 % 82,64 % 1,99 % 14,99 % 100,00 %
2007 0,90 % 79,42 % 2,67 % 17,01 % 100,00 %
2008 0,99 % 83,69 % 2,37 % 12,96 % 100,00 %
Total général 0,70 % 82,47 % 2,18 % 14,65 % 100,00 %

Formule

= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))  

La formule est construite comme suit :

  1. Le numérateur SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) est la somme des valeurs de ResellerSales_USD[SalesAmount_USD] pour la cellule active du tableau croisé dynamique, avec les filtres de contexte appliqués aux champs CalendarYear et ProductCategoryName.

  2. Pour le dénominateur, vous utilisez la fonction ALL(Column) pour supprimer le filtre de ProductCategoryName et calculer la somme sur les lignes restantes de la table ResellerSales_USD, après application des filtres de contexte existants des étiquettes de lignes. Résultat final pour le dénominateur : la somme est calculée pour l’année sélectionnée (filtre de contexte implicite) et toutes les valeurs de ProductCategoryName.

Fonctions de filtrage
ALL, fonction
ALLEXCEPT, fonction
FILTER, fonction