Peek - 스크립트 함수
Peek()는 이미 로드되었거나 내부 메모리에 존재하는 행에 대한 테이블의 필드 값을 찾습니다. 테이블처럼 행 번호를 지정할 수 있습니다.
구문:
Peek(field_name[, row_no[, table_name ] ] )
반환 데이터 유형: dual
인수:
인수 | 설명 |
---|---|
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)'의 새로운 결과가 연결됩니다.