DAX Generate Series实现:Power BI能耗分析数据表转换需求
能耗数据扩展方案(Power BI / Python)
Power BI 实现步骤(Power Query)
针对你需要将MPAN按Days Applicable次数重复、生成连续日期序列EAC_EFD、同步重复每日用量的需求,用Power Query可以直接完成:
- 将已计算好的数据集导入Power BI,进入Power Query编辑器
- 选中原数据表,点击「添加列」→「自定义列」,粘贴以下M代码(注意替换占位符):
= Table.FromRecords( List.Unfold( (state) => if state[Index] >= Table.RowCount(Source) then null else let currentRow = Source{state[Index]}, dateSeq = List.Dates(currentRow[起始日期], currentRow[Days Applicable], #duration(1,0,0,0)), records = List.Transform(dateSeq, (d) => [ MPAN = currentRow[MPAN], EAC_EFD = d, 每日用量 = currentRow[0] ]) in {records, [Index = state[Index] + 1]} , [Index = 0] ) )
替换提示:把
Source换成你原表的实际步骤名,起始日期替换为数据中对应的起始日期列名,0替换为你的每日用量列名。
- 点击确定后,展开自定义列中的列表,即可得到目标扩展表。
Python 预处理方案
如果更习惯用Python做数据预处理,用pandas能快速生成目标表:
import pandas as pd # 读取原始计算数据集 df = pd.read_csv("your_calculated_data.csv") # 为每行生成对应长度的日期序列 df["EAC_EFD"] = df.apply( lambda row: pd.date_range(start=row["起始日期"], periods=row["Days Applicable"], freq="D"), axis=1 ) # 展开日期序列,同步保留MPAN和每日用量 expanded_df = df.explode("EAC_EFD", ignore_index=True) # 重命名列(如果需要) expanded_df = expanded_df.rename(columns={"0": "每日用量"}) # 保存结果,直接导入Power BI即可 expanded_df.to_csv("expanded_energy_data.csv", index=False)
替换提示:替换
your_calculated_data.csv为你的数据集路径,起始日期为实际列名。
内容的提问来源于stack exchange,提问作者Ethan McGhin
相关产品推荐
相关产品推荐

