Accueil – Le CFO masqué › Forums › Power BI › Colonne calculée avec des valeurs de deux tables différentes
- Ce sujet contient 7 réponses, 4 participants et a été mis à jour pour la dernière fois par
Sophie Marchand, le il y a 4 années et 4 mois.
-
AuteurMessages
-
28 février 2020 à 9 h 12 min #61639
leah
ParticipantBonjour à 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.28 février 2020 à 10 h 01 min #61643leah
ParticipantJe 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_intvDémarrage Tardif = datediff(hr_dr_intv[hr_entree_salle]; related(hr_dr_vaca[hr_dbt_vaca]); minute)
renvoie une colonne vide
– Dans hr_dr_intvDé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.28 février 2020 à 10 h 36 min #61646Kim Leblanc
ParticipantBonjour,
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
1 mars 2020 à 11 h 24 min #61674leah
ParticipantBonjour !
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
2 mars 2020 à 6 h 07 min #61679leah
ParticipantBonjour !
Les id n’étaient pas correctes ! La transitivité des liens fonctionne donc correctement !
Merci & bonne journée !
2 mars 2020 à 7 h 46 min #61680Kim Leblanc
ParticipantSuper! Bonne journée à vous également!
Kim
4 novembre 2020 à 9 h 40 min #83519Quentaing
ParticipantBonjour,
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
4 novembre 2020 à 19 h 29 min #83528Sophie Marchand
ParticipantBonjour,
Je vous invite à consulter cet article
Power BI – Power Pivot : La fonction SUMX en renfort 💪 (erreur courante chez les débutants)
Au plaisir,
Sophie
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.