You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qlikview加载数据时如何实现列数据转换为行数据

QlikView加载Excel宽表转Person-Item长表实现方法

方法1:使用CrossTable内置函数(推荐)

CrossTable是QlikView专门用于宽表转长表的内置函数,代码最简洁,实现效率最高,操作步骤如下:

  • 打开QlikView脚本编辑器(快捷键Ctrl+E)
  • 配置Excel数据源连接后,修改LOAD语句为如下结构:
// CrossTable语法:CrossTable(属性列名, 值列名, 保留的维度列数量)
FinalTable:
LOAD
    Person,
    Item
FROM [你的Excel文件全路径.xlsx]
(ooxml, embedded labels, table是你的工作表名)
CrossTable(ItemType, Item, 1);

// 不需要保留原字段类型的话可以直接删除该字段
DROP FIELD ItemType;

说明:第三个参数填1代表保留Person这1列不动,剩下的Food、Drink、Snack三列会自动转为行,原来的1行数据会生成3行对应Item值。

方法2:手动拼接多LOAD(适合自定义场景)

如果需要对不同类型的Item做单独过滤或计算,可以用Concatenate拼接三次加载结果,逻辑更直观:

// 加载食品类数据
FinalTable:
LOAD
    Person,
    Food as Item
FROM [你的Excel文件全路径.xlsx]
(ooxml, embedded labels, table是你的工作表名)
WHERE Len(Trim(Food)) > 0; // 过滤空值

// 拼接饮品类数据
Concatenate(FinalTable)
LOAD
    Person,
    Drink as Item
FROM [你的Excel文件全路径.xlsx]
(ooxml, embedded labels, table是你的工作表名)
WHERE Len(Trim(Drink)) > 0;

// 拼接零食类数据
Concatenate(FinalTable)
LOAD
    Person,
    Snack as Item
FROM [你的Excel文件全路径.xlsx]
(ooxml, embedded labels, table是你的工作表名)
WHERE Len(Trim(Snack)) > 0;

小提示:两种方法都可以加空值过滤逻辑,避免某类Item为空时生成无效行。

内容的提问来源于stack exchange,提问作者JonJon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:48:04