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
相关产品推荐
相关产品推荐

