如何创建一个 power bi measure 来过滤掉基于 id 的代码

how to create a power bi measure that filters out a code based on a id

我有一个 table 有多个相同的代码,每个代码可以有不同的 ID,如下所示

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

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

我试过了

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

但是上面的计数是 2,而我希望它是 1。我如何忽略 那个代码 如果它已经存在 2 或 8 个反对它?

您的代码几乎正确:

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

内部return是我们要排除的代码。

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

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

当我们有了要排除的代码列表时,一切都很简单。我们只是将 FILTER 放在 CALCULATE 中。 FILTER 的第一个参数是我们的基础 table,第二个 - 过滤它自己。在这里,我们将 table 作为过滤器,并且由于沿袭,引擎“知道”数据之间的关系。

我试过你的问题,增加数据量,最后结果和你预期的一样,如果有帮助,请采纳:)

这里是原始数据table

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

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

记分卡结果