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

DAX查询按ProductNumber、SerialNumber去重时如何保留其余字段

解决方案

你之前的写法丢失字段的原因是:DISTINCT 仅作用在你指定的仅包含SerialNumber和ProductNumber两列的结果集上,自然不会携带其他字段。结合你的SQL背景,你可以用SUMMARIZE函数实现等价于GROUP BY的效果,按指定列分组去重的同时返回需要的其他字段。

另外建议不要用FORMAT转字符串做日期比较,直接用日期值比较性能更高且不会出现格式匹配异常,最终可直接使用如下查询:

EVALUATE
CALCULATETABLE (
    SUMMARIZE (
        'Analysis Services DB',
        -- 以下两列为分组去重依据,等价于SQL中GROUP BY的字段
        'Analysis Services DB'[SerialNumber],
        'Analysis Services DB'[ProductNumber],
        -- 后续为你需要返回的其他字段
        "COIDate", 'Analysis Services DB'[COIDate],
        "ProductFullName", 'Analysis Services DB'[ProductFullName]
    ),
    -- 过滤条件
    'Analysis Services DB'[ProductLine] = "TW",
    'Analysis Services DB'[COIDate] <> BLANK(),
    'Analysis Services DB'[COIDate] <= DATE(2018,12,12)
)

补充说明

如果同一个SerialNumber+ProductNumber分组下存在多个不同的COIDate或ProductFullName,你可以和SQL用法一样给对应字段加聚合函数,比如取最早的COIDate就写为:
"COIDate", MIN('Analysis Services DB'[COIDate])
如果同分组下这些字段的值均唯一,直接返回原始字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:36:02