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

Флаг сохранения пустого набора

Вы можете использовать символ & (флаг сохранения пустого набора) в начале некоторых внешних выражений набора, чтобы переопределить неявную очистку набора выбора во время анализа пользователем. Флаг сохранения пустого набора позволяет изменять способ расчета и представления агрегаций, когда пользователи делают выбор, не требуя переписывания длинных, сложных выражений набора.

Например, в следующем выражении набора используется флаг сохранения пустого набора:

{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales )

Фон

Условия использования

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

  • По крайней мере одно внутреннее и одно внешнее выражение набора

  • Два или более внешних выражения набора

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

Неявная очистка набора выбора

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

Нежелательное поведение заключается в следующем:

  1. Одно или несколько внешних выражений набора в цепочке — в частности, первое (или единственное) и любые последующие внешние выражения набора, кроме последнего, — определяют наборы данных. Пример: Country*={'Sweden', 'Denmark'}>}

  2. Происходит что-то, что приводит к созданию пустого набора для одного или нескольких из этих компонентов внешнего выражения набора. Чаще всего в приложении делается конфликтный выбор.

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

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

Такое поведение приводит к значениям агрегации, которые могут быть неожиданными и могут привести к непоследовательному анализу. Чтобы обойти неявную очистку набора выбора, можно использовать флаг сохранения пустого набора. См. Решение: Использование флага сохранения пустого набора.

Решение: Использование флага сохранения пустого набора

Используйте символ & (флаг сохранения пустого набора), чтобы переопределить неявную очистку набора выбора. Этот флаг гарантирует, что наборы, определенные во всех внешних выражениях набора, кроме последнего, в цепочке не будут очищены, а вместо этого будут учитываться на протяжении всей оценки всего выражения.

Флаг сохранения пустого набора обеспечивает:

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

  • Возможность изменять логику агрегации для соответствия сложным сценариям использования.

Синтаксис

Во внешнем выражении набора флаг сохранения пустого набора помещается как одиночный символ & в начале выражения — то есть перед модификаторами набора, идентификаторами и операторами.

Примеры:  

Примеры — флаг сохранения пустого набора
Выражение Выражение без флага сохранения пустого набора
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales ) {<Country={'Sweden'}>} {<ProductCategory={'shirts'}>} Sum (Sales)
{& <Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales) {<Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales)

Подробности и примеры

Для получения более подробной информации см. Цепочки из нескольких внешних и внутренних выражений множества.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!