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

Peek - 脚本函数

Peek() 用于在表格中查找已经加载或内部内存中存在的行的字段值。可以将行号指定为表格。

语法:  

Peek(field_name[, row_no[, table_name ] ] )

返回数据类型:

参数:  

Peek 参数
参数 说明
field_name 需要返回值的字段的名称。输入值必须为字符串(例如引用的文字)。
row_no

表格中的行用于指定所需的字段。可以是表达式,但解算结果必须为整数。0 表示第一个记录,1 表示第二个记录,以此类推。负数表示从表格末端开始计算的顺序。-1 表示最后读取的记录。

如果未指定row,则假定为 -1。

table_name 表格标签不能以冒号结束。如果未指定table_name,则假定为当前表格。如果用于 LOAD 语句之外或指向另外一个表格,则必须包括 table_name

限制:  

在内部表格的首个记录中,此函数返回 NULL 值。

示例 1:  

将示例脚本添加到文档并运行。然后,至少要将结果列中列出的字段添加到文档中的表格才能查看结果。

EmployeeDates:

Load * Inline [

EmployeeCode|StartDate|EndDate

101|02/11/2010|23/06/2012

102|01/11/2011|30/11/2013

103|02/01/2012|

104|02/01/2012|31/03/2012

105|01/04/2012|31/01/2013

106|02/11/2013|

] (delimiter is '|');

 

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',0) As EmpCode

Resident EmployeeDates;

 

EmpCode = 101,因为 Peek(EmployeeCode,0) 返回表格 EmployeeDatesEmployeeCode 中的第一个值。

替代参数 row_no 返回表格中其他行的值,如下所示:

Peek('EmployeeCode',2) 用于返回表格中的第三个值:103.

但是,请注意,如果没有将表格指定为第三个参数 table_no,则此函数引用当前表格(在此例中,为内部表格)。 Peek(EmployeeCode,-2) 的结果是一个倍数值:

示例 1 结果
EmployeeCode EmpCode
101 -
102 -
103 101
104 102
105 103
106 104

示例 2:  

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode

Resident EmployeeDates;

 

通过将参数 table_no 指定为 'EmployeeDates',此函数返回表格 EmployeeDates 中的 EmployeeCode 的第二个至最后一个值:105.

示例 3:  

Peek() 函数可用于引用尚未加载的数据。

将示例脚本添加到文档并运行。然后,至少要将结果列中列出的字段添加到文档中的表格才能查看结果。

T1:

LOAD * inline [

ID, Value

1|3

1|4

1|6

3|7

3|8

2|1

2|11

5|2

5|78

5|13

] (delimiter is '|');

T2:

LOAD

*,

IF(ID=Peek('ID'), Peek('List')&','&Value,Value) AS List

RESIDENT T1

ORDER BY ID ASC;

DROP TABLE T1;

 

在文档的工作表中创建维度为 IDListValue 的表格。

示例 3 结果
ID List Value
1 6 6
1 6,3 3
1 6,3,4 4
2 11 11
2 11,10 10
2 11,10,1 1
3 8 8
3 8,7 7
5 13 13
5 13,2 2
5 13,2,78 78

IF() 语句是根据临时表格 T1 构建。
Peek('ID') 引用当前表格 T2 的上一行中的字段 ID
Peek('List') 引用当前表格 T2 的上一行中的字段 List,目前正在构建为要求值的表达式。

结算表达式的语句如下所示:
如果 ID 的当前值与 ID 的上一个值相同,则写入与 Value 的当前值串联的 Peek('List') 的值。否则,只写入 Value 的当前值。

如果 Peek('List') 已经包含串联结果,则会将 Peek('List)' 的新结果串联至其当前值。

信息注释注意,Order by 子句。该子句用于指定表格的排序方式(按 ID 进行升序排序)。如果没有使用此子句,Peek() 函数将使用内部表格拥有的任意排序方式,这可能会导致产生不可预测的结果。

本页面有帮助吗?

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

加入分析现代化计划

Remove banner from view

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