Qlikview 简明教程

QlikView - Keeps

QlikView 中的 keep 命令用于组合来自两个数据集的数据,同时保持两个数据集都在内存中可用。它与我们在前一章中介绍的连接非常相似,但有两处主要区别。第一个区别是,对于 keep 而言,两个数据集都在 QlikView 的内存中可用,而在连接中,load 语句只会产生一个数据集,您必须从中选择列。第二个区别是,在外连接中没有外连接概念,而我们有可用的外连接。

Input Data

让我们考虑以下两个 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

Inner Keep

我们使用脚本编辑器加载上述输入数据,可以通过按 Control+E 来调用脚本编辑器。选择选项 Table Files 并浏览输入文件。然后,我们编辑脚本中的命令,在表格之间创建内部 keep。

keep script

内部 keep 仅提取两个表格中都存在的那些行。在这种情况下,提取 both Product List and Product Sales 表格中可用的行。我们使用菜单 Layout → New Sheet Objects → Table Box 创建表格框。

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

keep product sales

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

keep product list

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

keep both tables

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

keep chart innerkeep

Left Keep

左连接类似于左连接,它保留左表格中的所有行,同时两个数据集都在 QlikView 的内存中可用。

Left keep Script

我们使用以下脚本创建带有左连接命令的结果数据集。

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);

Left keep Data

当我们将脚本更改为上述内容,并使用 Control+R 刷新报表中的数据时,我们将在工作表对象中获取以下数据。

keep chart leftkeep

Right Keep

右连接类似于左连接,它保留右表格中的所有行,同时两个数据集都在 QlikView 的内存中可用。

Right keep Script

我们使用以下脚本创建带有左连接命令的结果数据集。

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);

Right keep data

当我们将脚本更改为上述内容,并使用 Control+R 刷新报表中的数据时,我们将在工作表对象中获取以下数据。

keep chart rightkeep