如何创建基于 id 过滤掉代码的 power bi 度量

时间:2021-05-27 12:02:07

标签: powerbi dax measure

我有一个表,其中有多个相同的代码,每个代码可以有不同的 id,如下所示

Code | ID
45   | 2
45   | 5
45   | 8
45   | 7
21   | 1
21   | 9

我想计算没有 ID 为 2 或 8 的代码。但是,例如,因为 45 的代码具有 2 或 8 的 id,我想忽略该代码,只给我代码 21,这将是 1 的计数

我试过了

Unsuccessful = CALCULATE(DISTINCTCOUNT('Table'[code]), FILTER('Table', NOT('Table'[ID] in {2,8})))

但是当我希望它是 1 时,上面给了我 2 的计数。如果它已经存在 2 或 8 个代码,我如何忽略该代码

2 个答案:

答案 0 :(得分:1)

您的代码几乎是正确的:

Unsuccessful = CALCULATE(DISTINCTCOUNT('Tables'[code]),FILTER('Tables', NOT(CALCULATETABLE(VALUES('Tables'[Code]), ('Tables'[ID] in {2,8})))))

内部返回我们想要排除的代码。

CALCULATETABLE(VALUES('Tables'[Code]), ('Tables'[ID] in {2,8})

首先考虑内部。 CALCULATETABLE 根据第二个过滤器从第一个参数为我们生成表)。 VALUES('Table'[Code]) -> 从列中生成不同的值列表,因为它记住了来源(更多:这里 https://www.sqlbi.com/?s=lineage)。这部分返回我们找到 ID 2 或 8 的代码(在本例中代码 = 45)。

当我们有要排除的代码列表时,一切都很简单。我们只是将 FILTER 放在 CALCULATE 中。 FILTER 的第一个参数是我们的基表,第二个参数是过滤它的自身。这里我们把表格作为过滤器,因为 Lineage,引擎“知道”数据之间的关系。

enter image description here

答案 1 :(得分:0)

我已经尝试了增加数据量的问题,最后结果与您的预期相同,如果有帮助,请接受:)

这是原始数据的表格

enter image description here

我应用此度量来计算包含 2 或 8 的不同期望:

Measure 2 = CALCULATE(DISTINCTCOUNT(Sheet1[Code]),FILTER(Sheet1,Sheet1[ID] = 2 || Sheet1[ID] = 8))

记分卡结果

enter image description here