【问题标题】:Filtering using an indirect relationship in Power BI在 Power BI 中使用间接关系进行筛选
【发布时间】:2021-12-20 17:22:30
【问题描述】:

我有三个具有这些关系的表: 'T1'[B]

现在想象一下,我想要一个像这张表这样的报告: 'T2'[C] 的项目 |总和('T1'[C])

我还需要通过选择 T3[B] 的一些项目来过滤这个表。我所做的是创建一个度量: SumByT3 = CALCULATE(SUM('T1'[C]), USERELATIONSHIP('T1'[B], 'T2'[A]), USERELATIONSHIP('T2'[D],'T3'[A])) (虽然定义了这些关系。)

然后我在 T3[B] 上放置了一个页面过滤器。之后,我创建了一个表,其中 T2[C] 作为轴,SumByT3 作为值。但它不起作用。即使我删除了页面过滤器。

【问题讨论】:

  • 在 T1 和 T2 之间,哪一个是多面的?在 T2 和 T3 之间,哪一个是多方的?
  • @smpa01 分别。
  • 箭头方向不对那么'T1'[B]<-'T2'[A]
  • 是,在 Power BI 中,箭头指示筛选器流的方向,而不是对主键的引用方向。所以这里 T2 和 T3 上的任何过滤器都应该流向 T1,您根本不需要更改度量中的过滤器,所以只需 SUM('T1'[C])
  • 我需要使用 USERELATIONSHIP 的原因是在真实场景中 'T1' 和 'T2' 之间存在多个关系。 @DavidBrowne-微软

标签: powerbi relationship


【解决方案1】:

试试这个措施 它给出了所有 T1[C]

的总和

{that has the same filteredT2[A] as T1[B]}

{filteredT2 contains all T2[D] where T2[D]=T3[A]}

Measure =
CALCULATE (
    SUM ( 'T1'[C] ),
    TREATAS (
        SUMMARIZE (
            CALCULATETABLE ( T2, FILTER ( T2, ( T2[D] ) IN SUMMARIZE ( T3, T3[A] ) ) ),
            T2[A]
        ),
        T1[B]
    )
)

以下返回只有 T2[D]=T3[A] 的 T2

Table =
CALCULATETABLE ( T2, FILTER ( T2, ( T2[D] ) IN SUMMARIZE ( T3, T3[A] ) ) )

然后,只有唯一的 T2[A] 被提取出来

SUMMARIZE (
            CALCULATETABLE ( T2, FILTER ( T2, ( T2[D] ) IN SUMMARIZE ( T3, T3[A] ) ) ),
            T2[A]
        )

在创建 T2[A] 和 T1[B] 的内部连接的 TREATAS 中使用

【讨论】:

  • 你能解释一下我在理解问题的逻辑以及我试图解决它的方式方面的错误吗?我想每当我使用 USERELATIONSHIP 时,就意味着正在发生连接。所以会有两个连接。然后通过过滤“一个”边表中的任何列,结果将被过滤。是不是我们不能使用关系来做链式连接,我们需要 CALCULATETABLE 来这样做?
  • DAX 的一个概念让我们相信,为了让 DAX 工作,必须存在一种关系。在两个表之间只能存在一个活动关系,因此为了迎合不同的场景,我们继续使用不同的代理键建立非活动关系,希望在需要激活该部分时通过USERELATIONSHIP 使用它们。但事实是 DAX 仍然可以在没有关系的情况下工作 - TREATAS、CONTAINS、INTERSECT。因此,我根本不需要使用USERLEATIONSHIP,因为我可以使用这些语法。顺便说一句,它给了你你需要的东西吗?
  • 我不是USERELATIONSHIP 的忠实粉丝,也不会经常使用它,因此我无法真正评估你写的表达式。
  • 我一般同意,如果我需要明确提及要使用的关系,我可以在那里定义关系。在实现@smpa01 代码时,我发现我的数据源在 T1 和 T2 之间存在模式偏差,T1 没有指向 T2 索引 (ID)。相反,它与另一列有关。所以我修复了我的代码和 smpa01。请告诉我是否需要完全删除该帖子。非常感谢您的帮助。
  • 如果解决了问题,请您接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
相关资源
最近更新 更多