# coalesce스크립트 및 차트 함수

coalesce 함수는 유효한 non-NULL 표현이 있는 첫 번째 매개변수를 반환합니다. 원하는 만큼의 파라메타를 사용할 수 있습니다.

구문:

coalesce(expr1[ , expr2 , expr3 , ...])

반환 데이터 유형: 이중

인수

| 인수 | 설명 |
| --- | --- |
| expr1 | NULL이 아닌 유효한 표현인지 확인할 첫 번째 표현식입니다. |
| expr2 | NULL이 아닌 유효한 표현인지 확인할 두 번째 표현식입니다. |
| expr3 | NULL이 아닌 유효한 표현인지 확인할 세 번째 표현식입니다. |

예: 차트 표현식

| 예제 | 결과 |
| --- | --- |
| `Coalesce(ProductDescription, ProductName, ProductCode, 'no description available')` | 이 표현식은 일부 필드에 제품 값이 없는 경우 세 개의 서로 다른 제품 설명 필드 중에서 선택합니다. 함수에 나열된 순서에 따라 null이 아닌 값을 갖는 첫 번째 필드가 반환됩니다. 어떤 필드에도 값이 없으면 결과는 `no description available`입니다. |
| `Coalesce(TextBetween(FileName, '"', '"'), FileName)` | 이 표현식은 `FileName` 필드에서 잠재적으로 포함된 인용 부호를 제거합니다. 주어진 `FileName`이 인용 부호로 묶여 있으면 해당 인용 부호가 제거되고, 인용 부호로 묶이지 않은 `FileName`이 반환됩니다. `TextBetween` 함수가 구분 기호를 찾지 못하면 null을 반환하며, Coalesce는 이를 거부하고 대신 원시 `FileName`을 반환합니다. |

## 예 - Coalesce 기본 사항

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

#### 차트 표현식

개요

제품 및 가격 데이터가 포함된 데이터 테이블이 로드됩니다. 모든 null 값이 대체 가능 값으로 바뀌는지 확인해야 합니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 필드는 다음과 같습니다.

  * `ProductID`

  * `ProductName`

  * `Price`

* 누락된 값이 NULL로 처리되도록 보장하는 `NullInterpret` 변수 문입니다.

로드 스크립트

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, Price
1, Laptop, 1000
2, , 800
3, Desktop, 1200
4, , 500
5, Tablet, 600
];
```

결과

1. 데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

   * `ProductID`

   * `ProductName`

2. 다음 계산된 차원을 만듭니다.

   * `=Coalesce(ProductName, 'Unknown Product')`

3. 다음 측정값을 만듭니다.

   * `=Sum(Price)`: 유효한 숫자 표시를 반환합니다.

4. 새 테이블을 만들고 다음 표현식을 계산 차원으로 추가합니다.

   * `=Coalesce(ProductName, 'Unknown Product')`

5. 다음 측정값을 만듭니다.

   * `=Sum(Price)`: 유효한 숫자 표시를 반환합니다.

다음 표의 결과는 `Coalesce` 함수가 원래 데이터 집합의 null 값을 대체 가능 값 `Unknown Product`로 바꾸는 방법을 보여 줍니다.

결과 테이블 1

| ProductID | ProductName | Coalesce(ProductName, 'Unknown Product') | Sum(Price) |  |
| --- | --- | --- | --- | --- |
| Totals |  |  | 4100 |  |
| 1 | Laptop | Laptop | 1000 |  |
| 2 | - | Unknown Product | 800 |  |
| 3 | Desktop | Desktop | 1200 |  |
| 4 | - | Unknown Product | 500 |  |
| 5 | Tablet | Tablet | 600 |  |

결과 테이블 2

| Coalesce(ProductName, 'Unknown Product') | Sum(Price) |
| --- | --- |
| Totals | 5 |
| Desktop | 600 |
| Laptop | 1000 |
| Tablet | 600 |
| Unknown Product | 1300 |

## 예 - null 값을 우선 순위가 있는 대체 가능 값으로 바꾸기

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/coalesce.htm)

#### 차트 표현식

개요

이 예에서는 `Coalesce` 함수를 사용하여 지정된 우선 순위 논리에 따라 누락된 위치 데이터를 대체 가능 값으로 바꿉니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 필드는 다음과 같습니다.

  * `LocationID`

  * `Country`

  * `State`

  * `City`

* 누락된 값이 NULL로 처리되도록 보장하는 `NullInterpret` 변수 문입니다.

로드 스크립트

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
LocationID, Country, State, City
L001, USA, California, Los Angeles
L002, USA, ,
L003, Canada, Ontario,
L004, , New South Wales, Sydney
L005, UK, , London
L006, , , London
];
```

결과

1. 데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

   * `LocationID`

   * `Country`

   * `State`

   * `City`

2. 다음 계산된 차원을 만듭니다.

   * `=Coalesce(Country, State, City)`: null 값을 대체 값으로 채웁니다.

결과 테이블

| LocationID | Country | State | City | Coalesce(Country, State, City) |
| --- | --- | --- | --- | --- |
| L001 | USA | California | Los Angeles | USA |
| L002 | USA | - | - | USA |
| L003 | Canada | Ontario | - | Canada |
| L004 | - | New South Wales | Sydney | New South Wales |
| L005 | UK | - | London | UK |
| L006 | - | - | London | London |

결과는 누락된 값이 있지만 `Coalesce` 함수를 사용하여 이러한 인스턴스를 대체 가능 값으로 채워 데이터 집합을 완료하는 방법에 대한 논리를 제공할 수 있음을 보여 줍니다. 예를 들어, `L004`에 `Country` 값이 없습니다. `Coalesce` 함수는 `Country` 값이 누락된 경우 `State`가 사용할 우선 순위 논리에 나열된 두 번째 필드이므로 `New South Wales`를 반환합니다.