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

DAX实现GROUP BY与MIN:如何按年份统计首次售出产品数量?

统计每年首次售出的产品数量(DAX实现)

正确解决方案

以下是可实现需求的DAX代码,核心逻辑为:先计算每个产品的首次销售年份,再匹配当前上下文年份完成统计:

DEFINE MEASURE 'Sales'[首次售出产品数量] = 
VAR 产品首次销售年份 = 
    ADDCOLUMNS(
        VALUES(Sales[ProductKey]),
        "@首次销售年", YEAR(CALCULATE(MIN(Sales[Order Date]), ALL(Sales)))
    )
RETURN
    COUNTROWS(
        FILTER(
            产品首次销售年份,
            [@首次销售年] = SELECTEDVALUE('Date'[Calendar Year])
        )
    )

EVALUATE
SUMMARIZECOLUMNS(
    'Date'[Calendar Year],
    "首次售出产品数量", 'Sales'[首次售出产品数量]
)

若模型中存在独立的Products表,也可通过「计算列+度量值」的组合实现更简洁的逻辑:

  1. 给Products表添加计算列
Products[首次销售年份] = YEAR(CALCULATE(MIN(Sales[Order Date]), ALL(Sales)))
  1. 编写度量值
Sales[首次售出产品数量] = 
CALCULATE(
    DISTINCTCOUNT(Products[ProductKey]),
    Products[首次销售年份] = SELECTEDVALUE('Date'[Calendar Year])
)

原代码问题分析

你之前的代码未能达成需求,核心问题如下:

  • 第一个度量值m1中,SUMMARIZECOLUMNS未筛选「首次销售年份等于当前上下文年份」的产品,反而通过ALL(Sales[Order Date])等清除了日期上下文,导致统计结果为所有曾售出的产品总数,与每年总售出产品数完全重合。
  • 第二个尝试的代码里,FILTER条件逻辑错误:未将产品首次销售年份与当前上下文年份关联,且ALL函数过度清除上下文导致筛选失效,最终仍统计了当年所有售出的产品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:13:10