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


Создание вычислений ячеек с областью действия запроса (многомерные выражения)

Ключевое слово WITH в многомерном выражении описывает вычисляемые ячейки в контексте запроса. Синтаксис ключевого слова WITH имеет следующий вид:

WITH CELL CALCULATION Cube_Name.CellCalc_Identifier  String_Expression

Значение CellCalc_Identifier — это имя вычисляемых ячеек. Значение String_Expression — это перечень ортогональных одномерных выражений набора многомерных выражений. Каждое выражение набора должно разрешаться к одной из перечисленных ниже категорий.

Категория

Описание

Пустой набор

Выражение набора многомерных выражений, которое разрешается к пустому набору. В этом случае областью вычисляемой ячейки является весь куб.

Одноэлементный набор

Выражение набора многомерных выражений, которое разрешается к единственному элементу.

Набор элементов уровня

Выражение набора многомерных выражений, которое разрешается к элементам одного уровня. Примером такого выражения набора является функция многомерных выражений Level_Expression.Members . Чтобы включить в набор вычисляемые элементы, используется функция многомерных выражений Level_Expression.AllMembers . Дополнительные сведения см. в разделе AllMembers (многомерные выражения).

Набор потомков

Выражение набора многомерных выражений, которое разрешается к потомкам одного элемента. Примером такого выражения набора является функция многомерных выражений Descendants(Member_Expression, Level_Expresion, Desc_Flag). Дополнительные сведения см. в разделе Descendants (многомерные выражения).

Если аргумент String_Expression не описывает измерение, считается, что в набор включаются все элементы с целью создания вложенного куба вычисления. Поэтому, если аргумент String_Expression имеет значение NULL, определение вычисляемых ячеек относится ко всему кубу.

Аргумент MDX_Expression содержит многомерное выражение, из которого вычисляется значение ячейки для всех ячеек, определенных аргументом String_Expression.

Дополнительные сведения

В многомерных выражениях условие вычисления, заданное свойством CONDITION, обрабатывается только один раз. Однократная обработка позволяет повысить производительность при расчете нескольких определений вычисляемых ячеек, особенно если вычисляемые ячейки перекрываются на различных этапах обработки куба.

Время выполнения этой единственной обработки зависит от области определения вычисляемых ячеек, заданной при создании определения:

  • Если определение было создано в глобальной области как часть куба, многомерное выражение обрабатывает условие вычисления при обработке куба. Если ячейки каким-либо образом изменяются внутри куба, и если они включены во вложенный куб вычисления в определении вычисляемых ячеек, условие вычисления может оставаться неточным до повторной обработки куба. Например, ячейки могут изменяться при обратной записи. Условие вычисления обрабатывается повторно при повторной обработке куба.

  • Если определение было создано в области сеанса, многомерное выражение обрабатывает условие вычисления при получении инструкции в течение сеанса. Как и в случае определения вычисляемых ячеек в глобальном контексте, при изменении ячеек условие вычисления может стать неточным для определения выбранных ячеек.

  • Если условие вычисления создано в области сеанса, многомерное выражение обрабатывает его при выполнении запроса. В этом случае также действует условие изменения ячеек, хотя проблемы задержки данных минимальны благодаря малому времени обработки при выполнении запроса многомерных выражений.

С другой стороны, многомерное выражение обрабатывает формулу вычисления всякий раз, когда в кубе выполняется запрос многомерных выражений, работающий с ячейками, входящими в определение вычисляемых ячеек. Такая обработка выполняется независимо от области при создании определения.