# Peek - 指令碼函數

Peek() 會針對已經載入的或存在於內部記憶體中的列，找出表格中的欄位值。列數跟表格數一樣可以指定。

語法：

Peek(field\_name[, row\_no[, table\_name ] ] )

傳回的資料類型： 雙值

引數：

Peek 引數

| 引數 | 描述 |
| --- | --- |
| field\_name | 傳回值需要的欄位名稱。輸入值必須指定為字串 (例如引號中的常值)。 |
| row\_no | 指定所需欄位的表格中的列。可以是運算式，但是必須解析為整數。0 代表第一筆記錄，1 代表第二筆記錄，依此類推。負數表示從表格結尾算起的順序。-1 代表最後一筆記錄讀取。<br><br>如未指定 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) ` 的結果是多個值：

範例 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;` ` `

將 ID、List 和 Value 作為維度，在文件的工作表中建立一個表格。

範例 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() 函數將使用內部表格具有的任意順序，這可能產生非預期的結果。

## 瞭解更多資訊

* [表格標籤](https://help.qlik.com/zh-TW/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/table-labels.htm)
* [Previous - 指令碼函數](https://help.qlik.com/zh-TW/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/InterRecordFunctions/Previous.htm)