Colonne calculée avec des valeurs de deux tables différentes

Accueil – Le CFO masqué Forums Power BI Colonne calculée avec des valeurs de deux tables différentes

8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Articles
  • #61639
    leah
    Participant

    Bonjour à tous,

    Je cherche à faire des calculs à partir de colonnes issues de deux tables différentes.
    Les fichiers attachés sont mon modèle de donnée et le contenu de mes trois tables.

    Pour chaque tab1[id 1], je souhaite faire la somme tab1[val 1] + tab2[val 2].

    Chaque id 1 est associé à un id 2 dans la table association_id.

    Je reçois l’erreur suivante : “Il est impossible de déterminer une valeur unique pour la colonne ‘val 2’ de la table ‘tab2’. Cela peut se produire quand une formule de mesure fait référence à une colonne qui contient de nombreuses valeurs, sans spécifier d’agrégation telle que min, max, count ou sum pour obtenir un résultat unique.”

    J’ai également essayé : Colonne = sum(tab1[val 1]; tab2[val 2])
    Sans succès !

    Je sais que c’est une erreur commune mais je n’arrive pas à comprendre où est le problème. Les relations ne sont-elles pas censées être transitives ?

    Je remercie d’avance quiconque pourra m’aider ! Il n’y a pas d’expert power BI là où je travaille TT.TT

    Bonne journée !

    Attachments:
    You must be logged in to view attached files.
    #61643
    leah
    Participant

    Je me permets de compléter mon premier post (qui était une version simplifiée du problème que j’avais).

    Je vous mets en pièce jointe mon modèle données complet.

    Je travaille avec les tables hr_dr_intv et hr_dr_vaca.

    Je souhaite calculer dans hr_dr_intv : hr_dr_vaca[hr_dbt_vaca]-hr_dr_intv[HR_entree_salle].

    Quelques détails :
    – Dans hr_dr_intv, Heure ouverture vaca = related(hr_dr_vaca[dr_vara]) renvoie une colonne vide.
    – Dans hr_dr_intv Démarrage Tardif = datediff(hr_dr_intv[hr_entree_salle]; related(hr_dr_vaca[hr_dbt_vaca]); minute) renvoie une colonne vide
    – Dans hr_dr_intv Démarrage tardif 2 = hr_dr_intv[hr_entree_salle]-related(hr_dr_vaca[hr_dbt_vaca]) renvoie les valeurs de hr_dr_intv[HR_entree_salle] comme si hr_dbt_vaca était vide…
    – la relation hr_dr_intv et hr_dr_vaca est (*:1) : peut-être que cela implique des spécificités dans le calcul ?

    Merci d’avance !

    Leah

    Attachments:
    You must be logged in to view attached files.
    #61646
    Kim Leblanc
    Participant

    Bonjour,

    Je vais utiliser la première section de votre question pour vous répondre.

    Dans la tab_1, si vous voulez ajouter une colonne calculé il faudrait plutôt utiliser le calcul suivant: =tab_1[Val1]+CALCULATE(sum(Tab_2[val2]))
    Comme il y a plusieurs valeur dans la tab_2, il faut utiliser un calculate pour faire la somme de ces valeurs.

    Par contre, au lieu d’utiliser une colonne calculée, vous pourriez également utiliser une mesure du type:
    Val1etval2:=sum(tab_1[Val1])+sum(Tab_2[val2]) ceci prendra moins de poids qu’une colonne calculé. Si vous utilisez le Id1 en ligne dans une matrice avec la mesure au niveau des valeurs, vous devriez obtenir le bon résultat.

    Au plaisir,

    Kim

    • Cette réponse a été modifiée le il y a 9 mois par Kim Leblanc.
    #61674
    leah
    Participant

    Bonjour !

    Merci beaucoup pour cette réponse. Je me permets de rajouter une question qui reste dans le même thème. Pour cela je me baserai sur mon deuxième poste.

    Tout d’abord, quelques infos sur la construction du modèle de données :
    – hr_dr_intv décrit des interventions (1 ligne = 1 intervention) ;
    – hr_dr_vaca décrit des horaires d’ouverture de salle d’intervention (1 ligne = 1 salle);
    – Chaque intervention est liée à une vacation. On a donc une relation many to one qui va de hr_dr_intv vers hr_dr_vaca. Je ne peux donc pas utiliser pour mon problème la solution que vous donnez.
    – les tables hr_dr_intv et hr_dr_vaca ne sont pas directement liées (cf. modèle de données).

    Pour chaque intervention n dans hr_dr_intv, je cherche à savoir si l’intervention se déroule bien entre les horaires d’ouverture et de fermeture de la salle. Cela se traduit mathématiquement par : AND(hr_dr_intv[h_entree_salle] >= hr_dr_vaca[hr_dbt_vaca] ; hr_dr_intv[h_sortie_salle] <= hr_dr_vaca[hr_fin_vaca])
    Je souhaite avoir cette colonne calculée dans hr_dr_intv.

    Cependant, comme je l’ai dit dans mon deuxième poste, je n’arrive même pas à avoir les heures d’ouverture et de fermeture de salle dans la table hr_dr_intv !

    Je vous remercie d’avance pour votre aide,

    Leah

    #61679
    leah
    Participant

    Bonjour !

    Les id n’étaient pas correctes ! La transitivité des liens fonctionne donc correctement !

    Merci & bonne journée !

    #61680
    Kim Leblanc
    Participant

    Super! Bonne journée à vous également!

    Kim

    #83519
    Quentaing
    Participant

    Bonjour,

    Je me permets de rebondir sur le sujet.

    J’ai appliqué votre technique en ajoutant une condition IF qui m’amène à la relation suivante :
    Measure = IF(SUM(Tab1[Val1])<>0,SUM(Tab1[Val1],SUM(Tab2[Val2])

    Et j’ai inséré le champs measure dans un visuel table, cela fonctionne parfaitement sauf pour le TOTAL de ma colonne measure… la formule est appliqué au lieu de faire la somme de mes données measure… Cela me donne donc le total de la colonne Tab1[Val1]…

    Avez vous une idée pour solutionner cela ?

    Merci d’avance

    #83528
    Sophie Marchand
    Participant

    Bonjour,

    Je vous invite à consulter cet article

    Power BI – Power Pivot : La fonction SUMX en renfort 💪 (erreur courante chez les débutants)

    Au plaisir,

    Sophie

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.