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

将映射用作联接的替代

Join 前缀在 Qlik Sense 中是一种可在数据模型中合并多个数据表格的强大方式。

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

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

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

Orders数据表
OrderIDOrderDateShipperID货运CustomerID
129872007-12-011273
129882007-12-011654
129892007-12-022322
129902007-12-031763
Customers数据表
CustomerID名称国家/地区...
1DataSales西班牙...
2BusinessCorp意大利...
3TechCo德国...
4Mobecho法国...

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

映射表
CustomerID国家/地区
1西班牙
2意大利
3德国
4法国

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

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

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

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

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

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

结果表
OrderIDOrderDateShipperID货运CustomerID国家/地区
129872007-12-011273德国
129882007-12-011654法国
129892007-12-022322意大利
129902007-12-031763德国

了解详情

 

本页面有帮助吗?

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