Cours
Tableau n’est pas qu’un outil de visualisation de données. Véritable référence en business intelligence, Tableau offre de puissantes capacités d’analyse accessibles à la fois via l’interface et grâce à ses formules de champs calculés.
Dans cet article, nous allons voir comment réaliser un dénombrement distinct (count distinct) dans Tableau. Nous expliquerons ce qu’est un décompte de valeurs uniques, les différentes façons de l’obtenir, et comment l’exploiter pour calculer des indicateurs métier pertinents, illustrés par des exemples.
Si vous débutez avec Tableau, notre tutoriel Tableau pour débutants vous aidera à prendre en main l’outil. Vous pouvez aussi suivre notre cours Introduction to Tableau ou explorer le parcours de compétences Tableau Fundamentals.
Importer des données dans Tableau
Commençons par récupérer des données. Nous utiliserons le célèbre jeu de données « Superstore Sales » de Tableau. Pour télécharger ce jeu depuis Tableau Public (ou Desktop), suivez ces étapes :
- Dans le panneau de droite, sélectionnez Explore sample data sets. Une page s’ouvre dans votre navigateur.
- Cliquez sur Download pour le jeu de données « Superstore Sales ».
- Enregistrez le fichier sur votre ordinateur.

Téléchargement d’un jeu d’exemples. GIF par l’auteur.
Ensuite, pour importer le jeu de données dans Tableau :
- Choisissez Microsoft Excel dans le panneau Connect à gauche.
- Sélectionnez le fichier « Superstore Sales ». La page Data Source s’ouvre.
- Le fichier contient trois feuilles. Nous allons travailler avec la feuille « Orders » (la première). Faites-la glisser depuis la gauche et déposez-la dans la zone centrale en haut. Vous constatez que la feuille comporte 22 champs et 9 994 lignes.

Importation des données dans Tableau. GIF par l’auteur.
Devenez analyste de données Tableau
Comment compter les valeurs distinctes dans Tableau
Il existe deux méthodes pour réaliser un dénombrement distinct dans Tableau : depuis l’étagère Measure Names et via un champ calculé. Les champs calculés ont l’avantage d’être réutilisables et extensibles pour créer des mesures plus complexes : à long terme, ils sont plus efficaces que les méthodes « sur étagère », plus rapides mais à recréer à chaque fois. Commençons par la plus simple : l’étagère Measure Names.
Count Distinct avec l’étagère Measure Names
Avant le décompte distinct, construisons une visualisation simple. Démarrons avec un histogramme de base qui compare les catégories de produits selon le nombre de clients ayant acheté au moins un article de chaque catégorie dans le catalogue Superstore.
Allez sur « Sheet 1 » et déposez Category sur les lignes et Customer ID sur les colonnes. Comme Customer ID est une dimension (données catégorielles), il apparaîtra en bleu. Etant donné le grand nombre de valeurs distinctes, Tableau vous demandera si vous souhaitez ajouter tous les membres de la colonne. Pour l’instant, sélectionnez Add all members.
Nous allons maintenant utiliser Customer ID comme mesure pour compter le nombre de clients uniques ayant acheté des produits dans chaque catégorie. Pour cela :
- Allez sur l’étagère Columns.
- Dans le menu déroulant, ouvrez Measure.
- Vous verrez les options Count et Count (Distinct). Choisissez Count (Distinct).

Décompte distinct depuis l’étagère Measure Names. GIF par l’auteur.
Et voilà ! Le nombre de clients uniques pour chaque catégorie de produits. On observe par exemple 788 clients pour la catégorie Office Supplies.

Clients uniques par catégorie de produits. Image par l’auteur.
Count vs Count Distinct dans Tableau
Avant d’aller plus loin, voyons la différence entre count et distinct count dans le cas de Customer ID. Pour l’illustrer, ajoutez un second champ Customer ID sur l’étagère des colonnes. Répétez les étapes précédentes, mais cette fois choisissez Count et non Count (Distinct) dans le menu Measures.
Si la vue paraît étrange pour le moment, pas d’inquiétude : nous allons l’ajuster. Continuez en ouvrant l’onglet Show Me en haut à droite et sélectionnez un type d’histogramme.

Comparer Count et Count Distinct. GIF par l’auteur.
Dans la vue obtenue, on compare le count (barres grises) et le distinct count (barres vert clair) pour chaque catégorie de produits. L’écart entre les deux correspond au nombre d’identifiants clients répétés. On découvre également que Office Supplies est la catégorie avec l’écart le plus important, ce qui indique une fréquence d’achat plus élevée au sein de sa base clients.

Comparaison Count vs Distinct Count avec un histogramme. Image par l’auteur.
Count Distinct avec des champs calculés
Obtenir un décompte distinct depuis l’étagère des mesures est simple et rapide, mais cela présente un inconvénient majeur : si vous devez ajouter un autre décompte distinct de Customer ID dans la même vue ou dans une nouvelle feuille, vous devrez répéter la manipulation. Et si vous souhaitez construire une nouvelle mesure fondée sur ce décompte distinct, il faudra tout recréer. En clair, l’étagère Measure Names produit une agrégation à usage unique, non permanente.
Pour un décompte distinct permanent, créez un champ calculé utilisant la fonction COUNTD(). Nous allons le faire de deux façons :
-
Champ calculé
COUNTD()simple -
COUNTD()avec une expression LOD
Champ calculé COUNTD() simple
Derrière le décompte distinct réalisé via l’étagère Measure Names, Tableau utilise en réalité la fonction COUNTD(), qui compte chaque Customer ID unique une seule fois. Dans cette méthode, l’agrégation se fait sur l’étagère, sans créer de mesure stockée dans la liste des champs.
Pour l’enregistrer comme mesure dans notre liste, nous devons créer un champ calculé. Pour créer un décompte distinct simple des clients, suivez ces étapes :
-
Cliquez sur la petite flèche vers le bas, à côté de la barre de recherche, dans le volet Data à gauche.
-
Dans le menu déroulant, choisissez Create Calculated Field….
-
Dans la fenêtre, nommez le champ :
Unique Customers, et saisissez la formule :COUNTD([Customer ID]). -
Une fois la formule complétée, le message « The calculation is valid » s’affiche en bas de la boîte : parfait. Cliquez sur OK.
-
Le champ calculé est maintenant enregistré de façon permanente dans la liste des mesures. Remplacez le champ
CNTD(Customer ID)de l’étagère par ce nouveau champ calculé. Le résultat est identique, comme attendu.

Décompte distinct avec un champ calculé. GIF par l’auteur.
COUNTD() avec une expression LOD
Nous pouvons utiliser COUNTD() dans une expression de niveau de détail (LOD) pour créer un décompte distinct de clients par catégorie de produits. Cela nous fournit une mesure permanente de la base clients par catégorie, réutilisable pour des mesures plus avancées.
Procédons comme précédemment pour créer un champ calculé, mais cette fois, nommons-le Category Customer Base et saisissons la formule suivante :
{FIXED [Category]: COUNTD([Customer ID])}

Décompte distinct dans une expression LOD. GIF par l’auteur.
Si vous découvrez les expressions LOD, nous vous recommandons de lire notre tutoriel LOD Expressions in Tableau. Pour les besoins de cet article, retenez simplement que la formule précédente compte les clients uniques pour chaque catégorie séparément. Les accolades {} indiquent une expression LOD, et FIXED spécifie que le décompte distinct se fait au niveau de détail de la colonne Category.
Créer des KPI avec Count Distinct dans Tableau
Un atout des champs calculés est qu’ils peuvent être réutilisés dans d’autres mesures sans réécrire la formule à chaque fois.
C’est pourquoi l’usage de COUNTD() avec des champs calculés est une excellente pratique pour avancer vite et dégager de nouveaux insights. Elle permet de dénombrer commandes, clients ou produits (des métriques en soi), ou de les combiner pour construire des KPI métier plus élaborés, comme le profit moyen par client ou la quantité moyenne par commande. Voyons quelques façons d’exploiter COUNTD() pour produire des insights opérationnels.
Nombre moyen de commandes par client
Nous pouvons utiliser la mesure Unique Customers avec une nouvelle mesure calculant le nombre moyen de commandes par client. Créez un champ calculé avec la formule suivante, nommé Avg Orders per Customer :
COUNT([Order ID])/[Unique Customers]
Taux de clients ayant reçu une remise
De même, allons plus loin en calculant la part de clients ayant obtenu une forte remise (par exemple au-delà de 50 %) sur au moins une de leurs commandes, rapportée à l’ensemble des clients de Superstore. Nous utiliserons pour cela une formule combinant une fonction logique et la fonction COUNTD().
COUNTD(IF [Discount] > 0.5 THEN [Customer ID] END)/[Unique Customers]
Taux de rétention clients
Autre combinaison de COUNTD() et IF : calculer un indicateur de rétention. Pour mesurer la part de clients ayant passé une commande durant l’année la plus récente, créez un champ Customer Retention Rate avec la formule :
COUNTD(IF YEAR([Order Date]) = {MAX(YEAR([Order Date]))} THEN [Customer ID] END)/[Unique Customers]
Ici, l’expression LOD renvoie l’année maximale (la plus récente) sur l’ensemble du jeu de données et la compare à l’année de chaque ligne. Si elles coïncident, le client est considéré comme retenu sur l’année la plus récente et doit être comptabilisé ; sinon, il n’est pas pris en compte par COUNTD().
Taux de pénétration par catégorie
Nous pouvons combiner Category Customer Base et Unique Customers dans une formule afin de mesurer la part de clients de chaque catégorie rapportée au nombre total de clients du jeu de données. Appelons-la Category Penetration Ratio.
[Category Customer Base]/{[Unique Customers]}
Comme dans la formule précédente, une expression LOD (indiquée par les accolades {}) est utilisée pour calculer les clients uniques sur l’ensemble du jeu de données. C’est nécessaire car le champ calculé Category Customer Base a un niveau d’agrégation différent.
Profit moyen par client et par catégorie
Pour obtenir le profit moyen par client dans chaque catégorie, créez Avg Profit per Customer in Each Category défini ainsi :
{FIXED [Category]: SUM([Profit])}/[Category Customer Base]
Ici, une expression LOD FIXED calcule le profit total par catégorie avant de le diviser par Category Customer Base. Le dénominateur aurait aussi pu être défini comme une mesure séparée au préalable.
Labelliser les catégories à base clients limitée
Autre usage du champ LOD Category Customer Base : étiqueter chaque catégorie selon la taille de sa base clients. Si une catégorie compte moins de clients que la moyenne des trois catégories, elle sera étiquetée Limited Base, sinon Normal. Créons ce champ avec la formule suivante, nommé Limited Categories.
IF [Category Customer Base] < {AVG([Category Customer Base])} THEN "Limited Base" ELSE "Normal" END
Ressources et pour aller plus loin
Dans cet article, nous avons vu comment obtenir un décompte distinct via l’étagère Measure Names, ainsi qu’au moyen de champs calculés avec la fonction COUNTD(). Pour les champs calculés, nous avons utilisé une forme simple et une expression LOD. Enfin, nous avons illustré comment un·e analyste métier peut construire des métriques et KPI plus avancés.
Si ce tutoriel vous a donné envie d’aller plus loin et que vous débutez avec Tableau, consultez notre parcours de compétences Tableau Fundamentals. Si vous souhaitez obtenir la certification d’analyste de données sur Tableau, découvrez notre parcours carrière Data Analyst in Tableau incluant une certification, et restez à l’écoute des prochains tutoriels Tableau proposés par DataCamp !
Devenez certifié en Tableau

Islam est consultant en données à l'Institut KPI. Issu d'une formation en journalisme, Islam s'intéresse à divers domaines, dont l'écriture, la philosophie, les médias, la technologie et la culture.
Questions fréquemment posées
Quelle est la différence entre Count et Distinct Count ?
Count comptabilise toutes les valeurs du champ, tandis que Distinct Count ne compte que les valeurs uniques.
Quand utiliser Distinct Count plutôt que Count ?
Utilisez un décompte distinct lorsque la colonne du jeu de données comporte des répétitions et que vous devez ne compter que les valeurs uniques.
Quelle est la fonction pour un décompte distinct dans Tableau ?
Vous pouvez effectuer un décompte distinct avec la fonction COUNTD() dans les champs de calcul de Tableau.
Puis-je utiliser la fonction `COUNTD()` dans une expression LOD Tableau ?
Bien sûr !