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


Работа с функцией RollupChildren (многомерные выражения)

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

См. также:

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