12 mois glissants

  • 12 mois glissants

    Posté par Olivier sur 14 février 2024 à 9h35

    Bonjour la Communauté,

    je suis des parts de marchés véhicules qui sont mensuelles

    J’ai une table de dates, avec une relation entre Dates et Date_Immat.

    Dans mon rapport j’utilise un graphique en courbes avec histogramme groupé pour obtenir un visuel sur 12 mois glissants.

    mes mesures sont les suivantes :
    – Nb_Immat_12MoisGlissants =

    <div>
    <div>VAR DateDeRefSelectionne = MAX(‘Immat VI'[Date_Immat]) // Utilisez la date d’immatriculation maximale sélectionnée</div>
    <div>VAR DateDebut = EDATE(DateDeRefSelectionne, -11) // Recule de 11 mois pour trouver la date de début</div>
    <div> </div>
    <div>RETURN</div>
    <div>CALCULATE(</div>
    <div> [Nb_Immat],</div>
    <div> FILTER(</div>
    <div> ALLEXCEPT(‘Immat VI’, ‘Immat VI'[MARQUE_J21]),</div>
    <div> ‘Immat VI'[Date_Immat] >= DateDebut &&</div>
    <div> ‘Immat VI'[Date_Immat] <= DateDeRefSelectionne</div>
    <div> )</div>
    <div>)</div>
    <div> </div>
    <div> </div>
    <div>Et ensuite pour chacune des marques :
    <div>
    <div>Nb_IVECO_12MoisGlissants =</div>
    <div>VAR DateDeRefSelectionne = MAX(‘Immat VI'[Date_Immat]) // Utilisez la date d’immatriculation maximale sélectionnée</div>
    <div>VAR DateDebut = EDATE(DateDeRefSelectionne, -11) // Recule de 11 mois pour trouver la date de début</div>
    <div> </div>
    <div>RETURN</div>
    <div>CALCULATE(</div>
    <div> [Nb_Immat],</div>
    <div> FILTER(</div>
    <div> ALLEXCEPT(‘Immat VI’, ‘Immat VI'[MARQUE_J21]),</div>
    <div> ‘Immat VI'[Date_Immat] >= DateDebut &&</div>
    <div> ‘Immat VI'[Date_Immat] <= DateDeRefSelectionne &&</div>
    <div> ‘Immat VI'[NbIVECO]</div>
    <div> )</div>
    <div>)</div>
    </div>
    <div>Dans cet exemple, lorsque je sélectionne dans mon rapport l’année 2023 et les 9 premiers mois de l’année (via des visuels de filtres de la table de dates), soit de janvier à septembre, j’ai bien sur mon visuel l’affichage des 9 premiers mois.</div>
    <div>Mais il me manque l’affichage des 3 mois précédents, soit les mois de octobre, novrembre et décembre 2022</div>
    <div>Merci pour votre aide</div>
    </div>
    </div>

    Jonathan a répondu Il y a 5 mois 4 Membres · 11 Réponses
  • 11 Réponses
  • David

    Membre
    14 février 2024 à 9h54

    Bonjour Olivier,

    Je pense que dans ce cas de figure tu pourrais essayer avec une table de dates secondaire non reliée à ton model pour ton segment. Cela te servirait juste à récupérer les dates pour tes fonctions 12 mois glissants.

  • Quentin

    Membre
    14 février 2024 à 11h04

    Salut Olivier,

    Je rejoins David sur la création d’une autre table !

    Sinon, une autre solution serait, dans ta table de référence de Date, d’ajouter une colonne calculée de type booléen, par exemple “IsIn12Months”, qui te servirait à mettre un tag sur chaque date et ainsi savoir si elle fait partie des 12 derniers mois. Comme ça, tu bases toujours ton segment dessus, simplement en y ajoutant un filtre sur cette colonne booléenne 😺

    • Cette réponse a été modifiée Il y a 5 mois, 1 semaine par  Quentin.
    • Cette réponse a été modifiée Il y a 5 mois, 1 semaine par  Quentin.
  • Olivier

    Membre
    14 février 2024 à 11h10

    Bonjour messieurs,

    merci pour vos réponses qui restent assez complexes à mon niveau.J’ai bien créé une table de dates secondaires DATES2 mais je ne vois pas comment mettre en musqiue.

    d’autre part, comment ajouter des tags et y faire référence ?

    Merci

  • Olivier

    Membre
    20 février 2024 à 8h38

    En complément voici mon aperçu : j’ai sélectionné l’année 2023 et les mois de janvier à août et j’obtiens le visuel suivant :

    Comme vous voyez il me manque les mois de sepembre à décembre de l’année 2022.

    J’ai bien pris note de vos remarques pour ajouter une table dates 2 mais je ne vois pas comment faire pour la mise en application.

    Merci de votre aide

  • David

    Membre
    20 février 2024 à 9h27

    Bonjour Olivier,

    Ce que tu décris est le comportement normal de l’interaction entre deux visuel. Le visuel ne peut afficher que les valeurs (mois) sélectionnées sur le segment. Ta mesure calculera certainement toutes les valeurs même sur les mois non sélectionnés, mais n’affichera que les valeurs dont les mois du segment sont sélectionnés.

    Pour que ça fonctionne il faut soit, désactiver l’interaction entre les deux visuels, soit créer une deuxième table de date non reliée à ton modèle et l’utiliser dans le segment et dans ta mesure.

    Dans ta mesure tu dois récupérer les dates sélectionnées dans ton segment, donc sur ta table non reliée (et donc n’impactant pas ton résultat) et les appliquer sur ta table de dates reliée.

    Essaye dans un premier temps en désactivant l’interaction du segment sur le visuel cible.

  • Olivier

    Membre
    20 février 2024 à 10h24

    Merci David, voici en supprimant les interactions entre l’année et les mois avec le visuel : j’ai TOUTES les données depuis plusieurs années :

  • David

    Membre
    20 février 2024 à 11h25

    Du coup c’est maintenant ta mesure qui doit être impactée par la suppression de l’interaction. Il faudrait donc ajuster ta mesure en conséquence.

    Pas évident de t’aider sans le modèle sémantique.

  • David

    Membre
    21 février 2024 à 7h27

    Bonjour Olivier,

    Désolé de t’avoir mal aiguillé en te suggérant de désactiver l’interaction entre visuels. J’ai réalisé après coup que ce n’était pas la bonne direction. Effectivement la mesure ne peux pas récupérer les valeurs sélectionnées puisque la suppression d’interaction empêche le visuel cible contenant la mesure de transmettre ces informations.

    Je reviens donc à l’idée première de créer une table de dates supplémentaire non reliée aux autres tables et d’utiliser cette table dans ton visuel de segments.

    Puis adapté tes mesures comme suit :

    <pre class=”language-markup”>Nb_Immat_12MoisGlissants =

    VAR DateDeRefSelectionne = MAX(‘Table de dates 2'[Date]) // Utilise la date d’immatriculation maximale sélectionnée de la table de dates independante
    VAR DateDebut = EDATE(DateDeRefSelectionne, -11) // Recule de 11 mois pour trouver la date de début
    ...
    ...

    N’oublie pas de rétablir l’interaction entre visuels.

    <pre class=”language-markup”>

    En espérant que cela t’aide cette fois ci

  • Olivier

    Membre
    21 février 2024 à 17h32

    Merci David pour ce retour, même si j’en perds mon latin…

    j’ai créé la tabledate2, sans relation avec les autres tables

    j’ai créé 2 nouveaux filtres avec année2 et mois2 et un nouveau visuel et en sélectionnant mes 9 premiers mois de 2023 je n’ai toujours pas les 3 mois manquants de 2022….

    Mes mesures ont été changées ainsi, où je n’ai modifié que la VAR DateDeRefSelectionne

    <div>
    <div>Nb_Immat_12MoisGlissants2 =</div>
    <div>VAR DateDeRefSelectionne = MAX(‘TableDate2′[Date2]) // Utilisez la date d’immatriculation maximale sélectionnée</div>
    <div>VAR DateDebut = EDATE(DateDeRefSelectionne, -11) // Recule de 11 mois pour trouver la date de début</div>
    <div> </div>
    <div>RETURN</div>
    <div>CALCULATE(</div>
    <div> [Nb_Immat],</div>
    <div> FILTER(</div>
    <div> ALLEXCEPT(‘Immat VI’, ‘Immat VI'[MARQUE_J21]),</div>
    <div> ‘Immat VI'[Date_Immat] >= DateDebut &&</div>
    <div> ‘Immat VI'[Date_Immat] <= DateDeRefSelectionne</div>
    <div> )</div>
    <div>)</div>
    </div>

  • David

    Membre
    21 février 2024 à 19h24

    Sans le modèle sémantique, ça va être difficile de t’aider mieux que ça.

    As-tu la possibilité de mettre à disposition un modèle avec des données exemples (sans données sensibles). Tu peux aussi l’envoyer par message privé éventuellement

  • Jonathan

    Membre
    25 février 2024 à 18h44

    Bonjour Olivier,

    Le mieux pour ce que tu cherches à faire c’est effectivement de créer une seconde table des dates mais qui sera reliée exceptionnellement en bidirectionnel. Cette nouvelle table peut contenir toutes les versions de dates que tu souhaites implémenter (12 derniers mois, 6 derniers mois, 2 dernières années, l’an dernier, etc…).

    Pour la créer, soit tu peux le faire en Power Query, soit en DAX. En DAX c’est assez simple à faire, tu as toutes les fonctions temporelles nécessaires pour le faire.

    Je te joins une vidéo de BI Elite qui explique très clairement la démarche, ça évitera d’avoir à réinventer la roue 😀

    Bon courage pour la suite de ton projet !

Connectez-vous pour répondre.