기본 콘텐츠로 건너뛰기

Exists - 스크립트 함수

Exists() 는 특정 필드 값이 로드 스크립트의 필드로 이미 로드되었는지 결정합니다. 이 함수는 LOAD 문 또는 IF 함수의 where 절에서 사용할 수 있도록 TRUE 또는 FALSE를 반환합니다.

정보 메모Not Exists()를 사용하여 필드 값이 로드되지 않았는지 확인할 수도 있지만 where 절에서 Not Exists()를 사용하는 경우 주의해야 합니다. Exists() 함수는 이전에 로드된 테이블과 현재 테이블에 이전에 로드된 값을 모두 테스트합니다. 따라서 첫 번째 발생한 값만 로드됩니다. 두 번째 발생한 값은 이미 로드되어 있습니다. 자세한 내용은 예를 참조하십시오.

구문:  

Exists(field_name [, expr] )

반환 데이터 유형: 부울

인수:  

Exists 인수
인수 설명
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:  

Employees: LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where Exists (Employee); Drop Tables Employees;

 

데이터 모델에 Citizens 테이블이 생성되며, EmployeeAddress 차원을 사용하여 테이블 차트로 표시할 수 있습니다.

where 절: where Exists (Employee)Citizens 테이블의 이름 중 Employees에도 있는 이름만 새 테이블로 로드합니다. Drop 문은 혼동을 피하기 위해 임시 테이블 Employees을 제거합니다.

예 3 결과
Employee Address
Bill New York
John Miami
Steve Chicago

예 4:  

Employees: Load * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Employee);   Drop Tables Employees;

 

where 절에 not: where not Exists (Employee)을 포함합니다.

이는 Employees에 없는 Citizens 테이블의 이름만 새 테이블에 로드됨을 의미합니다.

Citizens 테이블에는 Lucy에 대한 두 개의 값이 있지만 결과 테이블에는 하나만 포함됩니다. 값이 Lucy인 첫 번째 행을 로드하면 Employee 필드에 포함됩니다. 따라서 두 번째 줄을 확인하면 값이 이미 존재합니다.

예 4 결과
Employee Address
Mary London
Lucy Madrid

예 5:  

이 예는 모든 값을 로드하는 방법을 보여 줍니다.

Employees: Load Employee As Name; LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|') where not Exists (Name, Employee);   Drop Tables Employees;

 

Lucy에 대한 모든 값을 가져올 수 있도록 다음 두 가지가 변경되었습니다.

  • Employee의 이름이 Name으로 변경된 Employees 테이블에 선행 로드가 삽입되었습니다.

    Load Employee As Name;

  • Citizens의 Where 조건이 다음으로 변경되었습니다.

    not Exists (Name, Employee).

이렇게 하면 NameEmployee에 대한 필드가 만들어집니다. Lucy가 있는 두 번째 행을 선택하면 Name에 여전히 존재하지 않습니다.

예 5 결과
Employee Address
Mary London
Lucy Madrid
Lucy Paris

예제에서 사용된 데이터:

LOAD * inline [ Employee|ID|Salary Bill|001|20000 John|002|30000 Steve|003|35000 ] (delimiter is '|');   Citizens: Load * inline [ Employee|Address Bill|New York Mary|London Steve|Chicago Lucy|Madrid Lucy|Paris John|Miami ] (delimiter is '|');

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!

분석 현대화 프로그램에 참여

Remove banner from view

분석 현대화 프로그램으로 귀중한 QlikView 앱을 손상시키지 않고 현대화하십시오. 여기를 클릭 하여 자세한 내용을 참조하거나 다음에 연결하십시오. ampquestions@qlik.com