不活跃的关系影响措施

时间:2019-04-20 07:34:20

标签: powerbi dax data-modeling powerbi-desktop

我的pbix报告中包含以下表格和关系: enter image description here

出于某些显而易见的原因,我需要在Dates [date]和Table2 [T2Date]之间建立一个(非活动的)关系。但是,这样做会导致数据波动来衡量表1中的“总计”。

以下是一些屏幕截图: enter image description here

关系之前(日期[日期]-表2 [T2Date]):

enter image description here

关系后(日期[日期]-表2 [T2Date]):

enter image description here

由于度量使用不同的关系,我需要了解为什么会出现这种差异以及这种关系是如何引起的。

作为参考,我附上pbix报告。

https://drive.google.com/open?id=1XknisXvElS6uQN224bEcZ_biX7m-4el4

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:3)

@MikeHoney提供的链接具有有关关系的细微作用的确实有用的信息,并且确实与该问题有关(请注意!),但是此问题最终并没有特别涉及双向过滤。实际上,我可以使用这种简化的关系结构来重现它:

Relationship Diagram

此处要注意的关键是,将Table2附加到Dates时,由于Table2包含T2Date个与任何{{1} },这会在Date[date]中创建一个带有空白日期的额外行,当该关系存在(活动或不活动)时,您可以在Dates的过滤器中看到该日期。在6. Year过滤器中过滤出该空白将起作用,除了在测量中,您可以使用6. Year剥离对该表进行的所有过滤。

有多种方法可以解决此差异,最简单的方法是将ALL(Dates)替换为ALL。如果您使用ALLNOBLANKROW,那么它也可以与在ALLSELECTED上的报告级过滤器中过滤出空白一起使用。

清理一些与此上下文无关的项目并将6. Year更改为ALL,您的总度量可以更简单地写为:

ALLNOBLANKROW

没有ALLNOBLANKROW = VAR EndServiceDate = MAX ( Dates[Date] ) RETURN CALCULATE ( SUM ( Table1[Net Amount] ), FILTER ( ALLNOBLANKROW ( Dates ), Dates[Date] <= EndServiceDate ), Table1[Flag2] = 1, Table1[Flag] = TRUE () ) 过滤器且有两种度量的结果,一种使用6. Year,另一种使用ALL

Comparison Table

请注意,ALLNOBLANKROW列中的每一行都减少了ALL。这是与-7,872.01表中的任何日期都不匹配的所有Net Amount值的总和。如果您从DatesDates[date]删除关系,则空白行将不再存在,并且两者都将与Table2[T2Date]版本匹配。

答案 1 :(得分:2)

在任何关系上将交叉过滤器方向设置为两者都有些冒险-实际上,您将对运行时查询设计的控制权移交给了Power BI机械手。这样一来,他们就有可能提出意想不到的“创意”查询设计。

在阿尔贝托·法拉利(Alberto Ferrari)最近的一次演讲中,对这种情况的发生有了一些见解:

https://www.sqlbi.com/tv/understanding-relationships-in-power-bi/

我确定你会同意这非常恐怖的。

查看您的信息,我希望您可以通过将交叉过滤器方向更改为单次来避免这些陷阱,因为关系从 MonthYear 更改为 Date strong>。