Обработка данных многомерных выражений — функция RollupChildren
Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Функция RollupChildren многомерных выражений вычисляет свертку потомков некоторого элемента, применяя различные унарные операторы к каждому потомку, и возвращает результат этой свертки в виде числа. Унарный оператор может браться из свойства, связанного с элементом-потомком, или же оператор может быть строковым выражением, непосредственно заданным для этой функции.
Примеры функции RollupChildren
Применение функции RollupChildren в инструкциях многомерных выражений объяснить просто, однако действие этой функции на запросы многомерных выражений может быть разнообразным.
Воздействие функции RollupChildren осуществляется в запросах многомерных выражений, предназначенных для выполнения выборочного анализа существующих данных куба. Например, в следующей таблице перечисляются элементы-потомки для элемента-родителя "Чистая выручка от продаж", а в скобках показаны их унарные операторы (представленные свойством элементов UNARY_OPERATOR ).
Родительский элемент | Дочерний элемент |
---|---|
Чистая выручка от продаж | Внутренние продажи (+) Внутренние возвраты (-) Зарубежные продажи (+) Зарубежные возвраты (-) |
Родительский элемент «Чистая выручка от продаж» в данный момент предоставляет сумму чистых продаж минус валовые внутренние и внешние продажи, причем вычитание внутренних и внешних возвратов производится как часть выполнения этой свертки.
Однако предположим, что надо быстро получить оценку прироста на 10 % внутренних и внешних валовых продаж без учета внутренних и внешних возвратов. Чтобы вычислить это значение, можно использовать функцию RollupChildren одним из двух способов: с пользовательским свойством члена или функцией IIf .
Применение пользовательского свойства элемента
Если вычисление свертки надо производить часто, то можно создать свойство элемента, хранящее оператор, который в специальной функции будет применяться к каждому дочернему элементу. В следующей таблице показаны допустимые унарные операторы и ожидаемые результаты.
Оператор | Результат |
---|---|
+ | сумма = сумма + текущий дочерний элемент |
- | сумма = сумма - текущий дочерний элемент |
* | сумма = сумма * текущий дочерний элемент |
/ | сумма = сумма / текущий дочерний элемент |
~ | Дочерний элемент не используется в свертке. Значение дочернего элемента игнорируется. |
Например, можно было бы создать свойство элемента с именем SALES_OPERATOR , и этому свойству элемента присваивались бы следующие унарные операторы — см. таблицу ниже.
Родительский элемент | Дочерний элемент |
---|---|
Чистая выручка от продаж | Внутренние продажи (+) Внутренние возвраты (~) Зарубежные продажи (+) Зарубежные возвраты (~) |
С помощью нового свойства элемента следующая инструкция многомерных выражений быстро и эффективно выполнит операцию прогнозирования валовых продаж (без учета внешних и внутренних возвратов):
RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1
При вызове этой функции в сумму войдет значение каждого дочернего элемента, к которому будет применен оператор, хранящийся в данном свойстве элемента. Элементы для внутренних и внешних возвратов не учитываются, а полное значение свертки вычисляется по функции RollupChildren , умноженной на коэффициент 1,1.
Применение функции IIf
Если операция примера нетривиальна или если операция применяется только к одному запросу многомерных выражений, то можно использовать функцию IIf с функцией свертки RollupChildren для получения того же результата. Следующий запрос многомерных выражений дает тот же результат, что и описанный выше запрос многомерных выражений, но данный запрос выполняется без обращения к пользовательскому свойству элемента:
RollupChildren([Net Sales], IIf([Net Sales].CurrentMember.Properties("UNARY_OPERATOR") = "-", "~", [Net Sales].CurrentMember.Properties("UNARY_OPERATOR))) * 1.1
Инструкция многомерных выражений анализирует унарный оператор дочернего элемента. Если унарный оператор применяется для вычитания (как в случае элементов с внутренними и внешними возвратами), то функция IIf заменяет унарный оператор тильду (~). В противном случае функция IIf использует унарный оператор дочернего элемента. Наконец вычисленное значение суммы свертки умножается на коэффициент 1,1 для получения значения прогнозируемых валовых внутренних и внешних продаж.