PowerBI DAX需求:按SortOrder分组计算各ItemID最新值的平均值
DAX解决方案实现PowerBI需求
核心逻辑说明
要实现按SortOrder分组,保留每个ItemID的最新日期记录,再计算平均值和去重ItemID数量,我们可以通过三个DAX度量分步完成:
1. 获取每个ItemID的最新日期
Latest Date per Item = CALCULATE( MAX('Table'[Date]), ALLEXCEPT('Table', 'Table'[ItemID]) )
这个度量会忽略除ItemID外的其他筛选条件,计算每个ItemID对应的最大(最新)日期。
2. 计算每组的Value平均值
Average of Value (Latest) = VAR LatestRecords = FILTER( 'Table', 'Table'[Date] = [Latest Date per Item] ) RETURN AVERAGEX( GROUPBY( LatestRecords, 'Table'[SortOrder], 'Table'[ItemID], "@LatestValue", MAXX(CURRENTGROUP(), 'Table'[Value]) ), [@LatestValue] )
- 先通过
FILTER筛选出所有属于最新日期的记录 - 再按
SortOrder和ItemID分组,提取每个组对应的Value - 最后用
AVERAGEX对分组后的Value计算平均值
3. 统计每组的去重ItemID数量
Number Of Items = VAR LatestRecords = FILTER( 'Table', 'Table'[Date] = [Latest Date per Item] ) RETURN COUNTROWS( DISTINCT( SELECTCOLUMNS( LatestRecords, "SortOrder", 'Table'[SortOrder], "ItemID", 'Table'[ItemID] ) ) )
- 基于最新记录的筛选结果,提取
SortOrder和ItemID的唯一组合 - 用
COUNTROWS统计这些唯一组合的数量,得到每组的去重ItemID数
验证结果
将SortOrder字段与上述两个度量放入表格/矩阵可视化中,即可得到目标结果:
| SortOrder | Average of Value (Latest) | Number Of Items |
|---|---|---|
| 1 | 1.77 | 1 |
| 2 | 12.135 | 2 |
| 3 | 19.015 | 2 |
| 4 | 30.71 | 3 |
| 5 | 1.77 | 1 |
内容的提问来源于stack exchange,提问作者Tamara
相关产品推荐
相关产品推荐

