# Функции выражений

Используйте функции для преобразования значений строк, обработки отсутствующих данных или получения связанных значений при создании выражений. Для получения подробных сведений см. раздел [Построение выражений](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm).

Приведенные ниже функции описывают выражения задач перемещения в управляемых SaaS задачах промежуточного хранения, промежуточного хранения в озере данных и репликации. Используйте сигнатуру функции, отображаемую в вашем редакторе. Квадратные скобки в сигнатурах указывают на необязательные аргументы; не вводите скобки.

Сведения о функциях CDC Storage и Streaming Transform см. в [Функции преобразования](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/transformation-functions.htm). Для выражений хранилища, преобразования и витрин данных, выполняемых на облачной платформе данных, используйте синтаксис функций этой платформы.

## Строковые функции

Префиксные и суффиксные функции применяются к началу или концу строки. Замена символов применяется к отдельным символам, а не сопоставляет префикс или суффикс целиком.

Аргументы, поведение и примеры строковых функций

| Функция | Поведение и аргументы | Пример и результат |
| --- | --- | --- |
| `$CONCAT(X, Y)` | Объединяет две строки `X` и `Y` в указанном порядке. Возвращает NULL, если хотя бы один аргумент равен NULL. Используйте вложенные вызовы, чтобы объединить более двух строк. | `$CONCAT('My', 'Picture')` возвращает `'MyPicture'`. `$CONCAT('My', NULL)` возвращает NULL. |
| `$INSTR(string, substring)` | Возвращает позицию первого вхождения `substring` в `string` с отсчетом от единицы. Возвращает 0, если подстрока не найдена. | `$INSTR('mystring', 'ing')` возвращает `6`. `$INSTR('mystring', 'xyz')` возвращает `0`. |
| `$LENGTH(string)` | Возвращает количество символов в `string`, а не его размер в байтах. | `$LENGTH('mystring')` возвращает `8`. |
| `$LOWER(string)` | Возвращает копию `string`, в которой буквы ASCII преобразованы в нижний регистр. | `$LOWER('ABC')` возвращает `'abc'`. |
| `$LTRIM(string[, characters])` | Удаляет символы из начала `string`. Необязательный аргумент `characters` — это набор символов для удаления, а не префикс. Если не указано, удаляет пробелы. | `$LTRIM('  orders')` возвращает `'orders'`. `$LTRIM('@@orders', '@')` возвращает `'orders'`. |
| `$REMOVE_PREFIX(string, prefix)` | Возвращает копию `string`, из которой удален указанный начальный `prefix`. | `$REMOVE_PREFIX('mystring', 'my')` возвращает `'string'`. |
| `$REMOVE_SUFFIX(string, suffix)` | Возвращает копию `string` с удаленным указанным окончанием `suffix`. | `$REMOVE_SUFFIX('mystring', 'ing')` возвращает `'mystr'`. |
| `$REPLACE(string, pattern, replacement)` | Заменяет каждое вхождение `pattern` в `string` на `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)` | Заменяет начальные `prefix` в `string` на `replacement`. | `$REPLACE_PREFIX('mystring', 'my', 'new')` возвращает `'newstring'`. |
| `$REPLACE_SUFFIX(string, suffix, replacement)` | Заменяет завершающий `suffix` в `string` на `replacement` вместо замены каждого вхождения. | `$REPLACE_SUFFIX('mystring', 'ing', 'new')` возвращает `'mystrnew'`. |
| `$RTRIM(string[, characters])` | Удаляет символы с конца `string`. Необязательный аргумент `characters` представляет собой набор символов для удаления, а не суффикс. Если не указано, удаляет пробелы. | `$RTRIM('orders  ')` возвращает `'orders'`. `$RTRIM('orders@@', '@')` возвращает `'orders'`. |
| `$SUBSTR(string, start[, length])` | Извлекает текст из `string`, начиная с позиции `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)` | Возвращает копию `string`, в которой буквы ASCII преобразованы в верхний регистр. | `$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()` возвращает целое число, которое может быть отрицательным, нулевым или положительным. Его значение меняется между вызовами. |
| `$ROUND(value[, digits])` | Округляет `value` до `digits` знаков после запятой и возвращает значение с плавающей запятой. Если `digits` опущен, округление выполняется до нуля знаков после запятой. | `$ROUND(3.141592, 3)` возвращает `3.142`. |

## Функции LOB

Эти функции работают с большими двоичными объектами (BLOB). Аргумент size `N` задает байты, а не символы.

Функции для работы с двоичными значениями

| Функция | Поведение и аргументы | Пример и результат |
| --- | --- | --- |
| `$HEX(blob)` | Возвращает шестнадцатеричный текст в верхнем регистре, представляющий байты `blob`. Числовой ввод сначала преобразуется в текст; результат не является машинным представлением числа. | `$HEX(X'4142')` возвращает `'4142'`. |
| `$RANDOM_BLOB(N)` | Возвращает `N` псевдослучайных байтов. Если `N` меньше 1, возвращает один байт. Не используйте эту функцию в качестве гарантии криптографической случайности. | `$RANDOM_BLOB(4)` возвращает четырехбайтовый BLOB. Его значение меняется между вызовами. |
| `$ZERO_BLOB(N)` | Возвращает BLOB, содержащий `N` нулевых байтов. | `$HEX($ZERO_BLOB(3))` возвращает `'000000'`. |

## Функции проверки на NULL

Аргументы функции проверки на null, поведение и примеры

| Функция | Поведение и аргументы | Пример и результат |
| --- | --- | --- |
| `$COALESCE(X, Y, ...)` | Возвращает первый аргумент, отличный от NULL, в порядке следования аргументов. Укажите не менее двух аргументов. Если все аргументы имеют значение NULL, результат равен NULL. Пустая строка не является значением NULL. | `$COALESCE(NULL, 'Unknown')` возвращает `'Unknown'`. `$COALESCE('', 'Unknown')` возвращает пустую строку. |
| `$IFNULL(X, Y)` | Возвращает `X`, если оно не равно NULL; в противном случае возвращает `Y`. Возвращает NULL, если оба аргумента равны NULL. Укажите ровно два аргумента. | `$IFNULL(NULL, 'Unknown')` возвращает `'Unknown'`. `$IFNULL('Known', 'Unknown')` возвращает `'Known'`. |
| `$NULLIF(X, Y)` | Возвращает NULL, если `X` и `Y` равны; в противном случае возвращает `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)` | Возвращает дробное количество дней с полудня по Гринвичу 24 ноября 4714 года до н. э. Вычтите два значения юлианских дней, чтобы рассчитать количество прошедших дней. | `$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` | Количество секунд, прошедших с 1 января 1970 года, 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)` | Извлекает значение `expression` из `table` исходной конечной точки в `schema` для записи, соответствующей `condition`. Параметры условия предоставляют значения для его заполнителей по порядку. | `$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)` извлекает соответствующее название отдела из источника. |
| `$TARGET_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | Извлекает значение `expression` из `table` целевой конечной точки в `schema` для записи, соответствующей `condition`. Параметры условия предоставляют значения для его заполнителей по порядку. | `$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` | SQL-выражение, выбирающее значение одного столбца, например `'DEPARTMENT_NAME'` или `'PRICE * 1.2'`. Используйте диалект SQL конечной точки, к которой выполняется обращение, а не синтаксис функций внешнего выражения. |
| `condition` | SQL-условие, определяющее искомую запись. Используйте диалект и синтаксис плейсхолдеров конечной точки, к которой осуществляется доступ: например, `:1` и `:2` для Oracle или `?` для Microsoft SQL Server. |
| `condition_params` | Значения, привязанные к заполнителям условий, по порядку. Параметры столбцов, такие как `$COMPANY_ID` и `$DEPARTMENT_ID`, предоставляют значения из текущей строки. |

Проиндексируйте поля подстановки, чтобы снизить стоимость запроса. Выберите условие, определяющее нужную запись, и установите тип данных добавленного столбца в соответствии с выбранным значением.

Примечание к информацииТестирование вызовов `$SOURCE_LOOKUP` и `$TARGET_LOOKUP` не поддерживается. См. [Тестирование выражений](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm#Testing).

### Пример поиска исходного кода

Для источника Oracle следующее выражение извлекает `DEPARTMENT_NAME` из `HR.DEPARTMENTS` и кэширует результат на 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)` | Возвращает `true_value`, если `boolean_expression` принимает значение true; в противном случае возвращает `false_value`. Сначала укажите условие, а затем два результирующих значения. | `$IFF(10 > 5, 'High', 'Low')` возвращает `'High'`. `$IFF(3 > 5, 'High', 'Low')` возвращает `'Low'`. |

## Другие функции

Сопоставление с образцом и значимые типы

| Функция | Поведение и аргументы | Пример и результат |
| --- | --- | --- |
| `$LIKE(pattern, string[, escape_character])` | Возвращает 1 при совпадении или 0 при отсутствии совпадения; при входном значении NULL возвращает NULL. `%` соответствует нулю или более символам; `_` соответствует одному. По умолчанию при сопоставлении не учитывается регистр букв ASCII. Необязательный escape-символ состоит из одного символа. Шаблон указывается первым, в отличие от оператора `LIKE`. | `$LIKE('A%', 'Alice')` возвращает `1`. `$LIKE('10!%', '10%', '!')` возвращает `1`. |
| `$TYPEOF(expression)` | Возвращает класс хранения значения: `'null'`, `'integer'`, `'real'`, `'text'` или `'blob'`. Это не настроенный тип выходного столбца. | `$TYPEOF(12.5)` возвращает `'real'`. |

## Хеш-функции

Аргументы, поведение и примеры хеш-функции

| Функция | Поведение и аргументы | Пример и результат |
| --- | --- | --- |
| `$SHA256(string)` | Возвращает шестнадцатеричный хэш SHA-256 входной строки. | `$SHA256('abc')` возвращает `ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad`. |

Хеш — это не шифрование. Предсказуемые входные значения по-прежнему можно идентифицировать путем сравнения их хешей.