Count Distinct sur deux colonnes non liées à la dimension

  • Count Distinct sur deux colonnes non liées à la dimension

    Posté par Pierre sur 31 mai 2024 à 12h21

    Bonjour,

    Après de nombreuses recherches, et quelques centaines de cheveux en moins sur le crâne, je fais appel à vos connaissances.

    Voici la situation dans un exemple simple, mais qui reprends ma problématique.

    Des commandes arrivent et après traitement sont envoyées, je dois représenter dans un graphique l’évolution des commandes restant à traiter au fil de l’année.

    J’ai une table (‘Fact’) de faits et une table de dates (‘Dim Date’).

    La date de réception et d’envoi sont dans 2 colonnes différentes.

    Ma table de faits contient 3 colonnes : Ref de la commande, date d’arrivée, date d’envoi.

    Ma table de dimension Date contient : les dates de toute l’année, la date de fin de mois, la date de fin de mois « plus lisible » (Mai-23)

    Pour des raisons compliquées à expliquer, je dois garder une table de faits unique et ne peux pas créer une seconde table qui contiendrait les mêmes infos après un unpivot.

    L’objectif :

    Créer un graphique combo (Visual measure ne fonctionne pas) des commandes à traiter (reçues mais pas encore livrées à la date d’évaluation).

    Axe X : la date de fin de mois version lisible (MMM_YY)

    La ligne : les commandes reçues mais pas encore livrées (evolue en fct de l’axe X).

    Difficulté supplémentaire, ; il faut considérer toutes les dates, pas uniquement les dates affichées dans le graphique, donc si le graphique montre l’année 2023 et que la commande a été reçue en 2022 il faut en tenir compte.

    Un grand merci d’avance pour votre aide

    Pierre

    Remarques :

    J’ai essayé avec Userelationship sans succès.

    Cumulative_UserelationShip =

    CALCULATE(

    COUNT(‘Facts’,’Facts'[Ref]),

    FILTER(

    ALLSELECTED(‘Facts’),

    CALCULATE(MAX(‘Dim Date'[End of Month]), USERELATIONSHIP(‘Facts'[Creation], ‘Dim Date'[Date])) >= ‘Facts'[Creation]&&

    CALCULATE(MAX(‘Dim Date'[End of Month]), USERELATIONSHIP(‘Facts'[Envoi], ‘Dim Date'[Date])) <= ‘Facts'[Envoi]

    )

    )

    • Cette discussion a été modifiée Il y a 3 mois, 3 semaines par  Pierre. Raison: Correction table
    Bertrand a répondu Il y a 3 mois, 2 semaines 3 Membres · 3 Réponses
  • 3 Réponses
  • Jonathan

    Membre
    31 mai 2024 à 13h43

    Bonjour,

    On est d’accord que le graphique doit présenter le nombre de commandes pour les lignes de la table de faits dont la valeur envoi est null ? Et tout ceci par date de création.

    A plus tard,

  • Pierre

    Membre
    31 mai 2024 à 13h53

    L’idée est de faire l’évaluation de la situation en fonction du mois stipulé dans l’axe des X.

    Donc si sur l’axe des X j’ai ‘Mar-20’ la hauteur de la ligne devrait être :

    distinct count des références

    Sous les contraintes que

    • la date de réception est inférieure au 31 mars (Je tiens compte uniquement de ce que j’ai déjà reçu)
    • la date d’envoi est supérieure au 31 mars 2020 ou vide (Si la date d’envoi est dans le futur (sur base de la date de l’axe des X) je considère que le colis n’a pas encore été envoyé, et donc je le compte dans mon count de “à traiter”)

    Merci pour cette question qui permet de préciser le propos.

  • Bertrand

    Membre
    3 juin 2024 à 18h54

    La solution est très bien décrite dans ce pattern Events in progress – DAX Patterns.

Connectez-vous pour répondre.