# Peek - スクリプト関数

Peek() は、すでにロードされている行または内部メモリに存在する行に対してテーブルの項目値を算出します。行番号は、テーブルと同様に指定できます。

構文:

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

戻り値データ型： デュアル

引数：

Peek 引数

| 引数 | 説明 |
| --- | --- |
| field\_name | 戻り値が必要な項目名。入力値は文字列として指定する必要があります (たとえば、引用符で囲まれた文字列)。 |
| row\_no | テーブルの行。必要な項目がある行を指定します。数式の場合を指定することもできますが、結果が整数になる必要があります。0 は最初のレコード、1 は 2 番目のレコードを示し、以下同様に表されます。負の数は、テーブルの最後から見た順序を表します。-1 は、読み取られた最後のレコードを示します。<br><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;` ` `

`  Peek(EmployeeCode,0) ` が、EmployeeDates テーブルの EmployeeCode の最初の値を返すため、EmpCode = 101 になります。

引数 row\_no の値を置き換えた場合、以下のように、テーブルの他の行の値を返します。

`` Peek('EmployeeCode',2) は、テーブル の 3 番目の値を返します。103.

ただし、3 番目の引数 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 の最後から 2 番目の値である次の値を返します: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 の現在の行の 1 行前の ID 項目を参照します。  
`Peek('List')` は、テーブル T2 の現在の行の 1 行前の List 項目を参照しており、評価対象の数式として構築されています。

ステートメントは次のように評価されます。  
ID の現在の値が ID の 1 行前の値と同じ場合、Peek('List') の値を Value の現在の値と連結して書き込みます。それ以外の場合は、Value の現在の値のみ書き込みます。

Peek('List') に連結された結果がすでに含まれている場合、Peek('List)' の新しい結果がその結果に連結されます。

情報メモOrder by 節に注意してください。表のソート方法 (ID による昇順) を指定しています。この指定がない場合、Peek() は、内部テーブルのデータ順序を使用するので、予測不可能な結果につながります。

## 詳細を見る

* [テーブル ラベル](https://help.qlik.com/ja-JP/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/table-labels.htm)
* [Previous - スクリプト関数](https://help.qlik.com/ja-JP/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/Scripting/InterRecordFunctions/Previous.htm)