Power BI中如何将按行重复分组的表数据转换为列式结构化表
实现方法
核心思路:你的数据是固定每4行对应一条完整的时间维度指标数据,所以只要先给每一组4行分配相同的分组标识,再做透视就可以完成转换,以下是两种常用场景的实现方案:
Python Pandas 实现
你之前pivot失败是因为缺少分组标识,补充分组后即可正常透视,代码如下:
import pandas as pd # 假设你的原始数据已经读入为df,列名为Column1、Column2 # 生成每4行一组的分组ID df['group_id'] = df.index // 4 # 透视转换 df_pivot = df.pivot(index='group_id', columns='Column1', values='Column2').reset_index(drop=True) # 调整列名顺序和格式(可选) df_pivot = df_pivot[['Date', 'Mem usage', 'CPU usage', 'Disk usage']] df_pivot.columns = ['Date', 'Mem Usage', 'CPU Usage', 'Disk Usage'] print(df_pivot)
SQL 实现(MySQL 8.0+/PostgreSQL/SQL Server通用思路)
如果是在数据库中处理,可以先通过窗口函数生成分组ID,再用条件聚合转宽表:
WITH t AS ( SELECT Column1, Column2, -- 按行排序后每4行分一组 FLOOR((ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) -1)/4) AS group_id FROM 你的原始表名 ) SELECT MAX(CASE WHEN Column1 = 'Date' THEN Column2 END) AS Date, MAX(CASE WHEN Column1 = 'Mem usage' THEN Column2 END) AS `Mem Usage`, MAX(CASE WHEN Column1 = 'CPU usage' THEN Column2 END) AS `CPU Usage`, MAX(CASE WHEN Column1 = 'Disk usage' THEN Column2 END) AS `Disk Usage` FROM t GROUP BY group_id ORDER BY group_id;
内容的提问来源于stack exchange,提问作者user13320137
相关产品推荐
相关产品推荐

