QlikView - 保留


QlikView 中的 keep 命令用于合并两个数据集中的数据,使两个数据集在内存中可用。除了两个主要区别之外,它与我们在上一章中介绍的连接非常相似。第一个区别是 - 在保留的情况下;两个数据集都在 QlikView 内存中可用,而在连接中,加载语句仅生成一个数据集,您必须从中选择列。第二个区别是 - 没有外部保持的概念,因为我们在连接的情况下可以使用外部连接。

输入数据

让我们考虑以下两个 CSV 数据文件,它们用作进一步说明的输入。

Product List:
ProductID,ProductCategory
1,Outdoor Recreation
2,Clothing
3,Costumes & Accessories
4,Athletics
5,Personal Care
6,Hobbies & Creative Arts

Product Sales:
ProductID,ProductCategory,SaleAmount
4,Athletics,1212
5,Personal Care,5211
6,Hobbies & Creative Arts,1021
7,Display Board,2177
8,Game,1145
9,soap,1012
10,Beverages & Tobacco,2514

内堡

我们使用脚本编辑器加载上述输入数据,通过按Control+E调用该编辑器。选择“表文件”选项并浏览查找“输入文件”。然后我们编辑脚本中的命令以在桌子之间创建内部保留。

保留脚本

内部保留仅提取两个表中都存在的行。在这种情况下,将获取“产品列表”和“产品销售”表中可用的行。我们使用菜单Layout → New Sheet Objects → Table Box创建一个表格框。

首先,我们仅选择ProductSales表,它为我们提供了要显示的字段 - ProductID、ProductCategory 和 SaleAmount。

保持产品销售

接下来,我们选择ProductList数据集,它为我们提供了 ProductID 和 ProductCategory 字段。

保留产品列表

最后,我们选择“所有表”选项并从所有表中获取所有可用字段。

保留两个表

以下报告显示了上述步骤中的所有表格框。

keep_chart_innerkeep

左守卫

Left keep 与 left join 类似,后者保留左侧表中的所有行以及 QlikView 内存中可用的数据集。

左保留脚本

以下脚本用于使用 left keep 命令创建结果数据集。

productsales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

left keep(productsales)
productlists:
LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

左保留数据

当我们按照上面的方式更改脚本并使用Control+R刷新报表中的数据时,我们会在工作表对象中获得以下数据。

keep_chart_leftkeep

右守

右保留与左连接类似,它将右侧表中的所有行以及 QlikView 内存中可用的数据集保留在一起。

右保留脚本

以下脚本用于使用 left keep 命令创建结果数据集。

productsales:
LOAD ProductID, 
     ProductCategory, 
     SaleAmount
FROM
[C:\Qlikview\data\product_lists.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

right keep(productsales)
productlists:
LOAD ProductID, 
     ProductCategory
FROM
[C:\Qlikview\data\Productsales.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);

正确保留数据

当我们按照上面的方式更改脚本并使用Control+R刷新报表中的数据时,我们会在工作表对象中获得以下数据。

keep_chart_rightkeep