如何在Power BI中用DAX实现净负载计算?分步与合并方法
Power BI中用DAX实现净负荷(net_load)计算的分步与单公式方案
一、分步创建DAX度量值
分步实现的优势是每个度量职责单一,便于调试和后续复用:
1. 计算每小时负荷(hourly_load)
筛选Flow_type为"inflow"的记录,按当前上下文(如Time_str的小时维度)聚合Flow值:
hourly_load = CALCULATE( SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "inflow" )
2. 计算光伏发电量(solar_pv)
筛选Flow_type为"unit_aggregate"且Group为"Solar_PV"的记录,聚合Flow值:
solar_pv = CALCULATE( SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "unit_aggregate", group_flows_t[Group] = "Solar_PV" )
3. 计算风力发电量(wind)
筛选Flow_type为"unit_aggregate"且Group为"Wind"的记录,聚合Flow值:
wind = CALCULATE( SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "unit_aggregate", group_flows_t[Group] = "Wind" )
4. 计算净负荷(net_load)
直接用前三个度量做差值计算:
net_load = [hourly_load] - [wind] - [solar_pv]
二、单个DAX公式直接计算net_load
可以把所有筛选逻辑整合到一个度量中,省去分步创建的步骤,写法更紧凑:
net_load = -- 计算每小时负荷 CALCULATE(SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "inflow") -- 减去风力发电量 - CALCULATE(SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "unit_aggregate", group_flows_t[Group] = "Wind") -- 减去光伏发电量 - CALCULATE(SUM(group_flows_t[Flow]), group_flows_t[Flow_type] = "unit_aggregate", group_flows_t[Group] = "Solar_PV")
注意事项
- 这里使用
SUM是因为Flow列通常是数值型聚合值,若每行对应单小时的唯一值,也可替换为MAX或SELECTEDVALUE,但SUM适配性更强,能避免上下文多值报错。 - 所有度量会自动响应报表中的筛选上下文(比如切片器、行/列维度),确保计算结果和当前视图匹配。
内容的提问来源于stack exchange,提问作者hbstha123
相关产品推荐
相关产品推荐

