如何在Power BI中先按Site求日平均再按Date汇总月度值?
问题描述
我拥有标准的日期维度表(包含Date、Month、Year列)和站点表,同时还有如下事实表:
| Date | Site | Pit | Value |
|---|---|---|---|
| 01-01-2024 | SITE-1 | PIT-A | 12 |
| 01-01-2024 | SITE-1 | PIT-B | 10 |
| 01-01-2024 | SITE-1 | PIT-C | 02 |
| 01-02-2024 | SITE-1 | PIT-A | 09 |
| 01-02-2024 | SITE-1 | PIT-B | 15 |
| 01-02-2024 | SITE-1 | PIT-C | 30 |
| 02-01-2024 | SITE-1 | PIT-A | 04 |
| 02-01-2024 | SITE-1 | PIT-B | 03 |
| 02-01-2024 | SITE-1 | PIT-C | 08 |
希望在Power BI页面中创建如下表格:
| Month | Site | MeasureValue |
|---|---|---|
| JANUARY | SITE-1 | 26 |
| FEBRUARY | SITE-1 | 5 |
计算逻辑:
- 按日期计算当日所有Pit的平均值,例如2024年1月1日的平均值为
AVERAGE(12,10,2)=8,1月2日为18; - 将每日平均值汇总求和得到月度值,因此1月合计为
SUM(8,18)=26; - 2月及后续月份按相同逻辑计算。
需要创建符合该场景的Power BI度量值(MEASURE)。
解决方案
你可以通过嵌套计算的方式编写DAX度量值,先计算每日的Pit平均值,再对这些平均值求和:
MeasureValue = SUMX( VALUES('Date'[Date]), CALCULATE(AVERAGE('事实表'[Value])) )
逻辑说明
VALUES('Date'[Date]):获取当前筛选上下文(比如选中的月份、站点)对应的所有不重复日期;CALCULATE(AVERAGE('事实表'[Value])):针对每个日期,计算该日期下所有Pit的Value平均值;SUMX:遍历每个日期的平均值,并将这些值求和,得到最终的月度汇总值。
注意事项
- 确保日期维度表和事实表之间已建立正确的关系(通过
Date字段关联); - 替换代码中的
'Date'、'事实表'为你实际使用的表名; - 若需要按站点分组,只要在视觉对象中加入站点字段,度量值会自动适配当前站点的上下文计算。
内容的提问来源于stack exchange,提问作者Nur Holis
相关产品推荐
相关产品推荐

