Comptage valeurs uniques DAX | POWER PIVOT Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
S
Spark39
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 25 janvier 2020
Version d'Excel : 365

Message par Spark39 » 8 février 2020, 19:12

Bonjour à toutes et à tous,

Je viens vers vous ce soir avec un problème que j'ai rencontré récemment sur Power Pivot.

Je possède une liste de 10 produits "phares" parmi un grand catalogue de produits. Je souhaiterais afficher sur un tableau une mesure pour chacun de nos clients de combien de produits "phares" ils commercialisent.

Pour cela je possède donc une table de commandes comportant les commandes passées par tout nos clients et les produits vendus où il figure donc nos 10 produits phares parmi les autres. j'ai aussi créé une table avec le top 10 produits.

Je pourrais mesurer le nombre de produits "phares" qu'ils commercialisent facilement à l'aide d'un tcd, d'un filtre sur les produits et d'un total distinct. Mais je souhaiterais créer une mesure en DAX qui me permettrait d'afficher le nombre de produits phares commercialisés par client sans utiliser de filtre. En effet mon reporting affiche aussi d'autres mesures qui ne doivent pas être filtrées tel que le CA général 2019-2020 par exemple et cette nouvelle mesure doit s'afficher à côté.

J'ai essayé des formules à base de distinctcount... sans succès.
Mesure 1:=CALCULATE(DISTINCTCOUNT([ref produit]);t_refproduits[ref])
Je pourrais aussi ajouter une colonne à base de "IF" où je pourrais attribuer un numéro à chaque produits phares et faire une mesure simple de distinctcount mais je pense que cela peut être faisable directement.

J'espère avoir été clair dans mes explications^^ et je vous remercie par avance fortement pour votre aide :)

Je vous joins un fichier exemple.

Bien cordialement,
Compterefproduitv1.xlsx
(150.82 Kio) Téléchargé 7 fois
S
Spark39
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 25 janvier 2020
Version d'Excel : 365

Message par Spark39 » 9 février 2020, 10:19

J'ai réussi à avancer un peu en sortant cette formule qui fonctionne en partie.
Mesure 2:=CALCULATE(DISTINCTCOUNT([ref produit]);IFERROR(OR(t_refproduits[ref]="GG2";t_refproduits[ref]="ULT2");BLANK()))
Néanmoins, le "OR" limite à seulement 2 critères et cette mesure ne va pas chercher toutes les valeurs de ma table de critère de produits phares.

Quelqu'un connaitrait il la fonction permettant de comparer par rapport à une table de critères ? à la manière d'un nbsi ?

Merci à vous.

Bien cordialement,
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'613
Appréciations reçues : 422
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 9 février 2020, 11:14

Bonjour

Il faut ajouter une colonne à la table des commandes pour identifier les lignes qui correspondent à l'un de ces produit.

Il sera ensuite facile de créer la mesure.

Voir ci-joint
Compterefproduitv2.xlsx
(154.87 Kio) Téléchargé 2 fois
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
S
Spark39
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 25 janvier 2020
Version d'Excel : 365

Message par Spark39 » 9 février 2020, 12:25

Bonjour Chris,

Merci pour ce retour, en effet j'avais pensé à créer une seconde colonne pour identifier les lignes correspondantes aux critères avec des nombres différents pour chaque critères (pour effectuer un total distinct).

Votre colonne permet en effet une identification des top produit par rapport à la table des top produits, merci pour la formule. Mais en identifiant seulement avec des "1" cela ne permet pas d'obtenir par votre mesure le total distinct de top produits il me semble.

Mais vous m'avez donner une idée pour obtenir cela de façon plus simple, merci beaucoup.

Bien cordialement,
S
Spark39
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 25 janvier 2020
Version d'Excel : 365

Message par Spark39 » 9 février 2020, 12:35

Ci-joint le fichier avec la mesure permettant le comptage de valeurs uniques par rapport à la table (à partir de la formule de Chris) pour ceux qui peuvent être intéressé.

Si quelqu'un arrive à trouver une formule permettant d'effectuer directement la mesure sans création de colonne je suis preneur^^.

Bon dimanche à vous.
Compterefproduitv3.xlsx
(167.33 Kio) Téléchargé 2 fois
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'613
Appréciations reçues : 422
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 9 février 2020, 14:01

RE

Effectivement j'avais fait une erreur, la bonne formule de la mesure étant
=CALCULATE(DISTINCTCOUNT([ref produit]);FILTER(Commandes;Commandes[Top]>0))
mais on peut simplifier en utilisant la formule suivante dans la colonne TOP
=related(t_refproduits[ref])
et pour la mesure :
=CALCULATE(DISTINCTCOUNT([Top]);FILTER(Commandes;Commandes[Top]<>BLANK()))
pense à nommer tes mesures

On ne peut se passer de la colonne supplémentaire car il s'agit d'une analyse ligne par ligne de la source et non globale car le lien est fait au niveau de l'enregistrement de la table, pas du contexte du TCD
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
S
Spark39
Jeune membre
Jeune membre
Messages : 20
Inscrit le : 25 janvier 2020
Version d'Excel : 365

Message par Spark39 » 9 février 2020, 15:15

Merci Chris.

Dommage de ne pas pouvoir faire la mesure directement.
Avatar du membre
78chris
Passionné d'Excel
Passionné d'Excel
Messages : 5'613
Appréciations reçues : 422
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019 + 365

Message par 78chris » 9 février 2020, 16:12

RE

Il faut comprendre la notion de contexte.
La puisance de PowerPivot réside dans le mélange de mesure liées aux enregistrements et d'autres plus globales qui s'appuient sur le contexte des TCD tirés du modèle.

Tu ne peux établir de relation sans passer par le niveau enregistrement comme dans toute base de données...
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message