我在 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 会中断,因为它不喜欢第二个表。
它不需要像这样的表 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
都会返回零而不是空白。如果您更喜欢空白,则可以将其删除。)
如果我理解正确,你的问题会转化为这样的内容:我想计算两个表中存在的所有不同问题 ID。
因此尝试这个措施
CALCULATE(
DISTINCTCOUNT(Table2[questionId]),
FILTER(
Table2,
RELATED(Table1[questionId])
)
)
有点偏离主题,但我建议不要使用表之间的多对多关系,即使在 power bi 上也是如此。
我有类似的事情,希望有人能帮助我。 我在同一个表中有两列。 我想创建一个计数度量,通过“是”过滤一列,然后通过两个变量“4G”和“4G(项目安装前)”对另一列进行计数,以获得基于两个“4G”变量的总和关于过滤条件。 执行此操作的最佳方法是什么?