For each..next

for each..next 제어 문은 쉼표로 구분된 목록의 각 값을 대상으로 하나 또는 여러 문을 실행하는 스크립트 반복 구조입니다. 목록의 각 값에 대해 fornext로 묶인 루프 내의 문이 실행됩니다.

Syntax:  

특수한 구문을 사용하면 현재 디렉터리 내의 파일과 디렉터리 이름으로 목록을 생성할 수 있습니다.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Arguments:  

인수 설명
var 각 루프 실행을 위해 목록에서 새 값을 가져오는 스크립트 변수 이름입니다. varnext 다음에 지정된 경우, 이 이름은 해당하는 for each 다음에 오는 이름과 동일해야 합니다.

var 변수의 값은 루프 내의 문에서 변경할 수 있지만 이것은 좋은 프로그래밍 방법이 아닙니다.

루프 내에서 exit for 절이 나올 경우 스크립트 실행이 루프의 끝을 나타내는 next 절 다음 첫 번째 문으로 전환됩니다. 선택적으로 when 또는 unless 접미사를 사용하여 exit for 절을 조건부로 만들 수 있습니다.

참고: for each..next 문은 제어 문이므로 세미콜론이나 줄 끝(EOL)으로 끝나며 여기에 포함될 수 있는 세 절(for each,exit fornext)은 줄 경계를 넘지 않아야 합니다.

Syntax:  

list := item { , item }

item := constant | (expression) | filelist mask | dirlist mask | fieldvaluelist mask

 

인수 설명
constant 임의의 숫자 또는 문자열입니다. 스크립트에 직접 포함되는 문자열은 작은따옴표로 묶어야 합니다. 작은따옴표가 없는 문자열은 변수로 해석되며 변수의 값이 사용됩니다. 숫자는 작은따옴표로 묶을 필요가 없습니다.
expression 임의의 표현식입니다.
mask

표준 와일드카드 문자 *?를 비롯한 유효한 파일 이름 문자를 포함할 수 있는 파일 또는 디렉터리 이름 마스크입니다.

절대 파일 경로 또는 lib:// 경로를 사용할 수 있습니다.

condition True 또는 False로 평가되는 논리 표현식입니다.
statements 하나 이상의 Qlik Sense 스크립트 문의 그룹입니다.
filelist mask

이 구문을 사용하면 현재 디렉터리에서 파일 이름 마스크와 일치하는 모든 파일의 쉼표로 구분된 목록이 생성됩니다.

참고: 이 인수는 표준 모드의 라이브러리 연결만 지원합니다. 참조파일 시스템 액세스 제한
dirlist mask

이 구문을 사용하면 현재 폴더에서 폴더 이름 마스크와 일치하는 모든 폴더의 쉼표로 구분된 목록이 생성됩니다.

참고: 이 인수는 표준 모드의 라이브러리 연결만 지원합니다. 참조파일 시스템 액세스 제한
fieldvaluelist mask 이 구문은 Qlik Sense로 이미 로드된 필드 값을 통해 반복합니다.

Example 1: 파일 목록 로드

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Example 2: 디스크의 파일 목록 만들기

이 예에서는 폴더에 있는 모든 Qlik Sense 관련 파일 목록을 로드합니다.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('lib://MyData')

Example 3: 필드 값 a를 통해 반복

이 예에서는 로드된 FIELD 값의 목록을 통해 반복하고 새 필드인 NEWFIELD를 생성합니다. FIELD의 각 값에 대해서는 두 NEWFIELD 레코드가 생성됩니다.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

결과 테이블은 다음과 같습니다.

NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2