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

如何将筛选DS开头doc字段的SQL改写为正确的DAX语句

等效DAX写法说明

原SQL的核心逻辑是筛选出表中所有以DS为前缀的去重doc值,你之前编写的DAX存在3个问题:

  • 误用DISTINCTCOUNT聚合函数:该函数用于统计不重复值的数量,和SQL返回去重后值集合的逻辑不符
  • 筛选条件语法错误:CALCULATE的布尔筛选参数需要针对基础表逐行计算判断,不能直接传入DISTINCT返回的多值表作为判断对象
  • 匹配逻辑错误:SEARCH("DS",...)默认匹配任意位置包含DS的文本,和SQL中like 'DS%'仅匹配开头为DS的规则不一致

根据你的使用场景,选择对应写法即可:

场景1:编写度量值,统计符合条件的不重复doc数量

如果你的目标是计算以DS开头的doc有多少个不重复值,用以下度量值写法:

DS开头doc不重复计数 = 
CALCULATE (
    DISTINCTCOUNT ( 'table'[doc] ),
    LEFT ( 'table'[doc], 2 ) = "DS"
)

注:用LEFT做前缀匹配的性能优于SEARCH,如果需要保留SEARCH写法,可将判断条件替换为SEARCH("DS", 'table'[doc], 1, 0) = 1,当返回值为1时代表DS出现在字符串起始位置,和like 'DS%'逻辑完全一致。

场景2:编写DAX查询,返回和原SQL完全一致的去重值列表

如果需要和原SQL一样直接返回符合条件的去重doc结果集,用DAX查询写法:

EVALUATE
FILTER (
    DISTINCT ( 'table'[doc] ),
    LEFT ( 'table'[doc], 2 ) = "DS"
)

如果需要对返回结果排序,可以在末尾加ORDER BY 'table'[doc]即可。

内容的提问来源于stack exchange,提问作者Тимур Хабибуллин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:10