# Выражения привязки в приложениях шаблона On-demand

Привязки данных в приложении шаблона указывают, какие данные из соответствующего приложения выбора следует использовать для создания запросов в ходе загрузки данных в приложение On-demand.

Базовая форма выражений привязки, $(odag\_FIELDNAME), — не единственный метод привязки выражений. Другие префиксы могут использоваться для уточнения выборки и обеспечения правильной загрузки данных приложением шаблона.

Примечание к предупреждениюШаблонные приложения, первоначально созданные с помощью расширения Qlik Sense для On-demand App Generation, следует изменить, чтобы использовать подход, показанный ниже, для привязки большого количества выборок из поля.

## Доступные префиксы привязки

Общая форма префикса — odag[s|o][n][cnt], где:

* s — включить только выбранные значения
* o — включить только дополнительные значения
* n — выбрать числовую версию, по умолчанию не заключать в кавычки
* cnt — вставить количество значений вместо фактических значений

В следующей таблице приводится список всех версий доступных префиксов привязки. В примерах подразумевается поле с названием MyField, которое содержит 1,2,3 в качестве выбранных значений (зеленые значения) и 4 в качестве дополнительного выбранного значения (белое значение).

Префиксы привязки

| Префикс | Описание | Пример | Заменен следующим |
| --- | --- | --- | --- |
| odag\_ | Заменен выбранными (зелеными) и дополнительным (белым) значениями. Выбирает текстовую версию значений. Это стандартный префикс для строковых значений. | $(odag\_MyField) | '1','2','3','4' |
| odagcnt\_ | Заменен количеством значений в соответствующей привязке odag\_. Этот префикс используется для оптимизации запросов. | $(odagcnt\_MyField) | 4 |
| odagn\_ | Заменен выбранными (зелеными) и дополнительным (белым) значениями. Выбирает числовую версию значений. Это стандартный префикс для числовых значений.<br><br>Примечание к информации<br><br>Если в модели данных не может быть выбранных или дополнительных значений поля, в выражении необходимо указать noValue. Например, `$(odagn_MyField){"noValue":"-99999"}`.<br><br>Для получения дополнительной информации см. раздел [Изменение символов кавычек и разделителей](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Changing). | $(odagn\_MyField) | 1,2,3,4 |
| odagncnt\_ | Заменен количеством значений в соответствующей привязке odagn\_. Это используется для оптимизации запросов. | $(odagncnt\_MyField) | 4 |
| odago\_ | Заменен дополнительными (белыми) значениями. Выбирает текстовую версию значений. Это используется для оптимизации запросов.<br><br>[Оптимизация для большой базы данных](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Optimizi). | $(odago\_MyField) | '4' |
| odagocnt\_ | Заменен количеством значений в соответствующей привязке odago\_. Это используется для оптимизации запросов. | $(odagocnt\_MyField) | 1 |
| odagon\_ | Заменен дополнительными (белыми) значениями. Выбирает числовую версию значений. Это используется для оптимизации запросов.<br><br>[Оптимизация для большой базы данных](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Optimizi). | $(odagon\_MyField) | 4 |
| odagoncnt\_ | Заменен количеством значений в соответствующей привязке odagon\_. Это используется для оптимизации запросов. | $(odagoncnt\_MyField) | 1 |
| odags\_ | Заменен выбранными (зелеными) значениями. Выбирает текстовую версию значений. Это используется для оптимизации запросов.<br><br>[Оптимизация для большой базы данных](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Optimizi). | $(odags\_MyField) | '1','2','3' |
| odagscnt\_ | Заменен количеством значений в соответствующей привязке odags\_. Это используется для оптимизации запросов. | $(odagscnt\_MyField) | 3 |
| odagsn\_ | Заменен выбранными (зелеными) значениями. Выбирает числовую версию значений. Это используется для оптимизации запросов.<br><br>[Оптимизация для большой базы данных](https://help.qlik.com/ru-RU/sense/November2025/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Optimizi). | $(odagsn\_MyField) | 1,2,3 |
| odagsncnt\_ | Заменен количеством значений в соответствующей привязке odagsn\_. Это используется для оптимизации запросов. | $(odagsncnt\_MyField) | 3 |

Примечание к информации

Пустые значения отфильтровываются в текстовых версиях. Нечисловые значения и значения NaN отфильтровываются в числовых версиях.

## Оптимизация для большой базы данных

Префиксы odags\_ и odagsn\_ предназначены для оптимизации запросов. При отсутствии выбора в связанных полях odag\_ включает все значения, а odags\_ не включает значений. В некоторых случаях эффективнее использовать префиксы odags\_ и odagscnt\_. Это позволяет протестировать, является ли набор значений пустым. Например, при отсутствии выборов в MyField следующее эффективнее, чем тестирование на все значения в odag\_MyField:

```
WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))
```

odags\_ не может использоваться, когда в приложении выбора есть альтернативное поле для выбора, которое не является полем On-demand. Например, если пользователь делает выбор в поле CountryName, а выражение привязки находится на связанном поле CountryCode, то odags\_ нельзя использовать. В этих случаях вместо этого можно использовать odago\_. Если значений в привязке odago\_ нет, это может означать, что либо нужно включить все значения, либо не включать ни одного из них.

## Привязка числовых значений

Если данные, которые необходимо привязать к приложению On-demand, состоят из числовых, а не строковых значений, полезно предотвратить заключение числовых полей в кавычки. Например, если записи о продажах включают числовой столбец DAY\_OF\_WEEK, при этом необходимо, чтобы пользователь приложения выбора мог выбирать произвольные сочетания элементов DAY\_OF\_WEEK, следует изменить запрос агрегирования, использующийся для загрузки приложения выбора, включив элемент DAY\_OF\_WEEK как в список SELECT, так и в список GROUP BY. Если при выборе значений DAY\_OF\_WEEK эти значения заключаются в кавычки, при этом база данных не поддерживает автоматическое преобразование типа из строкового в числовой, может возникнуть ошибка выполнения запроса.

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

* odagn\_
* odagon\_
* odagsn\_

При использовании числовых версий значения берутся из числовой части пар, в которых хранятся выбранные значения; значения не заключаются в кавычки по умолчанию.

## Требование определенного количества выбираемых значений

В некоторых ситуациях необходимо настроить запрос приложения On-demand таким образом, чтобы он содержал определенное количество или диапазон значений для определенного поля. Например, если запрос приложения On-demand содержит предложение BETWEEN, которое служит для получения данных о всех продажах за период от даты начала до даты окончания, выражение привязки для поля YEARQUARTER может включать синтаксис суффикса [2], который требует выбора строго двух значений для элемента YEARQUARTER, как показано далее:

```
$(odag_YEARQUARTER)[2]
```

Точка навигации приложения On-demand в приложении выбора будет оставаться выключенной до тех пор, пока не будет выбрано строго два значения элемента YEARQUARTER. Будет отображено сообщение о том, что необходимо выбрать строго два значения YEARQUARTER.

Ограничения количества выбираемых значений создают обязательную связь между приложением выбора и приложением On-demand. В этом заключается отличие от выражений привязки, в которых ограничения количества не используются. Например, если скрипт приложения шаблона содержит выражение привязки без ограничения количества, как показано далее:

```
$(odag_MYFIELD)
```

при этом не требуется, чтобы приложение выбора содержало поле с именем MYFIELD или какие-либо выбранные значения данного поля, если оно существует. Если приложение выбора не содержит поле с именем MYFIELD или если пользователь не делает никаких выборок из него, точку навигации приложения On-demand можно включить в ходе выполнения других выборок, чтобы соблюсти условие значения ограничения количества записей.

С другой стороны, если выражение привязки имеет вид:

$(odag\_MYFIELD)[1+]

теперь для приложения выбора действует два требования:

* Приложение выбора должно содержать поле с именем MYFIELD.
* Пользователь должен выбрать по крайней мере одно значение для элемента MYFIELD.

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

Для выполнения привязки служба приложения On-demand использует метод замены строк, который не учитывает комментарии в скрипте. Это означает, что выражения привязки не следует использовать в комментариях, за исключением случаев, когда в комментарии необходимо включить список привязанных значений после создания приложения. Все привязки в комментариях также будут отображаться в списке полей ссылки для создания приложения On-demand.

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

Разные сочетания ограничений количества выбираемых значений

| Образец ограничения | Требование к выбору |
| --- | --- |
| $(odag\_YEARQUARTER)[2] | Следует выбрать строго 2 значения YEARQUARTER. |
| $(odag\_YEARQUARTER)[2-4] | Следует выбрать от 2 до 4 значений YEARQUARTER. |
| $(odag\_YEARQUARTER)[2+] | Следует выбрать не менее 2 значений YEARQUARTER. |
| $(odag\_YEARQUARTER)[2-] | Следует выбрать не более 2 значений YEARQUARTER. |

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

## Изменение символов кавычек и разделителей

Если список значений из поля, выбранного в приложении выбора, вставить в скрипт приложения шаблона, значения будут заключены в одинарные кавычки и разделены запятыми. Это символы по умолчанию для кавычек и разделителей. Эти значения можно изменить в синтаксисе, прилагаемом к оператору привязки для каждого поля. Пример:

$(odag\_ORIGIN){"quote": "|", "delimiter": ";"}

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

|January|;|February|;|March|

В большинстве стандартных баз данных SQL в качестве кавычек и разделителей используются стандартные символы. Однако эти настройки могут не работать в некоторых базах данных SQL, а также во многих источниках динамических данных, таких как NoSQL и REST. Для таких источников необходимо добавить данное выражение привязки, чтобы изменить символы кавычек и разделителей.

В следующей таблице описаны параметры формата для изменения символов кавычек и разделителей.

Параметры формата

| Параметр | Значение по умолчанию | Определение |
| --- | --- | --- |
| quote | ' (одинарная кавычка) для текстовых префиксов<br><br>пустой для числовых префиксов | Будет добавлена перед каждым значением и после него |
| delimiter | , (запятая) | Будет добавлена между всеми значениями |
| quoteReplace | '' (двойная одинарная кавычка) | Если значение не пустое и кавычки не пустые, все кавычки в значениях будут заменены указанной строкой.<br><br>Примечание к информацииquoteReplace не поддерживается в качестве параметра для числовых префиксов, таких как odagn\_. quoteReplace игнорируется числовыми префиксами. |
| noValue | (пустое) | Если для поля значения не выбраны, это значение будет использоваться вместо них. Этот параметр полезен, когда в выборе не может быть значений у конкретного поля.<br><br>Это значение должно быть установлено на значение, не существующее в исходных данных. Например, для числовых значений используйте отрицательную величину, если все значения в базе данных положительные.<br><br>Примечание к информации Для значений, не заключенных в кавычки, необходимо указать noValue, если выбранные значения поля могут быть пустым набором. |

В следующих таблицах описывается спецификация формата и созданные значения для odag\_ и odagn\_. Созданные вставленные значения основаны на значениях данных по умолчанию VAL1, VAL2.

Примеры спецификаций формата и созданных значений odag\_odag\_

| Спецификация формата | Описание | Созданные вставленные значения |
| --- | --- | --- |
| не указано | Список разделенных запятой значений, заключенных в кавычки ' . | 'VAL1','VAL2' |
| {"quote": "", "delimiter": ""} | Соединенные значения | VAL1VAL2 |
| {"quote": "X", "delimiter": "Y"} | Значения, заключенные в кавычки X и разделенные Y. | XVAL1XYXVAL2X |
| {"quote": "XX", "delimiter": "YY"} | Значения, заключенные в кавычки XX и разделенные YY. | XXVAL1XXYYXXVAL2XX |
| {"quote": "X"} | Значения, заключенные в кавычки X и разделенные , (по умолчанию). | XVAL1X,XVAL2X |
| {"delimiter": "YY"} | Значения, заключенные в кавычки ' (по умолчанию) и разделенные YY | 'VAL1'YY'VAL2' |
| {"quote": ""} | Значения без кавычек, разделенные ,. | VAL1,VAL2 |
| {"quote": "A", "quoteReplace": "\\A"} | Значения, заключенные в кавычки A и разделенные запятыми (по умолчанию). Значения в поле будут заменены на \A.<br><br>Примечание к информации<br><br>В этом примере должны быть две обратные косые черты \\, так как \ является escape-символом в формате json. | AV\AL1A,AV\AL2A |

Примеры спецификаций формата и созданных значений odagn\_odagn\_

| Спецификация формата | Описание | Созданные вставленные значения |
| --- | --- | --- |
| не указано | Список разделенных запятой значений, не заключенных в кавычки. Обратите внимание, что будут использоваться числовые значения. | VAL1,VAL2 |
| {"delimiter": "YY"} | Значения без кавычек, разделенные YY | VAL1YYVAL2 |
| {"quote": "A", "quoteReplace": "\\A"} | По сравнению с префиксом odag\_ параметр quoteReplace будет проигнорирован. | AVAL1A,AVAL2A |

## Обработка отдельных значений

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

MyTempBindingData: LOAD \* INLINE [VAL $(odag\_MyField){"quote": "", "delimiter": "\n"} ]; \_TempTable: LOAD Concat(chr(39) & Replace(text, from\_str, to\_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'\_TempTable'); drop table \_TempTable; drop table MyTempBindingData;