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

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

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

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

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

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

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

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

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

| Префикс | Описание | Пример | Заменен следующим |
| --- | --- | --- | --- |
| odag\_ | Заменен выбранными (зелеными) и дополнительным (белым) значениями. Выбирает текстовую версию значений. Это стандартный префикс для строковых значений. | $(odag\_МоеПоле) | '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/May2026/Subsystems/Hub/Content/Sense_Hub/LoadData/bind-expressions-OnDemand-template-app.htm#Changing). | $(odagn\_MyField) | 1,2,3,4 |
| odagncnt\_ | Заменен количеством значений в соответствующей привязке odagn\_. Это используется для оптимизации запросов. | $(odagncnt\_MyField) | 4 |
| одаго\_ | Заменен дополнительными (белыми) значениями. Выбирает текстовую версию значений. Это используется для оптимизации запросов.<br><br>[Оптимизация для большой базы данных](https://help.qlik.com/ru-RU/sense/May2026/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/May2026/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/May2026/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/May2026/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. Для таких источников необходимо добавить данное выражение, чтобы изменить символы кавычек и разделителей.

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

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

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

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

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

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

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

| Спецификация формата | Описание | Созданные вставленные значения |
| --- | --- | --- |
| не указано | Список разделенных запятой значений, не заключенных в кавычки. Обратите внимание, что будут использоваться числовые значения. | VAL1,VAL2 |
| {"Разделитель": "YY"} | Значения без кавычек, разделенные YY | ЗНАЧЕНИЕ1YYЗНАЧЕНИЕ2 |
| {"кавычки": "A", "заменаКавычек": "\\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;