# Exists 스크립트 함수

Exists()는 특정 필드 값이 데이터 로드 스크립트의 필드에 이미 로드되었는지 여부를 판별합니다. 이 함수는 TRUE 또는 FALSE를 반환하므로 LOAD 문이나 IF 문의 where 절에서 사용할 수 있습니다.

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

구문:

Exists(field\_name [, expr])

반환 데이터 유형: 부울

인수:

인수

| 인수 | 설명 |
| --- | --- |
| field\_name | 값을 검색할 필드의 이름입니다. 따옴표 없이 명시적 필드 이름을 사용할 수 있습니다.<br><br>스크립트에서 필드가 이미 로드되어 있어야 합니다. 즉, 스크립트에서 나중 절에 로드된 필드를 참조할 수 없습니다. |
| expr | 존재하는지 확인하려는 값입니다. 현재 load 문에서 하나 또는 여러 개의 필드를 참조하는 명시적 값 또는 표현식을 사용할 수 있습니다.<br><br>정보 메모현재 load 문에 포함되지 않은 필드는 참조할 수 없습니다.<br><br>이 인수는 선택 사항입니다. 이 인수를 생략하면 함수는 현재 레코드에 field\_name 값이 이미 존재하는지 확인합니다. |

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/InterRecordFunctions/Exists.htm)

#### 예 및 결과:

예 1

`Exists 
 (Employee)`

현재 레코드의 Employee 필드 값이 이전에 읽은 레코드 중 해당 필드가 포함된 레코드에 이미 존재할 경우 -1(True)을 반환합니다.

`Exists (Employee, Employee)` 및 `Exists (Employee)` 문은 동등합니다.

예 2

`Exists(Employee, 
 'Bill')`

필드 값 'Bill'이 Employee 필드의 현재 내용에서 발견되는 경우 -1(True)을 반환합니다.

예 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;
```

이 결과는 Employee 및 Address 차원을 사용하여 테이블 시각화에서 사용할 수 있는 테이블에 표시됩니다.

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

결과

|  |  |
| --- | --- |
| 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)`).

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

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

결과

| 직원 | 주소 |
| --- | --- |
| 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에 대한 모든 값을 가져올 수 있도록 두 가지 사항이 변경되었습니다.

* Name으로 Employee 이름이 변경된 Employees 테이블에 대한 선행 LOAD가 삽입되었습니다.

  `
  Load Employee As Name;`

* Citizens에서 Where 조건이 다음으로 변경되었습니다.

  `not Exists (Name, Employee).`

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

결과

| 직원 | 주소 |
| --- | --- |
| Mary | London |
| Lucy | Madrid |
| Lucy | Paris |