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)' 的新結果將串連至其中。