影响措施的非活动关系

问题描述 投票:1回答:2

我在pbix报告中有以下表格和关系:enter image description here

出于某些显而易见的原因,我需要在日期[日期]和表格2 [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

任何帮助,将不胜感激 :)

powerbi dax data-modeling powerbi-desktop
2个回答
3
投票

@MikeHoney提供的链接确实提供了关于关系细微之处的有用信息,并确实与此问题相关(请注意它!),但这个问题最终与双向过滤无关。事实上,我可以用这种简化的关系结构重现它:

Relationship Diagram

这里需要注意的关键是当你将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

Comparison Table

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


2
投票

在任何关系上将交叉过滤器方向设置为Both都有点冒险 - 您基本上将运行时查询设计的控制权移交给Power BI机器人。那么他们就有可能想出一个意想不到的“创意”查询设计。

在Alberto Ferrari最近的一次演讲中,有一些关于这种情况的见解:

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

我相信你会同意这是非常可怕的。

查看您的信息,我希望您可以通过将Cross Cross Direction更改为Single来避免这些陷阱,从MonthYear到Dates的关系。

© www.soinside.com 2019 - 2024. All rights reserved.