如何使用DAX对两个单独的经过过滤的表执行完全外部联接?

时间:2019-07-10 23:12:57

标签: powerbi dax

我有一个名为Error的原始表,还有两个从原始表(例如ErrorBefore)派生的附加表(ErrorAfterErrorAfter = ALLSELECTED('Error'))。我想比较“之前”版本和“之后”版本中的值,以及启用“单选”的切片器选择的不同版本。没关系。现在,我想对两个结果执行全外连接,并在Message列上进行连接。下图显示了到目前为止的结果,在我要实现的结果的底部有一个伪造的表。我尝试使用NATURALLEFTOUTERJOINGENERATE,但是它们要么没有给出我想要的结果。有人知道如何执行加入吗?

PBIX共享here

enter image description here

1 个答案:

答案 0 :(得分:2)

首先,将数据模型更改为此:

enter image description here

我删除了所有派生表和关系,而是创建了2个这样的表:

Version Before = DISTINCT('Error'[Version])

Version After = DISTINCT('Error'[Version])

两个表都应该与错误表没有关系。

然后,创建一个度量:

Message Count = COUNT('Error'[Message])

您应该始终自己创建度量,不要使用Power BI自动聚合。

下一步,为“之前”计数创建度量标准

Message Count Before = 
  VAR Version_Before = SELECTEDVALUE('Version Before'[Version])
RETURN
  CALCULATE([Message Count], 'Error'[Version] = Version_Before)

并且,类似地:

Message Count After = 
  VAR Version_After = SELECTEDVALUE('Version After'[Version])
RETURN
  CALCULATE([Message Count], 'Error'[Version] = Version_After)

最后,调整视觉效果:

  • 切片器“之前”应基于表“之前版本”
  • 切片器“之后”应基于表“之后的版本”
  • 图表应在值中使用“消息计数前”和“消息计数后”度量
  • 添加包含消息和两个度量的另一个表

结果:

enter image description here