ドキュメントに例のスクリプトを追加して実行します。その後、結果列に含まれている項目をドキュメントのシートに追加して結果を表示します。
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)は、テーブル 102 の 3 番目の値を返します。
ただし、3 番目の引数table_noにテーブルを指定しない場合は、関数は現在のテーブル (この場合は、内部テーブル) を参照します。 Peek(EmployeeCode,-2)の結果は、次の複数の値になります。
|
EmployeeCode 101 102 103 104 105 106
|
EmpCode - - 101 102 103 104
|
|
|
FirstEmployee:
Load EmployeeCode, Peek(EmployeeCode,-2,'EmployeeDates') As EmpCode
Resident EmployeeDates;
|
引数 table_noに 'EmployeeDates' を指定すると、この関数は EmployeeDates テーブルの EmployeeCode の最後から 2 番目の値である 105 を返します。 |
The Peek() function can be used to reference data that is not yet loaded.
ドキュメントに例のスクリプトを追加して実行します。その後、結果列に含まれている項目をドキュメントのシートに追加して結果を表示します。
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 の現在の行の 1 行前の ID 項目を参照します。 Peek(List) は、T2 の現在の行の 1 行前の List 項目を参照しており、評価対象の数式として構築されています。
ステートメントは次のように評価されます。 ID の現在の値が ID の 1 行前の値と同じ場合、Peek(List) の値をValue の現在の値と連結して書き込みます。それ以外の場合は、Valueの現在の値のみ書き込みます。
Peek(List)に連結された結果がすでに含まれている場合、Peek(List) の新しい結果がその結果に連結されます。
注: Order by節に注意してください。表のソート方法 (IDによる昇順) を指定しています。この指定がない場合、Peek()は、内部テーブルのデータ順序を使用するので、予測不可能な結果につながります。
|
|