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

Power BI中基于ID与Date2动态计算Result列的DAX方案求助

解决方案:DAX实现分组累积计算

计算列方案(适合静态数据)

如果需要在表格中直接添加Result列,使用计算列是最直接的方式。假设同一个ID对应的Value值一致(符合你描述的重复ID和Value的场景),DAX代码如下:

Result = 
VAR CurrentID = [ID]
VAR CurrentDate2 = [Date2]
-- 获取当前ID对应的初始Value(因ID重复,取MAX/ MIN/ FIRSTNONBLANK均可)
VAR InitialValue = CALCULATE(MAX([Value]), FILTER('Table', 'Table'[ID] = CurrentID))
-- 计算当前ID下,Date2小于等于当前行的所有Value2之和
VAR CumulativeValue2 = CALCULATE(SUM([Value2]), FILTER('Table', 'Table'[ID] = CurrentID && 'Table'[Date2] <= CurrentDate2))
RETURN InitialValue + CumulativeValue2

逻辑说明

  • 第一条行:CumulativeValue2就是当前行的Value2,结果为Value + Value2,符合要求。
  • 后续行:CumulativeValue2是该ID下从第一条到当前行的所有Value2之和,加上初始Value后,等价于上一条Result加上当前Value2。

度量值方案(适合动态交互场景)

如果需要在可视化中动态计算(比如切片器筛选后实时更新),可以使用度量值:

Result Measure = 
VAR CurrentID = SELECTEDVALUE('Table'[ID])
-- 按ID分组后,获取该ID下所有Date2和对应的Value2
VAR SortedDate2 = SUMMARIZE('Table', 'Table'[Date2], "RowValue2", 'Table'[Value2])
-- 为每个Date2行添加累积Value2的计算
VAR CumulativeTable = ADDCOLUMNS(
    SortedDate2,
    "CumulativeSum",
    CALCULATE(
        SUM('Table'[Value2]),
        FILTER(SortedDate2, 'Table'[Date2] <= EARLIER('Table'[Date2]))
    )
)
-- 获取当前ID的初始Value
VAR InitialValue = CALCULATE(MAX('Table'[Value]), 'Table'[ID] = CurrentID)
-- 迭代计算每行的Result并求和(适配可视化中的分组展示)
RETURN SUMX(CumulativeTable, InitialValue + [CumulativeSum])

注意事项

  1. 如果同一个ID下存在重复的Date2,需要添加额外的排序字段(比如在Power Query中添加索引列),确保每行顺序唯一,避免累积计算出现偏差。
  2. 计算列在数据加载时生成,适合数据更新频率低的场景;度量值随筛选上下文动态计算,适合需要交互分析的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:50:10