Анализ множеств
При создании выборки в приложении необходимо определить подмножество записей в данных. Функции агрегирования, такие как Sum(), Max(), Min(), Avg() и Count(), вычисляются на основе этого подмножества.
Другими словами, выборка определяет область агрегирования. Она определяет множество записей, на основе которых выполняются вычисления.
Анализ множеств предлагает способ определения области, отличной от множества записей, определяемого текущей выборкой. Новую область также можно рассматривать как альтернативную выборку.
Это может быть полезным, когда требуется сравнить текущую выборку с определенным значением, например с прошлогодним значением или долей глобального рынка.
Выражения множества
Выражения множества могут использоваться во внутренних и внешних функциях агрегирования и заключаются в фигурные скобки.
Пример: Внутреннее выражение множества
Sum( {$<Year={2021}>} Sales )
Пример: Внешнее выражение множества
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
Для получения дополнительной информации о внутренних и внешних выражениях множества см. Внутренние и внешние выражения множества.
Выражение множества состоит из комбинации следующих элементов.
-
Identifiers. Идентификатор множества представляет выборку, определенную в другом месте. Он также представляет конкретное множество записей в данных. Это может быть текущая выборка, выборка из закладки или выборка из альтернативного состояния. Простое выражение множества состоит из одиночного идентификатора, например знака доллара США {$}, что означает все записи в текущей выборке.
Примеры: $, 1, BookMark1, State2
-
Operators. Оператор множества можно использовать для создания объединений, разностей или пересечений между разными идентификаторами множеств. Таким образом, можно создать подмножество или супермножество выборок, определенных идентификаторами множеств.
Примеры: +, -, *, /
См.: Операторы множеств
-
Modifiers. Можно добавить модификатор множества в идентификатор множества, чтобы изменить его выборку. Модификатор также можно использовать самостоятельно, в таком случае он будет применяться к идентификатору по умолчанию. Модификатор необходимо заключать в угловые скобки <…>.
Примеры: <Year={2020}>, <Supplier={ACME}>
Элементы объединяются для формирования выражений множества.
К примеру, приведенное выше выражение множества строится на основе агрегирования Sum(Sales).
Первый операнд возвращает продажи за 2021 год для текущей выборки, на которую указывает идентификатор множества $ и модификатор, содержащий выборку 2021 года. Второй операнд возвращает значение Sales для Sweden и игнорирует текущую выборку, на которую указывает идентификатор множества 1.
Наконец, выражение возвращает множество, состоящее из записей, принадлежащих любому из двух операндов множества, на что указывает оператор множества +.
Для получения полного описания синтаксиса см. Синтаксис выражений множества.
Примеры
Примеры, в которых объединены описанные выше элементы выражения множества, приводятся в следующих разделах:
Чтобы попробовать некоторые другие выражения, см. Учебное пособие — создание выражения множества.
Натуральные множества
Обычно выражение множества представляет множество записей в модели данных и выборку, определяющую этот набор данных. В таком случае множество называется натуральным.
Идентификаторы множеств, с модификаторами множеств или без, всегда представляют натуральные множества.
Однако выражение множества, использующее операторы множества, также представляет подмножество записей, но, как правило, уже не может быть описано как использующее выборку значений поля. Такое выражение является ненатуральным множеством.
Например, множество, заданное в {1-$}, не может всегда определяться как выборка. Поэтому оно не является натуральным множеством. Чтобы продемонстрировать это, можно загрузить следующие данные, добавить их в таблицу, а затем создать выборки с помощью фильтров.
Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];
Создавая выборки для Dim1 и Dim2, получается вид, показанный в следующей таблице.
Выражение множества в первой мере использует натуральное множество: оно соответствует выборке, созданной в {$}.
Вторая мера отличается. В ней используется {1-$}. Невозможно создать выборку, соответствующую этому множеству, так как оно является ненатуральным.
Такое различие имеет ряд последствий:
-
Модификаторы множеств можно применять только к идентификаторам множеств. Их нельзя применить к произвольному выражению множества. Например, невозможно использовать выражение множества, так как:
{ (BM01 * BM02) <Field={x,y}> }
В данном случае обычные (круглые) скобки обозначают, что пересечение между BM01 и BM02 должно вычисляться до применения модификатора множества. Причина заключается в том, что отсутствует множество элементов, доступное для модификации.
-
Нельзя использовать ненатуральные множества в функциях элементов P() и E(). Эти функции возвращают множество элементов, но при этом невозможно вывести множество элементов из ненатурального множества.
-
Мера, использующая ненатуральное множество, не всегда приписывается правильному значению измерения, если модель данных включает много таблиц. Например, в следующей диаграмме несколько исключенных значений продаж приписаны правильным Country, а для других NULL указано как Country.
Правильность назначения зависит от модели данных. В данном случае номер невозможно назначить, если он относится к стране, исключенной из выборки.
Идентификатор | Описание |
---|---|
1 | Представляет полное множество всех записей в приложении, независимо от выборок. |
$ | Представляет записи текущей выборки. Выражение множества {$}, таким образом, эквивалентно неутверждению выражения множества. |
$1 | Представляет предыдущую выборку. $2 представляет предыдущую предпоследнюю выборку и т. д. |
$_1 | Представляет следующую (стоящую впереди) выборку. $_2 представляет следующую предпоследнюю выборку и т. д. |
BM01 | Можно использовать любой ID закладки или имя закладки. |
MyAltState | Можно ссылаться на выборки, сделанные в другом состоянии, указав имя этого состояния. |
Пример | Результат |
---|---|
sum ({1} Sales) | Возвращает общий объем продаж в приложении, игнорируя выборки, но не измерение. |
sum ({$} Sales) |
Возвращает продажи для текущей выборки, т. е. это то же самое, что элемент sum(Sales). |
sum ({$1} Sales) |
Возвращает продажи для предыдущей выборки. |
sum ({BM01} Sales) |
Возвращает продажи для закладки с именем BM01. |
Пример | Результат |
---|---|
sum({$<OrderDate = DeliveryDate>} Sales) | Возвращает продажи для текущей выборки, где OrderDate = DeliveryDate. |
sum({1<Region = {US}>} Sales) |
Возвращает продажи в регионе US, игнорируя текущую выборку. |
sum({$<Region = >} Sales) |
Возвращает продажи для выборки, но выборка в элементе Region удаляется. |
sum({<Region = >} Sales) |
Возвращает то же, что и в примере выше. Если множество для изменения отсутствует, используется знак $. |
sum({$<Year={2000}, Region={“U*”}>} Sales) | Возвращает продажи для текущей выборки, но с новыми выборками в элементах Year и Region. |