Поделиться через


Обработка данных многомерных выражений — функция 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 для получения значения прогнозируемых валовых внутренних и внешних продаж.

См. также:

Манипулирование данными (многомерные выражения)