Exists - 스크립트 함수
Exists() 는 특정 필드 값이 로드 스크립트의 필드로 이미 로드되었는지 결정합니다. 이 함수는 LOAD 문 또는 IF 함수의 where 절에서 사용할 수 있도록 TRUE 또는 FALSE를 반환합니다.
구문:
Exists(field_name [, expr] )
반환 데이터 유형: 부울
인수:
인수 | 설명 |
---|---|
field_name |
값을 검색하려는 필드의 이름입니다. 따옴표 없이 명시적인 필드 이름을 사용할 수 있습니다. 스크립트에 의해 필드가 이미 로드되어 있어야 합니다. 즉, 스크립트에서 더 아래 절에 로드된 필드를 참조할 수 없습니다. |
expr |
존재하는지 확인할 값입니다. 현재 LOAD 문에서 하나 이상의 필드를 참조하는 명시적 값 또는 표현식을 사용할 수 있습니다. 정보 메모현재 LOAD 문에 포함되지 않은 필드는 참조할 수 없습니다.
이 인수는 선택 사항입니다. 이 인수를 생략하면, 함수는 현재 레코드에서 field_name의 값이 이미 존재하는지 확인합니다. |
예 1:
Exists (Employee)
현재 레코드의 Employee 필드 값이 이전에 읽은 레코드 중 해당 필드가 포함된 레코드에 이미 존재할 경우 -1(True)을 반환합니다.
예 2:
Exists(Employee, 'Bill')
필드 값 'Bill'이 Employee 필드의 현재 내용에서 발견되는 경우 -1(True)을 반환합니다.
Exists (Employee, Employee) 및 Exists (Employee) 문은 동등합니다.
예 3:
데이터 모델에 Citizens 테이블이 생성되며, Employee 및 Address 차원을 사용하여 테이블 차트로 표시할 수 있습니다.
where 절: where Exists (Employee)은 Citizens 테이블의 이름 중 Employees에도 있는 이름만 새 테이블로 로드합니다. Drop 문은 혼동을 피하기 위해 임시 테이블 Employees을 제거합니다.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
예 4:
where 절에 not: where not Exists (Employee)을 포함합니다.
이는 Employees에 없는 Citizens 테이블의 이름만 새 테이블에 로드됨을 의미합니다.
Citizens 테이블에는 Lucy에 대한 두 개의 값이 있지만 결과 테이블에는 하나만 포함됩니다. 값이 Lucy인 첫 번째 행을 로드하면 Employee 필드에 포함됩니다. 따라서 두 번째 줄을 확인하면 값이 이미 존재합니다.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
예 5:
이 예는 모든 값을 로드하는 방법을 보여 줍니다.
Lucy에 대한 모든 값을 가져올 수 있도록 다음 두 가지가 변경되었습니다.
-
Employee의 이름이 Name으로 변경된 Employees 테이블에 선행 로드가 삽입되었습니다.
Load Employee As Name;
-
Citizens의 Where 조건이 다음으로 변경되었습니다.
not Exists (Name, Employee).
이렇게 하면 Name 및 Employee에 대한 필드가 만들어집니다. Lucy가 있는 두 번째 행을 선택하면 Name에 여전히 존재하지 않습니다.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
예제에서 사용된 데이터: