Выражения привязки в приложениях шаблона On-demand
Привязки данных в приложении шаблона указывают, какие данные из соответствующего приложения выбора следует использовать для создания запросов в ходе загрузки данных в приложение On-demand.
Базовая форма выражений привязки, $(odag_FIELDNAME), — не единственный метод привязки выражений. Другие префиксы могут использоваться для уточнения выборки и обеспечения правильной загрузки данных приложением шаблона.
Доступные префиксы привязки
Общая форма префикса — 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_ |
Заменен выбранными (зелеными) и дополнительным (белым) значениями. Выбирает числовую версию значений. Это стандартный префикс для числовых значений. Примечание к информации
Если в модели данных не может быть выбранных или дополнительных значений поля, в выражении необходимо указать noValue. Например, $(odagn_MyField){"noValue":"-99999"}. Для получения дополнительной информации см. раздел Изменение символов кавычек и разделителей. |
$(odagn_MyField) | 1,2,3,4 |
odagncnt_ | Заменен количеством значений в соответствующей привязке odagn_. Это используется для оптимизации запросов. | $(odagncnt_MyField) | 4 |
odago_ |
Заменен дополнительными (белыми) значениями. Выбирает текстовую версию значений. Это используется для оптимизации запросов. |
$(odago_MyField) | '4' |
odagocnt_ | Заменен количеством значений в соответствующей привязке odago_. Это используется для оптимизации запросов. | $(odagocnt_MyField) | 1 |
odagon_ |
Заменен дополнительными (белыми) значениями. Выбирает числовую версию значений. Это используется для оптимизации запросов. |
$(odagon_MyField) | 4 |
odagoncnt_ | Заменен количеством значений в соответствующей привязке odagon_. Это используется для оптимизации запросов. | $(odagoncnt_MyField) | 1 |
odags_ |
Заменен выбранными (зелеными) значениями. Выбирает текстовую версию значений. Это используется для оптимизации запросов. |
$(odags_MyField) | '1','2','3' |
odagscnt_ | Заменен количеством значений в соответствующей привязке odags_. Это используется для оптимизации запросов. | $(odagscnt_MyField) | 3 |
odagsn_ |
Заменен выбранными (зелеными) значениями. Выбирает числовую версию значений. Это используется для оптимизации запросов. |
$(odagsn_MyField) | 1,2,3 |
odagsncnt_ | Заменен количеством значений в соответствующей привязке odagsn_. Это используется для оптимизации запросов. | $(odagsncnt_MyField) | 3 |
Пустые значения отфильтровываются в текстовых версиях. Нечисловые значения и значения NaN отфильтровываются в числовых версиях.
Оптимизация для большой базы данных
Префиксы odags_ и odagsn_ предназначены для оптимизации запросов. При отсутствии выбора в связанных полях odag_ включает все значения, а odags_ не включает значений. В некоторых случаях эффективнее использовать префиксы odags_ и odagscnt_. Это позволяет протестировать, является ли набор значений пустым. Например, при отсутствии выборов в MyField следующее эффективнее, чем тестирование на все значения в odag_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, как показано далее:
Точка навигации приложения On-demand в приложении выбора будет оставаться выключенной до тех пор, пока не будет выбрано строго два значения элемента YEARQUARTER. Будет отображено сообщение о том, что необходимо выбрать строго два значения YEARQUARTER.
Ограничения количества выбираемых значений создают обязательную связь между приложением выбора и приложением On-demand. В этом заключается отличие от выражений привязки, в которых ограничения количества не используются. Например, если скрипт приложения шаблона содержит выражение привязки без ограничения количества, как показано далее:
при этом не требуется, чтобы приложение выбора содержало поле с именем MYFIELD или какие-либо выбранные значения данного поля, если оно существует. Если приложение выбора не содержит поле с именем MYFIELD или если пользователь не делает никаких выборок из него, точку навигации приложения On-demand можно включить в ходе выполнения других выборок, чтобы соблюсти условие значения ограничения количества записей.
С другой стороны, если выражение привязки имеет вид:
теперь для приложения выбора действует два требования:
- Приложение выбора должно содержать поле с именем 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. |
Изменение символов кавычек и разделителей
Если список значений из поля, выбранного в приложении выбора, вставить в скрипт приложения шаблона, значения будут заключены в одинарные кавычки и разделены запятыми. Это символы по умолчанию для кавычек и разделителей. Эти значения можно изменить в синтаксисе, прилагаемом к оператору привязки для каждого поля. Пример:
Затем эти новые значения используются для составления списка значений привязки, взятых из приложения выбора. Если, к примеру, выбранные значения представляют собой первые три месяца года, список будет иметь следующий вид:
В большинстве стандартных баз данных SQL в качестве кавычек и разделителей используются стандартные символы. Однако эти настройки могут не работать в некоторых базах данных SQL, а также во многих источниках динамических данных, таких как NoSQL и REST. Для таких источников необходимо добавить данное выражение привязки, чтобы изменить символы кавычек и разделителей.
В следующей таблице описаны параметры формата для изменения символов кавычек и разделителей.
Параметр | Значение по умолчанию | Определение |
---|---|---|
quote |
' (одинарная кавычка) для текстовых префиксов пустой для числовых префиксов |
Будет добавлена перед каждым значением и после него |
delimiter | , (запятая) | Будет добавлена между всеми значениями |
quoteReplace | '' (двойная одинарная кавычка) |
Если значение не пустое и кавычки не пустые, все кавычки в значениях будут заменены указанной строкой. Примечание к информацииquoteReplace не поддерживается в качестве параметра для числовых префиксов, таких как odagn_. quoteReplace игнорируется числовыми префиксами.
|
noValue | (пустое) |
Если для поля значения не выбраны, это значение будет использоваться вместо них. Этот параметр полезен, когда в выборе не может быть значений у конкретного поля. Это значение должно быть установлено на значение, не существующее в исходных данных. Например, для числовых значений используйте отрицательную величину, если все значения в базе данных положительные. Примечание к информации Для значений, не заключенных в кавычки, необходимо указать noValue, если выбранные значения поля могут быть пустым набором.
|
В следующих таблицах описывается спецификация формата и созданные значения для odag_ и odagn_. Созданные вставленные значения основаны на значениях данных по умолчанию VAL1, VAL2.
Спецификация формата | Описание | Созданные вставленные значения |
---|---|---|
не указано |
Список разделенных запятой значений, заключенных в кавычки ' . |
'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. Примечание к информации
В этом примере должны быть две обратные косые черты \\, так как \ является escape-символом в формате json. |
AV\AL1A,AV\AL2A |
Спецификация формата | Описание | Созданные вставленные значения |
---|---|---|
не указано |
Список разделенных запятой значений, не заключенных в кавычки. Обратите внимание, что будут использоваться числовые значения. |
VAL1,VAL2 |
{"delimiter": "YY"} | Значения без кавычек, разделенные YY | VAL1YYVAL2 |
{"quote": "A", "quoteReplace": "\\A"} | По сравнению с префиксом odag_ параметр quoteReplace будет проигнорирован. | AVAL1A,AVAL2A |
Обработка отдельных значений
Когда требуется отдельная обработка значений поля, можно использовать встроенный метод, чтобы создать значения в переменной Values и выполнить произвольную обработку с помощью Replace или другой функции. В примере ниже Replace используется со значениями заполнителя.