如何创建筛选 2 个表的度量

how to create a measure that filters 2 tables

我在 power bi 中有以下两个 table 共享多对多关系。

Table1

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

Table 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

因此,正如您在 table 1 中看到的,有一个问题 ID 和代码,在 Table 2 中,它们也是一个匹配的问题 ID 和代码

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

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

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

这是我试过的

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

但这在加入 table 2 时在 FILTER 上不起作用,因为它不喜欢第二个 table.

它不期望像这样的 Table 2 列引用,因为列通常有不止一行。这可能会起作用:

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

该关系应该处理 Table1 在 Table2 上的过滤。所以你应该能够通过应用 Table1 作为过滤 table 来更简单地编写它,如下所示:

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

(在这两种情况下,+ 0 是 return 零而不是空白。如果您更喜欢空白,可以将其删除。)

如果我理解正确,你的问题可以翻译成这样:我想计算两个表中存在的所有不同的问题 ID。

所以试试这个措施

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

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