CALCULATE()


La fonction DISTINCTCOUNT() prend une colonne de table en entrée, crée une table virtuelle des valeurs uniques (supprime les doublons), puis compte les lignes de cette table virtuelle avant de retourner la valeur. Par exemple la mesure : Distinct = DISTINCTCOUNT(‘Gd livre'[Compte]) Retournera le nombre de comptes présents dans la table ‘Gd livre’, en fonction du contexte. Comme prévu, la mesure réagit au contexte du tableau, et retourne le nombre de comptes utilisés selon les mois. Cette fonction peut aussi être utilisée en prenant deux tables liées comme paramètres. Par exemple, si nous souhaitons calculer le nombre de catégories de produits mouvementées dans nos stocks, par périodes, nous pouvons créer la mesure suivante : TotalCategoriesMouvementées = CALCULATE( DISTINCTCOUNT(Produits[Catégorie] );’Mouvements de stock’ ) Le fait d’inclure DISTINCTCOUNT() dans une fonction CALCULATE() nous permet d’utiliser la table ‘Mouvements de stocks’ comme filtre de la table mono-colonne Produits[Catégorie] . Le tableau retourne pour chaque jour, le nombre de catégories de produits mouvementés dans les stocks. Si nous ne voulions calculer que les catégories sorties du stock, il nous suffirait de modifier le second paramètre de la fonction, en filtrant la table ‘Mouvements de stock’. TotalCategoriesMouvementées = CALCULATE( DISTINCTCOUNT( Produits[Catégorie] ); FILTER(‘Mouvements de stock’;’Mouvements stock'[Mouvement ]= »S » […]

DAX – DISTINCTCOUNT()



CALCULATE() est certainement l’une des fonctions les plus puissantes et les plus utiles du langage DAX. On peut la comparer à la fonction SUMIF() d’Excel, sans ses limitations. Anatomie de la fonction : =CALCULATE(<aggrégateur>, <filtre1>, <filtre2>, … ) Agrégateurs SUM ([Colonne]) SUM ([Colonne1]) / MIN ([Colonne2]) MIN(),AVERAGE(),SUMX() …Ou une autre mesure définie [Mesure 1]. Filtres Avec CALCULATE() nous pouvons non seulement réaliser n’importe quel calcul, mais nous pouvons appliquer autant de filtres que nous le souhaitons sur les données source ! Par exemple, créons une nouvelle mesure dans notre table ‘Gd livre’. MesureExemple = CALCULATE( SUM(‘Gd livre'[Solde]);’Gd livre'[C.j]= »ACH »; ‘Gd livre'[Racine]=607; ‘Gd livre'[Centre Analytique]= »Centre A » ) Cette mesure calcule le total des soldes des écritures du journal des Achats, pour chaque compte dont la racine est 607, et uniquement pour le Centre analytique « Centre A ». CAlCULATE() + ALL() : Du lourd !! Nous n’avons pas jusqu’à présent rencontré encore  la fonction ALL(). Son utilité est simple à décrire : ALL() neutralise tous les filtres appliqués. Reprenons notre exemple précédent, en transformant la carte en histogramme groupé. Maintenant glissons le champs [MoisNom] dans la case Axe. Notre [mesure1] est maintenant « découpée » par mois, c’est-à-dire qu’en arrière-plan, un nouveau filtre s’applique sur chaque barre : Barre du mois de Janvier : […]

DAX – CALCULATE() – Introduction