文章目录
1 概述
2 示例
2.1 自动串联
2.1.1 所有列名均相同时 - 组合为一张表
- 如果两个或多个已加载表格的 字段名 和 字段数量 完全相同,Qlik Sense 会自动串联不同语句的内容到 一个表格中
“数据加载编辑器:”
Table1:
Load * Inline [
Sno, Name, Sex
1, 张三, 1
2, 李四, 2
3, 王五, 1
];
Table2:
Load * Inline [
Sno, Name, Sex
4, 张三, 1
5, 李四, 2
];
加载数据:
数据模型查看器:
2.1.2 部分列名相同时,自动连接
数据加载编辑器:
Table1:
Load * Inline [
Sno, Name, Sex
1, 张三, 1
2, 李四, 2
3, 王五, 1
];
Table2:
Load * Inline [
Sex, Sex_Desc
1, 男
2, 女
3, 未说明
];
加载数据:
数据模式查看器:
工作表:
2.2 强制串联 - Concatenate
- 即使两个或多个表格的字段名和字段数量并不完全相同,仍有可能强制 Qlik Sense 串联两个表格。
- 这可以使用脚本的 Concatenate 前缀来实现,即将一个表格串联至另一个命名表格或最新创建的表格。
数据加载编辑器:
Table1:
Load * Inline [
Sno, Name, Sex
1, 张三, 1
2, 李四, 2
3, 王五, 1
];
Table2:
Concatenate
Load * Inline [
Sex, Sex_desc
1, 男
2, 女
];
加载数据:
数据模型查看器:
2.3 防止串联 - NoConcatenate
- 如果两个或多个已加载表格的字段名和字段数量完全相同,Qlik Sense 会自动串联不同语句的内容到一个表格中。
- 可以使用 NoConcatenate 语句来防止此行为。
- 然后,使用相关 LOAD 或 SELECT 语句加载的表格不会与现有表格串联。
数据加载编辑器:
Table1:
LOAD
SNO,
SNAME
FROM [lib://测试 (cmicbiad_administrator)/测试.qvd]
(qvd);
Table2:
NoConcatenate
LOAD
SNO as SNO2,
SNAME as SNAME2
FROM [lib://测试 (cmicbiad_administrator)/测试.qvd]
(qvd);
???待存疑问 ???
感觉是别名起了作用, NoConcatenate 有和没有效果一样
因为:若将 Table2 的别名去掉,会生产 合成钥,表格还是会串联
数据模型查看器:Table1 和 Table2 之间没有联系
3 扩展
3.1 Qlik Sense 重复数据默认处理逻辑
- Qlik Sense 特性,若存在相同的数据行时
- 对于维度:仅保留一条
- 对于度量:累加
- 验证如下
数据加载编辑器:
工作表:
- “数据加载编辑器” 中有 5 条数据,其中 Sno=3 的数据重复 2 条
- “工作表” 中,存在如下默认处理逻辑
- 对于 维度(列的右上角是放大镜):自动去重,只展示 4 条数据
- 对于 度量:累加,如:1 + 1 = 2 条