Перейти к основному содержимому

Выражения привязки в приложениях шаблона 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_

Заменен выбранными (зелеными) и дополнительным (белым) значениями. Выбирает числовую версию значений. Это стандартный префикс для числовых значений.

Примечание:

Если в модели данных не может быть выбранных или дополнительных значений поля, в выражении необходимо указать 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:

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 использует метод замены строк, который не учитывает комментарии в скрипте. Это означает, что выражения привязки не следует использовать в комментариях, за исключением случаев, когда в комментарии необходимо включить список привязанных значений после создания приложения.

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

Разные сочетания ограничений количества выбираемых значений
Образец ограничения Требование к выбору
$(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

' (одинарная кавычка) для текстовых префиксов

пустой для числовых префиксов

Будет добавлена перед каждым значением и после него
delimiter , (запятая) Будет добавлена между всеми значениями
quoteReplace '' (двойная одинарная кавычка)

Если значение не пустое и кавычки не пустые, все кавычки в значениях будут заменены указанной строкой.

Примечание: quoteReplace не поддерживается в качестве параметра для числовых префиксов, таких как odagn_. quoteReplace игнорируется числовыми префиксами.
noValue (пустое)

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

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

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

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

Примеры спецификаций формата и созданных значений 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.

Примечание:

В этом примере должны быть две обратные косые черты \\, так как \ является escape-символом в формате json.

AV\AL1A,AV\AL2A
Примеры спецификаций формата и созданных значений 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;