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

Power BI中按ID分组获取指定Task对应的最早Update日期

解决Power BI按ID分组提取指定Task最早日期的问题

问题核心

需要为每个ID计算Task为'A'时的最早Update日期,最终实现每个ID一行、每个Task对应一列的结果表。

修正后的计算列DAX

你的原代码未限定当前行的ID范围,导致返回全表Task A的最早日期。以下是按ID分组的正确计算列代码:

A_最早日期 = 
CALCULATE(
    MIN('Table'[update (dd/mm/yyyy)]),
    FILTER(
        'Table',
        'Table'[ID] = EARLIER('Table'[ID]) && 'Table'[Task] = "A"
    )
)

代码说明

  • EARLIER('Table'[ID]):引用当前行的ID值,确保筛选范围仅限定在当前ID内
  • FILTER:同时筛选出当前ID下Task为'A'的所有行
  • MIN:提取这些行中的最早Update日期

添加该计算列后,原表的每一行都会显示对应ID的Task A最早日期。

生成每个ID一行的汇总表(最终目标)

如果需要直接生成每个ID仅一行、包含各Task最早日期的结果表,可以使用SUMMARIZE函数创建新表:

ID任务汇总表 = 
SUMMARIZE(
    'Table',
    'Table'[ID],
    "A_最早日期", CALCULATE(MIN('Table'[update (dd/mm/yyyy)]), 'Table'[Task] = "A"),
    "B_最早日期", CALCULATE(MIN('Table'[update (dd/mm/yyyy)]), 'Table'[Task] = "B")
)

效果说明

该表会自动按ID分组,每行对应一个ID,同时生成A_最早日期、B_最早日期等列,直接满足你"每个Task生成对应列且每个ID仅保留一行"的需求。

原代码问题分析

你提供的参考代码中,FILTER('Table','Table'[Task]="A")仅筛选了全表中Task为'A'的行,没有限定ID,因此MinUpdate是全表所有Task A的最早日期,而非当前ID下的最小值。后续的IF判断只会在当前行Update等于全局最小值时返回日期,其余行显示空值,无法实现按ID分组的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:22:27