You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAX对列表列中的字符串计算去重值?

解决DAX中针对列表内值的去重统计问题

当然可以实现这个需求!你想要针对每个用户名下的所有嵌套列表做去重单词计数,不用手动遍历,通过DAX的函数组合就能轻松搞定。

核心思路

我们需要先把每个用户对应的所有列表展开成单个单词的集合,再对这个集合做去重后计数。这里用到GENERATEALL来展开列表,DISTINCT去重,最后用COUNTROWS统计数量。

度量值代码

假设你的表名为WordTable,可以创建如下度量值:

Distinct Word Count = 
VAR CurrentUserWords = 
    // 筛选当前用户的所有行,展开每行的Word List为单个单词行
    GENERATEALL(
        FILTER( WordTable, WordTable[Name] = SELECTEDVALUE(WordTable[Name]) ),
        WordTable[Word List]
    )
VAR UniqueWordSet = DISTINCT( CurrentUserWords[Value] )
RETURN
    COUNTROWS( UniqueWordSet )

代码解释

  1. CurrentUserWords:这一步会筛选出当前上下文(比如表格中选中的Name)对应的所有行,然后用GENERATEALL把每行的列表拆分成单独的单词行。比如Bob的两行列表会被拆成6个单词行(重复的aye/bee/cee各出现两次)。
  2. UniqueWordSet:用DISTINCT对展开后的单词行去重,得到当前用户的唯一单词集合。
  3. 返回计数:最后用COUNTROWS统计去重后的单词数量,就是你要的结果。

验证结果

把这个度量值放到包含Name列的表格视觉对象中,就能得到你期望的输出:

  • Bob的去重单词数:3
  • Jim的去重单词数:3
  • Ray的去重单词数:6

如果想要更紧凑的写法,也可以把步骤合并成一行:

Distinct Word Count = 
COUNTROWS(
    DISTINCT(
        GENERATEALL(
            FILTER( WordTable, WordTable[Name] = SELECTEDVALUE(WordTable[Name]) ),
            WordTable[Word List]
        )[Value]
    )
)

注意:如果你的"Word List"是文本格式(比如用逗号分隔的字符串)而不是DAX列表,需要先通过TEXTSPLIT函数把文本转成列表,再用上述逻辑处理。

内容的提问来源于stack exchange,提问作者mik_ste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:45:02