影响措施的非活动关系

Inactive relationships affecting measures

我的 pbix 报告中有以下表格和关系:

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

以下是部分截图:

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

建立关系后(日期[日期] - Table2[T2Date]):

我需要了解为什么会出现这种差异以及这种关系是如何导致这种差异的,因为该度量使用了不同的关系。

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

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

任何帮助将不胜感激:)

在任何关系上将交叉筛选器方向设置为 两者 有点冒险 - 您实际上将运行时查询设计的控制权移交给了 Power BI 机器人。这样就存在风险,他们会想出 "creative" 出乎意料的查询设计。

A​​lberto Ferrari 最近的一次演讲中对这种情况的发生有一些见解:

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

我相信你会同意这很可怕。

查看您的信息,对于 MonthYear[=25= 的关系,我希望您可以通过将 Cross Filter Direction 更改为 Single 来避免这些陷阱]到日期

@MikeHoney 提供的 link 提供了关于关系微妙之处的非常有用的信息,并且确实与这个问题有关(一定要注意!),但这个问题最终与双向过滤没有特别的关系。事实上,我可以用这个简化的关系结构重现它:

这里要注意的关键是,当您将 Table2 附加到 Dates 时,因为 Table2 包含与任何 [= 不匹配的 T2Date 值15=],这会在 Dates 中创建一个带有空白日期的额外行,当该关系存在(活跃或不活跃)时,您可以在 6. Year 的过滤器中注意到它。过滤掉 6. Year 过滤器中的空白将起作用,除了在您的度量中,您使用 ALL(Dates) 去除在 table.

上完成的所有过滤

有多种方法可以解决此差异,最简单的方法是将 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。这是与 Dates table 中的任何日期都不匹配的所有 Net Amount 值的总和。如果您删除从 Dates[date]Table2[T2Date] 的关系,则空白行将不再存在,并且这两个都将匹配 ALLNOBLANKROW 版本。