Флаг сохранения пустого набора
Вы можете использовать символ & (флаг сохранения пустого набора) в начале некоторых внешних выражений набора, чтобы переопределить неявную очистку набора выбора во время анализа пользователем. Флаг сохранения пустого набора позволяет изменять способ расчета и представления агрегаций, когда пользователи делают выбор, не требуя переписывания длинных, сложных выражений набора.
Например, в следующем выражении набора используется флаг сохранения пустого набора:
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales )Фон
Условия использования
Флаг сохранения пустого набора может использоваться в выражениях набора, которые содержат любой из следующих компонентов:
-
По крайней мере одно внутреннее и одно внешнее выражение набора
-
Два или более внешних выражения набора
Используйте флаг сохранения пустого набора, когда вы хотите избежать Неявная очистка набора выбора.
Неявная очистка набора выбора
Неявная очистка набора выбора — это внутреннее поведение, которое иногда может быть нежелательным для анализа конечным пользователем при использовании сложных цепочек выражений набора.Неявная очистка набора выбора может происходить для выражений набора, которые структурированы в соответствии с Условия использования.
Нежелательное поведение заключается в следующем:
-
Одно или несколько внешних выражений набора в цепочке — в частности, первое (или единственное) и любые последующие внешние выражения набора, кроме последнего, — определяют наборы данных. Пример: Country*={'Sweden', 'Denmark'}>}
-
Происходит что-то, что приводит к созданию пустого набора для одного или нескольких из этих компонентов внешнего выражения набора. Чаще всего в приложении делается конфликтный выбор.
-
Для пустых наборов, наборы, определенные этими выражениями, очищаются по мере оценки выражения. Это означает, что данные, используемые в агрегациях, больше не сводятся к определенным наборам, а вместо этого используются все данные.
С другой стороны, наборы, определенные в любых внешних выражениях набора, производящих непустые наборы, а также последнее внешнее выражение набора в цепочке, учитываются во время оценки.
Такое поведение приводит к значениям агрегации, которые могут быть неожиданными и могут привести к непоследовательному анализу. Чтобы обойти неявную очистку набора выбора, можно использовать флаг сохранения пустого набора. См. Решение: Использование флага сохранения пустого набора.
Решение: Использование флага сохранения пустого набора
Используйте символ & (флаг сохранения пустого набора), чтобы переопределить неявную очистку набора выбора. Этот флаг гарантирует, что наборы, определенные во всех внешних выражениях набора, кроме последнего, в цепочке не будут очищены, а вместо этого будут учитываться на протяжении всей оценки всего выражения.
Флаг сохранения пустого набора обеспечивает:
-
Гибкость и экономия времени при наличии сложных, длинных выражений набора, которые вы хотели бы сохранить в неизменном виде, а не переписывать.
-
Возможность изменять логику агрегации для соответствия сложным сценариям использования.
Синтаксис
Во внешнем выражении набора флаг сохранения пустого набора помещается как одиночный символ & в начале выражения — то есть перед модификаторами набора, идентификаторами и операторами.
Примеры:
| Выражение | Выражение без флага сохранения пустого набора |
|---|---|
| {&<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) |
Подробности и примеры
Для получения более подробной информации см. Цепочки из нескольких внешних и внутренних выражений множества.