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

求助:Power BI中基于Group By、Max及Sum函数的DAX度量编写

解决DAX度量问题的方案

核心思路

  1. 先定位每个Answer + Customer_ID组合的最新Activity_Date
  2. 筛选出TEMP_WQ表中符合该最新日期的行,自动去除重复的用户-答案组合记录
  3. 对筛选后的TotalAnswer按Answer汇总求和
  4. 确保度量能响应DimDate的筛选逻辑,支持同期数据对比场景

最终DAX度量

Total Measure = 
VAR LatestPerCustomerAnswer = 
    ADDCOLUMNS(
        SUMMARIZE(TEMP_WQ, TEMP_WQ[Answer], TEMP_WQ[Customer_ID]),
        "@LatestDate", CALCULATE(MAX(TEMP_WQ[Activity_Date]))
    )
VAR FilteredTable = 
    NATURALINNERJOIN(
        TEMP_WQ,
        LatestPerCustomerAnswer
    )
RETURN
    SUMX(FilteredTable, FilteredTable[TotalAnswer])

度量细节说明

  • LatestPerCustomerAnswer:通过SUMMARIZE生成所有Answer+Customer_ID的唯一组合,再用CALCULATE(MAX(...))计算每组的最新活动日期,得到包含分组键和对应最新日期的临时表。
  • FilteredTable:用NATURALINNERJOIN关联原表和临时表,只保留每个分组中对应最新日期的行,彻底去除重复的用户-答案记录。
  • SUMX:对筛选后的表求和,确保只计算每个用户对应每个Answer的最新记录的TotalAnswer,同时会自动响应DimDate的筛选(比如选择某时间段时,只计算该时间段内的最新记录)。

同期对比适配方案

如果需要基于DimDate做同期对比(如同比),只需确保DimDate与TEMP_WQ的Activity_Date建立单向筛选的日期关系,再搭配标准时间智能函数即可,示例同比度量:

Total Measure (YoY) = 
CALCULATE(
    [Total Measure],
    SAMEPERIODLASTYEAR(DimDate[Date])
)

常见问题排查

  • 若结果仍有重复,检查Activity_Date是否包含时间部分:如果有,需确保MAX计算的是精确到秒的最新时间,或用DATEVALUE(Activity_Date)转换为纯日期格式后再取最大值。
  • 确认DimDate与TEMP_WQ的日期关系设置正确,避免筛选逻辑冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:22:54