# 표현식 함수

식을 작성할 때 함수를 사용하여 행 값을 변환하거나, 누락된 데이터를 처리하거나, 관련 값을 가져올 수 있습니다.자세한 내용은 [표현식 작성](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm)을 참조하십시오.

아래 함수는 SaaS 관리형 랜딩, 레이크 랜딩 및 복제 작업의 이동 작업 표현식을 설명합니다.에디터에 표시된 함수 시그니처를 사용하세요.시그니처의 대괄호는 선택적 인수를 나타내며, 대괄호는 입력하지 마십시오.

CDC Storage 및 Streaming Transform 기능에 대한 자세한 내용은 [변환 함수](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/transformation-functions.htm)을(를) 참조하세요.클라우드 데이터 플랫폼에서 실행되는 스토리지, 변환 및 데이터 마트 표현식에는 해당 플랫폼의 함수 구문을 사용하십시오.

## 문자열 함수

접두사 및 접미사 함수는 문자열의 시작 또는 끝에서 작동합니다.문자 대체는 전체 접두사 또는 접미사를 일치시키는 대신 개별 문자에 적용됩니다.

문자열 함수 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$CONCAT(X, Y)` | 두 문자열 `X` 및 `Y`를 해당 순서대로 연결합니다.어느 한 인수라도 NULL이면 NULL을 반환합니다.3개 이상의 문자열을 결합하려면 호출을 중첩하세요. | `$CONCAT('My', 'Picture')`은(는) `'MyPicture'`을(를) 반환합니다.`$CONCAT('My', NULL)`은(는) NULL을 반환합니다. |
| `$INSTR(string, substring)` | `string`에서 `substring`이(가) 처음 나타나는 1부터 시작하는 위치를 반환합니다.부분 문자열을 찾을 수 없는 경우 0을 반환합니다. | `$INSTR('mystring', 'ing')`은(는) `6`을(를) 반환합니다.`$INSTR('mystring', 'xyz')`은(는) `0`을(를) 반환합니다. |
| `$LENGTH(string)` | `string`의 바이트 단위 크기가 아닌 문자 수를 반환합니다. | `$LENGTH('mystring')`은(는) `8`을(를) 반환합니다. |
| `$LOWER(string)` | ASCII 문자를 소문자로 변환한 `string`의 복사본을 반환합니다. | `$LOWER('ABC')`은(는) `'abc'`을(를) 반환합니다. |
| `$LTRIM(string[, characters])` | `string`의 시작 부분에서 문자를 제거합니다.선택적 `characters` 인수는 접두사가 아니라 제거할 문자 집합입니다.생략하면 공백을 제거합니다. | `$LTRIM('  orders')`은(는) `'orders'`을(를) 반환합니다.`$LTRIM('@@orders', '@')`은(는) `'orders'`을(를) 반환합니다. |
| `$REMOVE_PREFIX(string, prefix)` | 지정된 시작 `prefix`이(가) 제거된 `string`의 복사본을 반환합니다. | `$REMOVE_PREFIX('mystring', 'my')`은(는) `'string'`을(를) 반환합니다. |
| `$REMOVE_SUFFIX(string, suffix)` | 지정된 끝 `suffix`가 제거된 `string`의 복사본을 반환합니다. | `$REMOVE_SUFFIX('mystring', 'ing')`은(는) `'mystr'`을(를) 반환합니다. |
| `$REPLACE(string, pattern, replacement)` | ``string``에서 모든 ``pattern`` 항목을 ``replacement``(으)로 바꿉니다.세 인수 모두 필수입니다.일치하는 텍스트를 제거하려면 빈 대체 문자열을 사용하세요. | `$REPLACE('a-b-c', '-', '_')`은(는) `'a_b_c'`을(를) 반환합니다.`$REPLACE('a-b', '-', '')`은(는) `'ab'`을(를) 반환합니다. |
| `$REPLACE_CHARS(string, chars, replacement)` | `chars`에 나열된 각 문자를 `replacement`의 동일한 위치에 있는 문자로 바꿉니다.목록에 없는 문자는 변경되지 않습니다.대체 위치가 누락된 경우, 첫 번째 대체 문자가 사용됩니다. | `$REPLACE_CHARS('mystring', 's', 'z')`은(는) `'myztring'`을(를) 반환합니다.`$REPLACE_CHARS('abcde', 'abcd', '123')`은(는) `'1231e'`을(를) 반환합니다. |
| `$REPLACE_PREFIX(string, prefix, replacement)` | `string`의 시작 부분에 있는 `prefix`을(를) `replacement`(으)로 바꿉니다. | `$REPLACE_PREFIX('mystring', 'my', 'new')`은(는) `'newstring'`을(를) 반환합니다. |
| `$REPLACE_SUFFIX(string, suffix, replacement)` | 모든 항목을 대체하는 대신 `string` 끝의 `suffix`을(를) `replacement`(으)로 대체합니다. | `$REPLACE_SUFFIX('mystring', 'ing', 'new')`은(는) `'mystrnew'`을(를) 반환합니다. |
| `$RTRIM(string[, characters])` | `string`의 끝에서 문자를 제거합니다.선택적 `characters` 인수는 접미사가 아니라 제거할 문자 집합입니다.생략하면 공백을 제거합니다. | `$RTRIM('orders  ')`은(는) `'orders'`을(를) 반환합니다.`$RTRIM('orders@@', '@')`은(는) `'orders'`을(를) 반환합니다. |
| `$SUBSTR(string, start[, length])` | `string`에서 1부터 시작하는 위치인 `start`부터 텍스트를 추출합니다. `length`은(는) 문자 수를 지정합니다.생략하면 나머지 문자를 반환합니다. | `$SUBSTR('abcdef', 2, 3)`은(는) `'bcd'`을(를) 반환합니다. |
| `$TRIM(string[, characters])` | `string`의 양쪽 끝에서 문자를 제거합니다.선택적 `characters` 인수는 부분 문자열이 아니라 제거할 문자 집합입니다.생략하면 공백을 제거합니다. | `$TRIM('  orders  ')`은(는) `'orders'`을(를) 반환합니다.`$TRIM('@#orders#@', '@#')`은(는) `'orders'`을(를) 반환합니다. |
| `$UNICODE(string)` | `string`의 첫 번째 문자의 숫자 유니코드 코드 포인트를 반환합니다.인수는 문자열이어야 합니다. | `$UNICODE('ABC')`은(는) `65`을(를) 반환합니다. |
| `$UPPER(string)` | ASCII 문자를 대문자로 변환한 `string`의 복사본을 반환합니다. | `$UPPER('abc')`은(는) `'ABC'`을(를) 반환합니다. |

## 숫자 함수

현재 행의 숫자 값을 계산하려면 이러한 함수를 사용하세요.`$MAX` 및 `$MIN`는 여러 행에 걸친 값이 아니라 행 내의 인수를 비교합니다.

숫자 함수 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$ABS(X)` | 숫자 인수 `X`의 절대값을 반환합니다. | `$ABS(-20)`은(는) `20`을(를) 반환합니다. |
| `$MAX(arg1, arg2, ...)` | 제공된 숫자 인수 중에서 가장 큰 값을 반환합니다.최소 두 개의 인수를 제공하십시오. | `$MAX(10, 4, 20, 9)`은(는) `20`을(를) 반환합니다. |
| `$MIN(arg1, arg2, ...)` | 제공된 숫자 인수 중에서 가장 작은 값을 반환합니다.최소 두 개의 인수를 제공하십시오. | `$MIN(10, 4, 20, 9)`은(는) `4`을(를) 반환합니다. |
| `$RANDOM()` | 부호 있는 의사 난수 정수를 반환합니다.인수를 받지 않습니다. | `$RANDOM()`은(는) 음수, 0 또는 양수가 될 수 있는 정수를 반환합니다.이 값은 호출할 때마다 달라집니다. |
| `$ROUND(value[, digits])` | `value`을(를) 소수점 이하 `digits`자리로 반올림하고 부동 소수점 값을 반환합니다.`digits`이(가) 생략되면 소수점 0자리로 반올림합니다. | `$ROUND(3.141592, 3)`은(는) `3.142`을(를) 반환합니다. |

## LOB 함수

이 함수들은 바이너리 대형 객체(BLOB)를 다룹니다.size 인수 `N`는 문자가 아닌 바이트를 지정합니다.

이진 값 함수

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$HEX(blob)` | `blob`의 바이트를 나타내는 대문자 16진수 텍스트를 반환합니다.숫자 입력은 먼저 텍스트로 변환되며, 그 결과는 숫자의 기계 표현이 아닙니다. | `$HEX(X'4142')`은(는) `'4142'`을(를) 반환합니다. |
| `$RANDOM_BLOB(N)` | `N`개의 의사 난수 바이트를 반환합니다.`N`이 1보다 작으면 1바이트를 반환합니다.이 함수를 암호학적 난수성을 보장하는 용도로 사용하지 마십시오. | `$RANDOM_BLOB(4)`은(는) 4바이트 BLOB을 반환합니다.이 값은 호출할 때마다 달라집니다. |
| `$ZERO_BLOB(N)` | `N`개의 0 바이트를 포함하는 BLOB을 반환합니다. | `$HEX($ZERO_BLOB(3))`은(는) `'000000'`을(를) 반환합니다. |

## Null 검사 함수

Null 검사 함수의 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$COALESCE(X, Y, ...)` | 인수 순서대로 첫 번째 NULL이 아닌 인수를 반환합니다.최소 2개의 인수를 지정하십시오.모든 인수가 NULL인 경우 결과는 NULL입니다.빈 문자열은 NULL이 아닙니다. | `$COALESCE(NULL, 'Unknown')`은(는) `'Unknown'`을(를) 반환합니다.`$COALESCE('', 'Unknown')`은(는) 빈 문자열을 반환합니다. |
| `$IFNULL(X, Y)` | NULL이 아닌 경우 `X`을(를) 반환하고, 그렇지 않으면 `Y`을(를) 반환합니다.두 인수가 모두 NULL이면 NULL을 반환합니다.정확히 두 개의 인수를 제공하십시오. | `$IFNULL(NULL, 'Unknown')`은(는) `'Unknown'`을(를) 반환합니다.`$IFNULL('Known', 'Unknown')`은(는) `'Known'`을(를) 반환합니다. |
| `$NULLIF(X, Y)` | `X`과 `Y`가 같으면 NULL을 반환하고, 그렇지 않으면 `X`을 반환합니다.정확히 두 개의 인수를 제공하십시오. | `$NULLIF('Unknown', 'Unknown')`은 NULL을 반환합니다.`$NULLIF('Known', 'Unknown')`은(는) `'Known'`을(를) 반환합니다. |

## 날짜 및 시간 함수

`'2026-10-08'`, `'12:34:56'` 또는 `'2026-10-08 12:34:56'`과 같은 날짜, 시간 또는 날짜/시간 문자열을 제공하십시오.하이픈이 뺄셈으로 해석되지 않도록 날짜 상수를 따옴표로 묶으십시오.

날짜 계산 및 형식 지정

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$DATE(date_string)` | `date_string`의 날짜를 `YYYY-MM-DD` 형식의 텍스트로 반환합니다. | `$DATE('2026-10-08')`은(는) `'2026-10-08'`을(를) 반환합니다. |
| `$DATETIME(datetime_string)` | `datetime_string`의 날짜와 시간을 `YYYY-MM-DD HH:MM:SS` 형식의 텍스트로 반환합니다. | `$DATETIME('2026-10-08 12:34:56')`은(는) `'2026-10-08 12:34:56'`을(를) 반환합니다. |
| `$JULIANDAY(datetime_string)` | 기원전 4714년 11월 24일 그리니치 정오 이후의 일수(소수점 포함)를 반환합니다.두 율리우스일 값을 빼서 경과 일수를 계산합니다. | `$JULIANDAY('2000-01-01 12:00:00')`은(는) `2451545.0`을(를) 반환합니다.`$JULIANDAY('2026-10-09') - $JULIANDAY('2026-10-08')`은(는) `1.0`을(를) 반환합니다. |
| `$STRFTIME(format, datetime_string)` | `format`을(를) 사용하여 서식이 지정된 텍스트를 반환합니다.형식은 날짜 또는 날짜/시간 입력 앞에 옵니다. | `$STRFTIME('%Y-%m', '2026-10-08')`은(는) `'2026-10'`을(를) 반환합니다. |
| `$TIME(time_string)` | `time_string`의 시간을 `HH:MM:SS` 형식의 텍스트로 반환합니다. | `$TIME('12:34:56')`은(는) `'12:34:56'`을(를) 반환합니다. |

### 서식 대체

`$STRFTIME`에서 다음 대체 항목을 리터럴 구분 기호와 결합합니다.예를 들어 `'%Y-%m-%d %H:%M:%S'`은(는) 날짜와 시간 형식을 모두 지정합니다.지원되지 않는 대체는 NULL을 반환합니다.

날짜 및 시간 형식 대체

| 대체 | 의미 |
| --- | --- |
| `%d` | 월의 일, 01-31. |
| `%H` | 시간, 00-24. |
| `%f` | 소수점 이하 자릿수를 포함한 초, SS.SSS. |
| `%j` | 연중 일수, 001-366. |
| `%J` | 율리우스일 번호. |
| `%m` | 월, 01-12. |
| `%M` | 분, 00-59. |
| `%s` | 1970년 1월 1일 00:00:00 UTC 이후 경과한 시간(초)입니다. |
| `%S` | 초, 00-59. |
| `%w` | 요일, 0-6; 일요일은 0입니다. |
| `%W` | 연중 주차, 00-53; 주는 월요일부터 시작합니다. |
| `%Y` | 년, 0000-9999. |
| `%%` | 리터럴 퍼센트 기호입니다. |

## 데이터 보강 함수

조회를 사용하여 소스 또는 대상 엔드포인트의 테이블에서 부서 이름과 같은 관련 값을 추가합니다.

데이터 보강 함수 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$SOURCE_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | `condition`와(과) 일치하는 레코드에 대해 `schema`에 있는 소스 엔드포인트의 `table`에서 `expression`의 값을 가져옵니다.조건 매개변수는 해당 플레이스홀더에 순서대로 값을 제공합니다. | `$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)`은(는) 소스에서 일치하는 부서 이름을 가져옵니다. |
| `$TARGET_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | `condition`와(과) 일치하는 레코드에 대해 `schema`에 있는 대상 엔드포인트의 `table`에서 `expression`의 값을 가져옵니다.조건 매개변수는 해당 플레이스홀더에 순서대로 값을 제공합니다. | `$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)`은(는) 대상에서 일치하는 부서 이름을 가져옵니다. |

`condition_params`은 단일 배열 인수가 아닌 쉼표로 구분된 인수 목록을 나타냅니다.두 함수 모두 다음 매개 변수를 사용합니다:

조회 매개변수 및 관계

| 매개 변수 | 의미 |
| --- | --- |
| `time_to_live` | 기본값이 없는 필수 캐시 수명입니다.캐시 수명을 초 단위로 지정하거나, 캐싱을 비활성화하려면 `'NO_CACHING'`, 캐시된 결과를 만료 없이 유지하려면 `'NO_EXPIRATION'`을(를) 지정하십시오.<br><br>짧은 수명은 자주 변경되는 데이터를 새로 고칩니다.유효 기간이 길수록 엔드포인트 쿼리는 줄어들지만, 조회 데이터가 변경된 후 캐시된 값이 반환될 수 있습니다.변경되지 않는 데이터에만 만료 없음을 사용하세요. |
| `schema` | 룩업 테이블을 포함하는 스키마로, 텍스트로 제공됩니다. |
| `table` | 해당 스키마 내에서 쿼리할 테이블이며, 텍스트로 제공됩니다. |
| `expression` | `'DEPARTMENT_NAME'` 또는 `'PRICE * 1.2'`와 같이 하나의 열 값을 선택하는 SQL 표현식입니다.외부 식의 함수 구문이 아닌 액세스 중인 엔드포인트의 SQL 방언을 사용하세요. |
| `condition` | 조회 레코드를 식별하는 SQL 조건입니다.액세스한 엔드포인트의 방언 및 자리 표시자 구문을 사용하십시오. 예를 들어 Oracle의 경우 `:1` 및 `:2` 또는Microsoft SQL Server용 `?`. |
| `condition_params` | 조건 플레이스홀더에 순서대로 바인딩된 값입니다.`$COMPANY_ID` 및 `$DEPARTMENT_ID`와 같은 열 매개변수는 현재 행의 값을 제공합니다. |

쿼리 비용을 줄이려면 조회 필드를 인덱싱하세요.대상 레코드를 식별하는 조건을 선택하고, 추가된 열의 데이터 형식을 선택한 값과 일치하도록 설정하십시오.

정보 메모`$SOURCE_LOOKUP` 및 `$TARGET_LOOKUP`에 대한 호출 테스트는 지원되지 않습니다.[표현식 테스트](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm#Testing)을(를) 참조하십시오.

### 소스 조회 예제

Oracle 소스의 경우, 다음 표현식은 `HR.DEPARTMENTS`에서 `DEPARTMENT_NAME`을(를) 검색하고 결과를 60초 동안 캐시합니다:

```
$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)
```

현재 행에 `DEPARTMENT_ID` 10이 있고 일치하는 조회 레코드에 `'Sales'`이(가) 포함되어 있으면 결과는 `'Sales'`입니다.

Microsoft SQL Server 소스의 경우 해당 조건 자리 표시자 구문을 사용하십시오.이 예제는 회사 및 부서 값을 해당 순서대로 바인딩합니다:

```
$SOURCE_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'COMPANY_ID=? AND DEPARTMENT_ID=?', $COMPANY_ID, $DEPARTMENT_ID)
```

### 대상 조회 예제

Microsoft SQL Server 대상의 경우 해당 SQL 방언을 사용하여 대상 테이블을 쿼리합니다:

```
$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)
```

부서 10의 대상 조회 레코드에 `'Sales'`이(가) 포함되어 있는 경우, 입력 값 10에 대한 결과는 `'Sales'`입니다.

## 작업 함수

작업 함수 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$OPERATION_INDICATOR(value_on_delete, value_on_update, value_on_insert)` | 각 소스 작업에 대해 지정한 플래그를 반환합니다.인수 순서는 삭제, 업데이트, 삽입 순입니다.전용 열을 사용하여 플래그를 저장하고, 해당 데이터 형식과 일치하는 플래그 값을 제공하세요. | `$OPERATION_INDICATOR('Deleted', 'Updated', 'Inserted')`은 업데이트 시 `'Updated'`를 반환합니다. |

Qlik Replicate에서 이 함수는 삭제 처리 방식도 변경합니다. 즉, 해당 대상 레코드를 유지하고 `value_on_delete`(으)로 플래그를 지정합니다.이 삭제 처리 동작은 Qlik Talend Cloud Data Integration에서 확인이 필요합니다.

## 논리 함수

조건부 값 선택

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$IFF(boolean_expression, true_value, false_value)` | `boolean_expression`이(가) true로 평가되면 `true_value`을(를) 반환하고, 그렇지 않으면 `false_value`을(를) 반환합니다.먼저 조건을 지정한 다음 두 개의 결과 값을 지정하십시오. | `$IFF(10 > 5, 'High', 'Low')`은(는) `'High'`을(를) 반환합니다.`$IFF(3 > 5, 'High', 'Low')`은(는) `'Low'`을(를) 반환합니다. |

## 기타 기능

패턴 일치 및 값 형식

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$LIKE(pattern, string[, escape_character])` | 일치하면 1, 일치하지 않으면 0을 반환합니다. NULL을 입력하면 NULL이 생성됩니다. `%`은(는) 0개 이상의 문자와 일치하며, `_`은(는) 1개의 문자와 일치합니다.기본적으로 매칭 시 ASCII 대소문자를 구분하지 않습니다.선택적 이스케이프는 한 문자입니다.`LIKE` 연산자와 달리 패턴이 먼저 옵니다. | `$LIKE('A%', 'Alice')`은(는) `1`을(를) 반환합니다.`$LIKE('10!%', '10%', '!')` `1`을(를) 반환합니다. |
| `$TYPEOF(expression)` | 값의 스토리지 클래스를 반환합니다: `'null'`, `'integer'`, `'real'`, `'text'` 또는 `'blob'`.구성된 출력 열 유형이 아닙니다. | `$TYPEOF(12.5)`은(는) `'real'`을(를) 반환합니다. |

## 해시 함수

해시 함수 인수, 동작 및 예제

| 함수 | 동작 및 인수 | 예제 및 결과 |
| --- | --- | --- |
| `$SHA256(string)` | 입력 문자열의 16진수 SHA-256 해시를 반환합니다. | `$SHA256('abc')`은(는) `ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad`을(를) 반환합니다. |

해시는 암호화가 아닙니다.예측 가능한 입력값은 해시를 비교하여 여전히 식별될 수 있습니다.