【问题标题】:Count distinct values in a string column计算字符串列中的不同值
【发布时间】:2021-05-31 11:06:37
【问题描述】:

我目前正在使用 Excel,我需要编写 DAX 代码来计算字符串列中的不同值。我在 Excel 中使用的公式是: IF(SUMPRODUCT(($BV$2:$BV2=BV2)*($BV$2:$BV2=BV2))>1;0;1);其中 BV 等于 TK 列。

我期望的结果在 Distinct 列中:

TK Distinct 43470,yyy,uuu,20191 1 43470,yyy,uuu,20191 0 43470,yyw,uuu,20191 0 43470,yyyz,uuu,20191 0

我尝试了各种代码和想到的所有东西,但我缺乏在 DAX 中比较值的经验,而且现在有点过头了。

有人可以帮忙吗? 非常感谢!

【问题讨论】:

  • 你的结果有点混乱,为什么最后两个是不同的但也算作0?
  • 因为如果它是唯一的,我放 1,而如果多次找到 TK,我放 0。然后我需要计算有多少个唯一字符串。希望这可以帮助您理解我的问题。非常感谢您的帮助。
  • 对不起,你是对的,唯一值应该算1

标签: powerbi dax distinct powerbi-desktop


【解决方案1】:

您可以在PowerBi中复制sumproduct函数,虽然公式很难理解,如果有帮助,请接受答案:)

  1. 您需要在查询编辑器中创建一个index column

  2. 应用以下公式即可:

     Duplicate check = IF( CALCULATE(COUNT('Sheet1 (2)'[tks]),
                     FILTER(ALL('Sheet1 (2)'),'Sheet1 (2)'[Index] <= EARLIER('Sheet1 (2)'[Index])),
                         FILTER(ALL('Sheet1 (2)'),'Sheet1 (2)'[tks]=EARLIER('Sheet1 (2)'[tks])))>1,
                             0,1)
    

输出:

【讨论】:

  • 感谢您的建议。不幸的是,我在 Power BI 方面没有足够的经验,因为结果不是预期的。请原谅,但是有一种方法可以复制公式 IF(SUMPRODUCT(($BV$2:$BV2=BV2)*($BV$2:$BV2=BV2))>1;0;1) 在功率 Bi 所以我可以将其插入表格的新列中:这将使我更容易拥有所有可用的过滤器。非常感谢您的帮助。
  • 查看我编辑的答案,sumproduct 函数可以在 PowerBI 中复制 :)
  • 欢迎,如果你喜欢 :)
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2015-07-25
相关资源
最近更新 更多