如何创建过滤 2 个表的度量

问题描述 投票:0回答:3

我在 power bi 中有以下两个表,它们共享多对多关系。

表1

code | Name | QuestionID
11   | Test |123
12   | Test |123

表2

Code | Name | Answer | Compliant| QuestionID
11   |Test  | Yes    | 1        |123
12   |Test  | Yes    | 1        |123
458  |Test2 | NO     | 0        |256
678  |Test3 | Yes    | 0        |000

正如您在表 1 中看到的,有一个 QuestionId 和代码,在表 2 中它们也是匹配的 QuestionID 和代码

我只想计算表 2 中问题 ID 的一个答案,其中问题 ID 和代码存在于表 1 中

正如您所看到的,他们对 QuestionID 123 回答了两个问题,但我只想将其作为一个答案的计数。(注意,同一问题可以有多个答案)

我不知道如何过滤这两个表。

这是我尝试过的

Measure =
CALCULATE (
    COUNT ( 'Table 2'[Answer] ),
    FILTER ( 'Table1', 'Table1'[Code] = 'Table 2'[code] )
        && 'Table 2'[Compliant] = 1
)

但这不起作用,因为当加入表 2 时,FILTER 会中断,因为它不喜欢第二个表。

powerbi dax powerbi-desktop measure
3个回答
1
投票

它不需要像这样的表 2 列引用,因为列通常有多于一行。这可能会起作用:

Measure =
CALCULATE (
    COUNT ( 'Table 2'[Answer] ),
    FILTER (
        'Table 2',
        'Table 2'[Code] IN VALUES ( 'Table1'[code] )
            && 'Table 2'[Compliant] = 1
    )
) + 0

该关系应该处理表 1 对表 2 的过滤。因此,您应该能够通过将 Table1 应用为过滤表来更简单地编写它,如下所示:

Measure =
CALCULATE (
    COUNT ( 'Table 2'[Answer] ),
    'Table1',
    FILTER ( 'Table 2', 'Table 2'[Compliant] = 1 )
) + 0

(在这两种情况下,

+ 0
都会返回零而不是空白。如果您更喜欢空白,则可以将其删除。)


0
投票

如果我理解正确,你的问题会转化为这样的内容:我想计算两个表中存在的所有不同问题 ID。

因此尝试这个措施

CALCULATE(
    DISTINCTCOUNT(Table2[questionId]),  
    FILTER(
        Table2,
        RELATED(Table1[questionId])
    )
)

有点偏离主题,但我建议不要使用表之间的多对多关系,即使在 power bi 上也是如此。


0
投票

我有类似的事情,希望有人能帮助我。 我在同一个表中有两列。 我想创建一个计数度量,通过“是”过滤一列,然后通过两个变量“4G”和“4G(项目安装前)”对另一列进行计数,以获得基于两个“4G”变量的总和关于过滤条件。 执行此操作的最佳方法是什么?

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