Certains éléments de ma table de faits n’arrive pas à être lié à un segment

  • Certains éléments de ma table de faits n’arrive pas à être lié à un segment

    Posté par RANDRIATAHINA sur 10 septembre 2024 at 9h28

    Bonjour,

    J’ai un souci avec mon modèle de données à savoir : certains éléments de ma “table de fait” génère une valeur vide dans la colonne correspondante au filtre appliqué.

    Dans cet exemple, le code_site est censé à avoir tous des valeurs soit AIX, CTS, JS. La valeur “Blank” ne devrait pas exister. Dans ma table de fait, aucun élément ne contient de valeur vide pour le code_site.
    Pour avoir un aperçu sur mon modèle, voici à quoi il ressemble :

    Quelqu’un pourrait me donner une piste ?
    J’ai déjà tout verifiér par rapport au type et format de colonne pour chacune des colonnes utilisées dans mes relations.

    Philippe a répondu 2 months, 1 week ago 3 Membres · 12 Réponses
  • 12 Réponses
  • Philippe

    Member
    10 septembre 2024 at 12h51

    Bonjour RANDRIATAHINA,

    Comme les images sont petites, la lecture n’est pas aisée.

    Pour ma part, comme vous avez une structure en étoile, je vous inviterai dans un premier temps de passer d’un schéma en flocon à un schéma en étoile.

    Pour cela, toutes les tables à gauche de l’image de le ramener à une seule table de dimension directement attachée à la table de faits, et en cela de dénormaliser votre modéle.

    Comme je n’ai pas tous les détails, et pour répondre à votre question directement, avez-vous créé des relations bidirectionnelles ? Attention, cela n’est pas forcément une bonne pratique.

    Bien à vous,

    PGeiger

    • This reply was modified 2 months, 1 week ago by  Philippe.
  • RANDRIATAHINA

    Member
    10 septembre 2024 at 14h01

    Merci beaucoup Philipe pour votre réponse.
    Donc pour passer à un schema flocon à un modèle en étoile, vous savez combien de temps ça va prendre environ ? Car j’ai besoin de la mettre en PROD d’ici 2 jours.
    Concernant les relations, il y a que des relations unidirectionnelles pour toutes les tables de dimensions.

  • Philippe

    Member
    10 septembre 2024 at 14h05

    RANDRIATAHINA,

    1- Cela peut être assez rapide en fonction des outils que nous utilisez. Comme je ne sais pas comment vous créez votre modèle, je ne peux pas donner un temps de réalisation.

    2- Ma proposition est que vous réalisiez des tests en passant les relations en mode bidirectionnel. Mais attention aux performances et aux comportements.

    Bien à vous,

    PGeiger

  • RANDRIATAHINA

    Member
    10 septembre 2024 at 16h30

    Je viens de convertir mon modèle en modèle en étoile. Ce qui donne ceci :

    Par contre, lorsque je calcule le taux d’occupation qui devrait être le rapport entre le nombre de reservation par rapport au nombre de bureaux dispo, j’ai des valeurs anormales qui dépassent le 100%.
    Voici la formule que j’ai utilisé :

    <pre class=”language-css”>#Taux d'occupation réél =
    VAR NombreBureau = DISTINCTCOUNT(Dim_Bureaux[Id]) // Calcul le nombre total des bureaux avec l'ID
    VAR _NombreReservation = DISTINCTCOUNT(Ft_Reservations[Reservation_ID]) // Calcul du nombre de réservation en utilisant l'ID
    RETURN
    DIVIDE(DISTINCTCOUNT(Ft_Reservations[Reservation_ID]),DISTINCTCOUNT(Dim_Bureaux[Id]),0)

    Résultat :

    Une idée par rapport au contexte d’évaluation ?

  • Philippe

    Member
    10 septembre 2024 at 18h00

    RANDRIATAHINA,

    Il est possible d’afficher les valeurs de deux termes de la division ?

    Dans la formule DAX, je suis étonné sur le présence des DISTINCTCOUNT, je pense que des sommes sont plus pertinentes.

    Bien à vous,

    PGeiger

  • RANDRIATAHINA

    Member
    10 septembre 2024 at 20h05

    Bonsoir Philippe,

    J’ai surtout utilisé DISTINCTCOUNT car je compte les colonnes ID ne sont pas “sommable” puisque je voulais juste compte le nombre de bureaux disponibles et le nombre de reservation.

    Bien à vous,

  • Philippe

    Member
    10 septembre 2024 at 20h38

    RANDRIATAHINA,

    Compliqué votre formule DAX, car vous ne réutilisez pas les variables.

    Autre point : nous ne voyons les conditions de filtres de votre visuel. Existe-t-il un filtrage pour une date donnée ? Sinon, votre mesure n’a aucun sens car le nombre de bureau est intemporel ce qui n’est pas le cas pour le nombre de réservation.

    Bien à vous,

    PGeiger

  • RANDRIATAHINA

    Member
    11 septembre 2024 at 8h56

    Philippe,

    Justement c’est la raison pour laquelle la formule fonctionne pas correctement car je ne sais pas comment faire la correspondance entre le nombre de bureaux intemporel par rapport au nombre de réservation qui change à chaque fois. J’ai du mal à integrer le contexte d’évaluation dans le DAX.

  • Jonathan

    Member
    11 septembre 2024 at 10h24

    Bonjour,

    Je réponds à la toute première question en haut.

    Ce phénomène se produit si l’intégrité référentielle n’est pas maintenue. Par exemple, une date dans la table de faits qui ne serait pas dans la table des dates ou encore un axe d’analyse qui ne serait pas présent dans une dimension.

    Dans les visuels, on ne voit pas le problème puisque, par défaut, les visuels n’affichent pas les éléments Blank. Mais si on décide d’afficher les éléments sans données, on voit bien le blank arriver dans ce cas. Pour les filtre, c’est différents, il fait directement apparaître la ligne BLANK.

    Donc pour moi, la piste est de checker si chaque dimension est bien exhaustive par rapport à toutes les tables de faits qui sont liées à cette dimension.

  • Jonathan

    Member
    11 septembre 2024 at 11h16

    Concernant votre calcul, il ne fonctionne pas car il ne tient pas compte du nombre de jours en cours de visualisation.

    Exemple (si j’ai bien compris la demande) :

    • J’ai 4 jours en cours de sélection, du 1er au 4 septembre,
    • 1 bureau a été loué le 1 et le 3,
    • A mon avis le résultat attendu est de 50%.
    • Si c’est ça, vous pouvez tester cette mesure :

    <pre class=”language-markup”>Taux D'occupation réel =
    VAR NbBureaux =
    DISTINCTCOUNT ( Dim_Bureaux[ID] )
    VAR NbReservations =
    COUNTROWS ( Ft_Reservations )
    VAR BaseTxOccupation =
    DIVIDE (
    NbReservations,
    NbBureaux
    )
    VAR NbJours =
    COUNTROWS ( DimDate )
    RETURN
    DIVIDE (
    BaseTxOccupation,
    NbJours
    )

    Bonne continuation dans votre projet

  • RANDRIATAHINA

    Member
    11 septembre 2024 at 16h32

    Bonjour Jonathan,

    Merci beaucoup pour votre aide.
    Je me suis aperçus après une investigation que ma relation entre table Dimension Bureaux et table de Fait Reservation ne fonctionne plus correctement après avoir simplifié mon modèle flocon en modèle en étoile.

    DAX Query en modèle en étoile

    vs DAX Query en modèle en flocon

  • Philippe

    Member
    11 septembre 2024 at 18h16

    Il doit y avoir un problème avec la jointure.

    Bien à vous,

    PGeiger

Connectez-vous pour répondre.