Power BI住宅按小时耗电量数据模型构建与仪表盘制作咨询
Power BI住宅耗电量数据建模与仪表盘实现方案
一、核心数据建模思路:宽表转窄表+星型模型
你当前的数据源是宽表结构(每住宅一列耗电量),这种结构不适合Power BI的筛选与聚合,最优方案是转成窄表(长表),再搭配住宅维度表构建星型模型——完全不需要为每个住宅创建子表,子表会导致模型冗余、筛选逻辑混乱。
1. 宽表转窄表(Power Query操作)
原始表结构示例:
| 日期时间 | 住宅A Power Consumption | 住宅B Power Consumption |
|---|---|---|
| 2024-01-01 00:00:00 | 1.2 | 1.5 |
| 2024-01-01 01:00:00 | 0.9 | 1.3 |
操作步骤:
- 导入数据后进入Power Query编辑器
- 选中「日期时间」列,右键选择Unpivot Other Columns,自动生成
Attribute(原住宅列名)和Value(耗电量)两列 - 添加自定义列「住宅名称」,公式:
Text.BeforeDelimiter([Attribute], " Power Consumption")——自动去掉后缀提取纯住宅名 - 删除
Attribute列,将Value列重命名为「耗电量」 - 关闭并应用,得到标准事实表:
| 日期时间 | 住宅名称 | 耗电量 |
|---|---|---|
| 2024-01-01 00:00:00 | 住宅A | 1.2 |
| 2024-01-01 01:00:00 | 住宅A | 0.9 |
| 2024-01-01 00:00:00 | 住宅B | 1.5 |
2. 构建住宅维度表
创建独立的住宅维度表,包含住宅名称、经度、纬度(手动输入或导入外部坐标文件均可),示例:
| 住宅名称 | 经度 | 纬度 |
|---|---|---|
| 住宅A | 116.40 | 39.90 |
| 住宅B | 121.47 | 31.23 |
3. 建立模型关系
在Power BI模型视图中,将住宅维度表的「住宅名称」字段拖动到事实表的「住宅名称」字段上,建立一对多关系(维度表是「一」,事实表是「多」)——这是星型模型的核心,确保筛选能在表间传递。
二、仪表盘搭建步骤
1. 日期切片器
- 插入「切片器」控件,选择事实表的「日期时间」字段
- 在切片器格式设置中,选择「范围」筛选模式,支持按时间段筛选
2. 地图筛选器
- 插入「地图」控件,选择住宅维度表的「纬度」「经度」字段
- 将住宅维度表的「住宅名称」拖到「图例」或「数据点」,地图会自动显示每个住宅的位置
- 点击地图上的住宅点,整个仪表盘的可视化(如耗电量折线图、总耗电量卡片)会自动筛选该住宅的数据
3. 核心可视化示例
- 折线图:X轴选「日期时间」,Y轴选「耗电量」,图例可选「住宅名称」(地图筛选后自动聚焦选中住宅)
- 卡片控件:添加「耗电量」的总和/平均值,展示选中住宅在筛选时间段内的统计数据
三、额外优化建议
- 构建日期维度表:用DAX公式
DateTable = CALENDAR(MIN('耗电量事实表'[日期时间]), MAX('耗电量事实表'[日期时间]))生成,再添加年、季度、月等字段,方便更灵活的日期筛选 - 验证数据一致性:确保住宅维度表和事实表的住宅名称完全匹配(无空格、拼写差异),避免关系失效
- 数据类型检查:将「耗电量」设为数值型,经纬度设为小数型,确保可视化正常显示
内容的提问来源于stack exchange,提问作者Ignpl
相关产品推荐
相关产品推荐

