Comment faire une jointure gauche dans DAX? Lorsque j'essaie d'ajouter une relation ou d'utiliser la fonction DAX de la jointure externe gauche, j'obtiens les erreurs suivantes (voir ci-dessous). Toutes les idées seraient grandement appréciées!Jointure externe gauche utilisant DAX dans PowerBI (relation plusieurs-à-plusieurs)
Erreur lors de la création relation:
Erreur lors de la tentative NaturalLeftOuterJoin()
Pour référence, je suis en train de créer des lignes calculées d'un compte de résultat.
Exemple:
- Chiffre d'affaires: 100
- Coût: 80
- Résultat: 20 (Revenu-coût)
Mes tableaux sont comme ci-dessous:
Fact table: ╔═══════════╦═════════╦═══════════╦════════╗ ║ YearMonth ║ StoreID ║ AccountID ║ Amount ║ ╠═══════════╬═════════╬═══════════╬════════╣ ║ 2017-01 ║ A ║ 1 ║ 100 ║ ║ 2017-01 ║ B ║ 1 ║ 200 ║ ║ 2017-01 ║ A ║ 2 ║ -50 ║ ║ 2017-01 ║ B ║ 2 ║ -50 ║ ║ 2017-02 ║ A ║ 1 ║ 20 ║ ║ 2017-02 ║ B ║ 1 ║ 150 ║ ║ 2017-02 ║ B ║ 2 ║ -20 ║ ╚═══════════╩═════════╩═══════════╩════════╝ Template table: ╔════════════╦═══════════╦═════════╗ ║ TemplateID ║ AccountID ║ Line ║ ╠════════════╬═══════════╬═════════╣ ║ 105 ║ 1 ║ Revenue ║ ║ 105 ║ 2 ║ Cost ║ ║ 105 ║ 1 ║ Profit ║ ║ 105 ║ 2 ║ Profit ║ ╚════════════╩═══════════╩═════════╝
Dans SQL c'est super facile - je fais juste une jointure externe gauche sur le terrain accountId qui crée des enregistrements pour la ligne de profit, comme ci-dessous:
SELECT
f.[YearMonth]
,f.[StoreID]
,f.[AccountID]
,f.[Amount]
,t.[TemplateID]
,t.[AccountID]
,t.[Line]
FROM [dbo].[Fact] f
left join [dbo].[Templates] t
on f.[AccountID] = t.[AccountID]
Résultat:
╔═══════════╦═════════╦═══════════╦════════╦════════════╦═══════════╦═════════╗
║ YearMonth ║ StoreID ║ AccountID ║ Amount ║ TemplateID ║ AccountID ║ Line ║
╠═══════════╬═════════╬═══════════╬════════╬════════════╬═══════════╬═════════╣
║ 2017-01 ║ A ║ 1 ║ 100 ║ 105 ║ 1 ║ Revenue ║
║ 2017-01 ║ B ║ 1 ║ 200 ║ 105 ║ 1 ║ Revenue ║
║ 2017-02 ║ A ║ 1 ║ 20 ║ 105 ║ 1 ║ Revenue ║
║ 2017-02 ║ B ║ 1 ║ 150 ║ 105 ║ 1 ║ Revenue ║
║ 2017-01 ║ A ║ 2 ║ -50 ║ 105 ║ 2 ║ Cost ║
║ 2017-01 ║ B ║ 2 ║ -50 ║ 105 ║ 2 ║ Cost ║
║ 2017-02 ║ B ║ 2 ║ -20 ║ 105 ║ 2 ║ Cost ║
║ 2017-01 ║ A ║ 1 ║ 100 ║ 105 ║ 1 ║ Profit ║
║ 2017-01 ║ B ║ 1 ║ 200 ║ 105 ║ 1 ║ Profit ║
║ 2017-02 ║ A ║ 1 ║ 20 ║ 105 ║ 1 ║ Profit ║
║ 2017-02 ║ B ║ 1 ║ 150 ║ 105 ║ 1 ║ Profit ║
║ 2017-01 ║ A ║ 2 ║ -50 ║ 105 ║ 2 ║ Profit ║
║ 2017-01 ║ B ║ 2 ║ -50 ║ 105 ║ 2 ║ Profit ║
║ 2017-02 ║ B ║ 2 ║ -20 ║ 105 ║ 2 ║ Profit ║
╚═══════════╩═════════╩═══════════╩════════╩════════════╩═══════════╩═════════╝
Ensuite, je peux pivoter comme ça:
╔═════════╦═════════╦═════════╗
║ Line ║ Store A ║ Store B ║
╠═════════╬═════════╬═════════╣
║ Revenue ║ 120 ║ 350 ║
║ Cost ║ -50 ║ -70 ║
║ Profit ║ 70 ║ 280 ║
╚═════════╩═════════╩═════════╝
Dans DAX, il semble beaucoup plus complexe - j'espère que quelqu'un peut me prouver le contraire! J'ai lu le filtrage bidirectionnel peut permettre des relations de plusieurs-à-plusieurs, mais je ne pouvais pas le faire fonctionner ici. La raison pour laquelle j'essaie de faire cela est de rejoindre DAX plutôt que SQL parce que j'ai plusieurs modèles d'instructions et je préférerais ne pas avoir plusieurs charges avec des données très similaires si cela pouvait être fait dynamiquement via DAX. Merci!
avez-vous essayé 'NATURALINNERJOIN (, )' https://msdn.microsoft.com/fr-fr/library/dn802543.aspx?f=255&MSPPError=-2147217396 –
Horaciux
Aussi, jetez un oeil à ce poste https://www.sqlbi.com/articles/from-sql-to-dax-joining-tables/ – Horaciux
Merci Horaciux, NaturalInnerJoin ne donnera pas le résultat souhaité (vraiment envie d'une jointure à gauche), cela dit, il produit toujours la même erreur. J'ai regardé le lien, mais cela n'avait pas beaucoup de sens - j'espérais que quelqu'un pourrait avoir une solution pour ce scénario. Merci pour la suggestion si !! :) – FirstRedPepper