メイン コンテンツをスキップする 補完的コンテンツへスキップ

Peek - スクリプト関数

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

構文:  

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

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

引数:  

Peek 引数
引数 説明
field_name 戻り値が必要な項目名。入力値は文字列として指定する必要があります (たとえば、引用符で囲まれた文字列)。
row_no

テーブルの行。必要な項目がある行を指定します。数式の場合を指定することもできますが、結果が整数になる必要があります。0 は最初のレコード、1 は 2 番目のレコードを示し、以下同様に表されます。負の数は、テーブルの最後から見た順序を表します。-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;

 

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;

 

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 の現在の行の 1 行前の ID 項目を参照します。
Peek('List') は、テーブル T2 の現在の行の 1 行前の List 項目を参照しており、評価対象の数式として構築されています。

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

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

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

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。

分析の近代化プログラムに参加する

Remove banner from view

分析最新化プログラムにより、重要な QlikView app を危険にさらすことなく最新化しましょう。 ここをクリック して詳細を表示するか、次にお問い合わせください。 ampquestions@qlik.com