跳到主要内容 跳到补充内容

将映射用作联接的替代

Join 前缀在 QlikView 中是一种可在数据模型中合并多个数据表格的强大方式。其中一个缺点是合并的表格可以变得很大,且可能会导致出现性能问题。在使用 Join 的替代的情况下,需要使用映射从另一个表格中查找单个值。这可以节省加载导致计算速度缓慢和可能会造成计算错误的不必要的数据,因为联接可以更改表格中的记录数。

映射表包含两列:比较字段(输入)和映射值字段(输出)。

在本例中,我们使用订单表格 (Orders),并且需要知道客户所在的国家/地区,此信息存储在客户表格中 (Customers)。

Orders data table
OrderID OrderDate ShipperID Freight CustomerID
12987 2007-12-01 1 27 3
12988 2007-12-01 1 65 4
12989 2007-12-02 2 32 2
12990 2007-12-03 1 76 3
Customers data table
CustomerID Name Country ...
1 DataSales Spain ...
2 BusinessCorp Italy ...
3 TechCo Germany ...
4 Mobecho France ...

要查找客户所在的国家/地区(Country),我们需要映射表格,如下所示:

Country mapping table
CustomerID Country
1 Spain
2 Italy
3 Germany
4 France

我们称为 MapCustomerIDtoCountry 的映射表已在脚本中定义,如下所示:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

接下来是在加载订单表格时使用 ApplyMap 函数应用映射:

Orders: S *, ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country From Orders ;

ApplyMap 函数的第三个参数用于定义当在映射表中找不到值时要返回的内容,在本例中为 Null()

最终生成的表格如下所示:

Result mapping table
OrderID OrderDate ShipperID Freight CustomerID Country
12987 2007-12-01 1 27 3 Germany
12988 2007-12-01 1 65 4 France
12989 2007-12-02 2 32 2 Italy
12990 2007-12-03 1 76 3 Germany

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!

加入分析现代化计划

Remove banner from view

使用分析现代化计划实现现代化,同时不损害您宝贵的 QlikView 应用程序。 单击此处 了解更多信息或联系: ampquestions@qlik.com