如何创建筛选 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 上也是如此。
我在 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 上也是如此。