Peek - 脚本函数
Peek() 用于在表格中查找已经加载或内部内存中存在的行的字段值。可以将行号指定为表格。
语法:
Peek(field_name[, row_no[, table_name ] ] )
返回数据类型: 双
参数:
参数 | 说明 |
---|---|
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) 返回表格 EmployeeDates 的 EmployeeCode 中的第一个值。
替代参数 row_no 返回表格中其他行的值,如下所示:
Peek('EmployeeCode',2) 用于返回表格中的第三个值:103.
但是,请注意,如果没有将表格指定为第三个参数 table_no,则此函数引用当前表格(在此例中,为内部表格)。 Peek(EmployeeCode,-2) 的结果是一个倍数值:
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;
在文档的工作表中创建维度为 ID、List 和 Value 的表格。
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)' 的新结果串联至其当前值。