如何创建一个 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))
记分卡结果
我有一个 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))
记分卡结果