Флаг сохранения пустого множества.
Вы можете использовать символ & (флаг сохранения пустого множества) в начале некоторых внешних выражений множества, чтобы отключить очищение выборки от пустых множеств, которое производится по умолчанию во время анализа. Флаг сохранения пустого множества позволяет некоторым образом изменить вычисления и представления функций агрегирования на пользовательских выборках, не меняя длинные и сложные выражения.
Например, в следующем выражении используется флаг сохранения пустого множества:
{&<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) |
Данные и примеры
Для получения более подробной информации см. раздел Цепочки из нескольких внешних и внутренних выражений множества.