出于某些显而易见的原因,我需要在日期[日期]和表格2 [T2Date]之间建立关系(非活动)。但是,这样做会导致数据波动,以衡量表1中的“总金额”。
在关系之前(日期[日期] - 表2 [T2Date]):
关系之后(日期[日期] - 表2 [T2Date]):
我需要理解为什么会出现这种差异以及这种关系如何引起它,因为该措施使用了不同的关系。
作为参考,我附上了pbix报告。
https://drive.google.com/open?id=1XknisXvElS6uQN224bEcZ_biX7m-4el4
任何帮助,将不胜感激 :)
@MikeHoney提供的链接确实提供了关于关系细微之处的有用信息,并确实与此问题相关(请注意它!),但这个问题最终与双向过滤无关。事实上,我可以用这种简化的关系结构重现它:
这里需要注意的关键是当你将Table2
附加到Dates
时,由于Table2
包含与任何T2Date
不匹配的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
,一个使用ALLNOBLANKROW
:
请注意,ALL
列中的每一行都被-7,872.01
减少了。这是与Net Amount
表中任何日期不匹配的所有Dates
值的总和。如果你删除从Dates[date]
到Table2[T2Date]
的关系,那么空白行不再存在,并且这两个行都将匹配ALLNOBLANKROW
版本。
在任何关系上将交叉过滤器方向设置为Both都有点冒险 - 您基本上将运行时查询设计的控制权移交给Power BI机器人。那么他们就有可能想出一个意想不到的“创意”查询设计。
在Alberto Ferrari最近的一次演讲中,有一些关于这种情况的见解:
https://www.sqlbi.com/tv/understanding-relationships-in-power-bi/
我相信你会同意这是非常可怕的。
查看您的信息,我希望您可以通过将Cross Cross Direction更改为Single来避免这些陷阱,从MonthYear到Dates的关系。