如何在PowerBI中按月份保留最新日期记录以汇总表格
输入表格
| Date | id |
|---|---|
| 10/17/2022 | 4343 |
| 10/18/2022 | 3169 |
| 11/23/2022 | 4681 |
| 12/23/2022 | 6542 |
| 12/16/2022 | 534324 |
| 1/30/2023 | 4343 |
| 1/18/2023 | 35325 |
预期输出
| Date | id |
|---|---|
| 10/18/2022 | 3169 |
| 11/23/2022 | 4681 |
| 12/23/2022 | 6542 |
| 1/30/2023 | 4343 |
方法1:Power Query编辑器实现
- 选中输入表,点击转换数据进入Power Query编辑器
- 添加年月分组辅助列:
- 点击添加列→自定义列,输入公式:
将列命名为Date.StartOfMonth([Date])MonthGroup
- 点击添加列→自定义列,输入公式:
- 按
MonthGroup分组,保留每组所有行:- 选中
MonthGroup列,点击转换→分组依据,设置:- 分组依据:
MonthGroup - 新列名:
GroupedRows - 操作:所有行
- 分组依据:
- 选中
- 提取每组中日期最新的行:
- 再次添加自定义列,公式:
列名设为Table.SelectRows([GroupedRows], each [Date] = List.Max([GroupedRows][Date]))LatestRow
- 再次添加自定义列,公式:
- 整理表格:
- 点击
LatestRow列的展开图标,只勾选Date和id列 - 删除
MonthGroup和GroupedRows列,关闭并上载,将表命名为Summary
- 点击
方法2:DAX计算表实现
在数据选项卡点击新建表,输入以下DAX代码(替换输入表为你的实际表名):
Summary = VAR MonthLatestDates = ADDCOLUMNS( SUMMARIZE('输入表', YEAR('输入表'[Date]), MONTH('输入表'[Date])), "@MaxDate", CALCULATE(MAX('输入表'[Date])) ) RETURN SELECTCOLUMNS( NATURALINNERJOIN('输入表', MonthLatestDates), "Date", '输入表'[Date], "id", '输入表'[id] )
逻辑说明:
- 先按年、月分组计算每个月的最大日期
- 通过内连接匹配原表中对应最大日期的行
- 最终提取需要的
Date和id列
内容的提问来源于stack exchange,提问作者n179911a
相关产品推荐
相关产品推荐

