从之前加载的表格中加载数据
可以通过两种方法从已经加载的表格中加载和转换数据。
- Resident LOAD — 在后续 LOAD 语句中使用 Resident 谓词加载新表格。
- 前置 Load — 从前置 LOAD 或 SELECT 语句加载,而无需指定源。
Resident 或前置 LOAD?
在大多数情况下,可以通过使用任一种方法获得相同的结果。前置 LOAD 通常是更快的选项,但是在某些情况下,您需要使用 Resident LOAD:
- 在处理 LOAD 语句之前,如果您要使用 Order_by 子句对记录进行排序。
- 如果您要使用以下任何前缀,在这种情况下,前面的 LOAD 不受支持:
- Crosstable
- Join
- Intervalmatch
Resident LOAD
您可以在 LOAD 语句中使用 Resident 断言,以便从之前加载的表格加载数据。当您想要在使用 SELECT 语句(没有选项使用 Qlik Sense 函数)加载的数据上执行计算时(例如日期或数值处理),这很有用。
示例:
在本例中,数据解释在 Resident 加载中执行,因为在初始 Crosstable LOAD 中无法完成。
前置 Load
前置 Load 可让您在一次遍历中加载表格,但仍然需要定义多个连续的转换。总的来说,它是一个 LOAD 语句,可从下面的 LOAD 或 SELECT 语句加载,而无需指定通常使用的源限定符,如 From 或 Resident。您可以按此方法叠加任意数量的 LOAD 语句。首先将会对底部的语句进行求值,然后再对上面的语句进行求值,以此类推,直至求值到顶部的语句。
可以使用 Resident 实现相同的结果,但在大多数情况下前置 LOAD 运行速度更快。
前置 Load 的另一个好处是可将计算保存在一个地方,并在上面部署的 LOAD 语句中进行重复使用。
示例 1: 可通过 SELECT 语句加载转换数据。
如果使用 SELECT 语句从数据库加载数据,则不能使用 Qlik Sense 函数解释 SELECT 语句中的数据。解决方法是添加 LOAD 语句,这样就可以针对上面的 SELECT 语句执行数据转换。
在本例中,我们在 LOAD 语句中使用 Qlik Sense 函数 Date# 解释存储作为字符串的日期,并使用上一个 SELECT 语句作为源。
示例 2: 可通过重复使用计算简化脚本
在本例中,我们在脚本中多次使用了计算:
通过在第一次遍历中引入计算,我们在前置 LOAD 的 Age 函数中进行了重复使用:
前置 Load 的限制
- 以下前缀不能与前置 LOAD 结合使用:Join、Crosstable 和 Intervalmatch。
- 如果您使用 distinct 加载唯一记录,需要将 distinct 置于第一加载语句,因为 distinct 仅影响目标表格。