top of page
Rechercher

Fonction DISTINCTCOUNT DAX: compter les valeurs uniques

  • Groupe Kronoscope
  • 11 août
  • 4 min de lecture


En DAX, la fonction DISTINCTCOUNT permet de compter le nombre de valeurs différentes dans une colonne, sans compter les doublons.


Exemple :

Client : Dupont, Martin, Dupont, Durand

DISTINCTCOUNT = 3


Car il y a 3 clients différents : Dupont, Martin et Durand. Toute la fonction tient dans cette différence.

Attention : dans un visuel Power BI, le total ne fait pas la somme des lignes.





Fonction DISTINCTCOUNT : syntaxe et valeur renvoyée

Syntaxe

DISTINCTCOUNT ( <colonne> )


Le paramètre unique

La fonction accepte un seul argument : une colonne. Le type de données n'a pas d'importance : texte, nombre, date ou identifiant. Vous ne pouvez pas lui passer une expression ni une table entière.


Ce que la fonction renvoie

Elle renvoie le nombre de valeurs distinctes trouvées dans le contexte de filtre. Autrement dit, le résultat change selon le mois, la zone ou le segment sélectionné.

S'il n'y a aucune ligne à compter, elle renvoie BLANK, pas zéro. La valeur vide compte comme une valeur à part entière.


Exemple : compter les clients actifs

Prenons une table Ventes, avec une ligne par commande et l'identifiant du client. La question métier est simple : combien de clients ont réellement commandé sur la période ?

Clients actifs =
DISTINCTCOUNT ( Ventes[IDClient] )

Un client qui passe douze commandes ne compte qu'une seule fois. Posée dans une matrice par mois, la mesure suit le contexte de filtre.



Infographie Power BI : DISTINCTCOUNT ignore les doublons, clients Dupont, Martin, Dupont barré et Durand, résultat 3.


La mesure à copier dans votre modèle

Voici la version générique, prête à coller. Deux éléments seulement sont à adapter : le nom de la table et celui de la colonne.

Valeurs uniques =
DISTINCTCOUNT ( 'VotreTable'[VotreColonne] )

Besoin de figer une condition ? Combinez la fonction avec CALCULATE :

Clients actifs 2025 =
CALCULATE (
    DISTINCTCOUNT ( 'VotreTable'[VotreColonne] ),
    'Calendrier'[Annee] = 2025
)


Testez DISTINCTCOUNT sur vos propres données

Pas besoin de télécharger un fichier ni de modifier votre rapport. Trois étapes suffisent.

Ouvrez la vue Requête DAX

Cliquez sur l'icône de la vue Requête DAX, dans le ruban de gauche de Power BI Desktop.

Collez la requête

Copiez le bloc EVALUATE ci-dessous, puis remplacez le nom de la table et celui de la colonne.

Exécutez

Le résultat s'affiche sous l'éditeur, calculé sur vos données réelles.

EVALUATE
ROW (
    "Valeurs uniques", DISTINCTCOUNT ( 'VotreTable'[VotreColonne] )
)

Votre modèle n'est pas modifié : une requête EVALUATE ne crée rien.



Votre résultat est faux ? Les pièges de DISTINCTCOUNT

Le total ne fait pas la somme des lignes

C'est le comportement le plus déroutant, et il est normal. Un même client peut être actif en janvier et en février.

Il compte une fois dans chaque mois, mais une seule fois dans le total. Additionner les douze mois donne donc un chiffre bien supérieur au total annuel.

La documentation Microsoft le confirme : les totaux d'un comptage distinct ne sont pas additifs.


La valeur vide compte pour une valeur

DISTINCTCOUNT compte BLANK comme une valeur distincte. Une ligne sans identifiant client ajoute donc 1 au comptage.

Bon à savoir

Pour ignorer les vides, utilisez DISTINCTCOUNTNOBLANK. Cette variante est méconnue et pourtant native.

En DirectQuery, DISTINCTCOUNT n'est pas prise en charge dans les colonnes calculées ni les règles RLS.



Autres fonctions DAX similaire à DISTINCTCOUNT

COUNTROWS

Compte des événements. Toutes les lignes d'une table, doublons inclus. La bonne fonction pour un nombre de commandes.

DISTINCTCOUNT

Compte des acteurs. Chaque valeur une seule fois. La bonne fonction pour un nombre de clients.

  • COUNT et COUNTA comptent les valeurs non vides d'une colonne. Elles ignorent les vides mais gardent les doublons.

  • DISTINCTCOUNTNOBLANK compte les valeurs uniques en excluant la valeur vide.

  • COUNTROWS ( VALUES ( colonne ) ) donne le même résultat que DISTINCTCOUNT, dans des mesures plus complexes.



Que coûte DISTINCTCOUNT sur un gros modèle ?

DISTINCTCOUNT est l'une des agrégations les plus coûteuses du moteur. Rien ne peut être précalculé : le comptage distinct est refait à chaque changement de filtre.

Le coût grandit avec la cardinalité, c'est-à-dire le nombre de valeurs uniques de la colonne.

Sur un identifiant client d'une PME, l'impact est invisible. Sur des millions de valeurs uniques, une seule mesure peut ralentir tout un rapport.



Pour aller plus loin

Les questions ci-dessous reprennent les cas les plus fréquents rencontrés en entreprise.



Questions fréquentes sur DISTINCTCOUNT

Quelle est la différence entre COUNT et DISTINCTCOUNT ?

COUNT compte les valeurs non vides, doublons inclus. DISTINCTCOUNT ne compte chaque valeur qu'une seule fois.

Utilisez DISTINCTCOUNTNOBLANK. Cette fonction native exclut la valeur vide du comptage, contrairement à DISTINCTCOUNT.

Un comptage distinct n'est pas additif. Une valeur présente dans deux lignes ne compte qu'une fois au total.

Non. La fonction accepte une seule colonne. Créez une colonne combinée, ou utilisez COUNTROWS avec SUMMARIZE.

Dans une mesure, oui. Dans une colonne calculée ou une règle RLS, la fonction n'est pas prise en charge.

Envie de pratiquer sur un cas complet ? Téléchargez nos exercices Power BI corrigés.

 
 
bottom of page