📜  QlikView-保留

📅  最后修改于: 2020-11-29 07:35:30             🧑  作者: Mango


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

输入数据

让我们考虑以下两个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来调用。选择选项“表文件”,然后浏览输入文件。然后,我们在脚本中编辑命令以在表之间创建内部保持。

keep_script

内部保持仅获取两个表中都存在的那些行。在这种情况下,将提取“产品列表”和“产品销售”表中可用的行。我们使用菜单布局→新建图纸对象→表格框创建一个表格框。

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

keep_product_sales

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

keep_product_list

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

keep_both_tables

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

keep_chart_innerkeep

左守

左保留与左联接类似,它将左表中的所有行以及两个数据集保留在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