QlikView加载xlsx数据时如何将列格式月度数据转换为行数据
QlikView加载xlsx时列存月度数据转行结构方案
QlikView原生提供CROSSTABLE加载前缀,专门用于处理这类「固定维度列+多列分类指标」的宽表转长表需求,不需要额外写复杂逻辑即可完成月度列到行结构的转换。
你的源表前4列为固定人员属性维度,后续列名为Excel日期序列号(对应不同月份),列值为当月指标值,适配方案如下:
实现逻辑
- 加载时指定不参与转置的固定维度列数量(本次为前4列)
- 自动将后续所有月度列的列名存入自定义的月度标识字段,列值存入自定义的月度指标字段
- 可选追加日期转换逻辑,把数字格式的日期序列号转为标准日期格式,方便后续按年、月维度分析
完整加载脚本
// 跨表转置加载:参数依次为 月度列名字段名、月度值字段名、固定维度列数量 RawTransData: CROSSTABLE (MonthSerial, MonthlyValue, 4) LOAD [First Name], [Last Name], [Home Owner], [Mortgage], [44562], [44593], [44621], [44652] FROM [你的本地文件路径\数据源.xlsx] (ooxml, embedded labels, table is [对应工作表名称]); // 可选步骤:转换日期格式,生成衍生分析字段 FinalUserData: LOAD *, Date(MonthSerial) as MonthDate, // 序列号转标准日期 Year(Date(MonthSerial)) as DataYear, Month(Date(MonthSerial)) as DataMonth RESIDENT RawTransData; // 删除临时中间表 DROP TABLE RawTransData;
小提示:如果源表后续会新增月度列,不需要手动枚举列名,把LOAD语句块内的列名列表替换为
*即可,脚本会自动识别所有字段,固定保留前4个维度列,其余新增月度列会自动完成转置。
转置后效果
原表每行1条人员数据、对应4个月份值的结构,会转为每行1条「人员+单月」的明细结构,比如原表第一行人员A的4条月度数据,会拆分为4行独立记录,人员属性字段保持不变,每行对应1个月份的标识和指标值。
内容的提问来源于stack exchange,提问作者JonJon
相关产品推荐
相关产品推荐

