Операции с данными многомерных выражений — UPDATE CUBE

Инструкция UPDATE CUBE используется для обратной записи данных в любую ячейку куба, которая суммируется с родительским элементом с помощью агрегатного выражения SUM. Дополнительные сведения и пример см. в разделе "Основные сведения о выделении" в этой записи блога: создание приложения обратной записи с помощью служб Analysis Services (блог).

Синтаксис

  
UPDATE [ CUBE ] Cube_Name   
   SET   
            <update clause>   
           [, <update clause> ...n ]  
  
<update clause> ::=   
      Tuple_Expression[.VALUE]= New_Value  
      [   
        USE_EQUAL_ALLOCATION   
        | USE_EQUAL_INCREMENT   
        | USE_WEIGHTED_ALLOCATION [ BY Weight_Expression]   
        | USE_WEIGHTED_INCREMENT [ BY Weight_Expression]  
      ]  

Аргументы

Cube_Name
Допустимое строковое выражение, возвращающее имя куба.

Tuple_Expression
Допустимое многомерное выражение, возвращающее кортеж.

New_Value
Допустимое числовое выражение.

Weight_Expression
Допустимое числовое многомерное выражение, возвращающее десятичное значение от 0 до 1.

Замечания

Можно обновить значение указанной конечной или неконечной ячейки куба, по желанию размещая значение для указанной неконечной ячейки в зависимых конечных ячейках. Ячейка, указанная кортежным выражением, может представлять любую ячейку многомерного пространства (другими словами, ячейка необязательно должна быть конечной). Однако ячейка должна быть агрегирована с помощью статистической функции Sum и не должна содержать вычисляемый элемент в кортеже, который используется для идентификации ячейки.

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

Ниже приведено описание методов выделения.

USE_EQUAL_ALLOCATION: каждая конечная ячейка, которая вносит свой вклад в обновленную ячейку, будет назначена равное значение на основе следующего выражения.

<leaf cell value> =   
<New Value> / Count(leaf cells that are contained in <tuple>)  

USE_EQUAL_INCREMENT. Каждая конечная ячейка, которая вносит вклад в обновленную ячейку, будет изменена в соответствии со следующим выражением.

<leaf cell value> = <leaf cell value> +   
(<New Value > - <existing value>) /  
Count(leaf cells contained in <tuple>)  

USE_WEIGHTED_ALLOCATION. Каждая конечная ячейка, которая вносит свой вклад в обновленную ячейку, будет назначена равное значение, основанное на следующем выражении.

<leaf cell value> = < New Value> * Weight_Expression  

USE_WEIGHTED_INCREMENT: каждая конечная ячейка, которая вносит вклад в обновленную ячейку, будет изменена в соответствии со следующим выражением.

<leaf cell value> = <leaf cell value> +   
(<New Value> - <existing value>)  * Weight_Expression  

Если выражение веса не указано, инструкция UPDATE CUBE неявно использует следующее выражение.

Weight_Expression = <leaf cell value> / <existing value>  

Выражение веса должно быть отображено как десятичное значение от нуля (0) до 1. Оно определяет ту часть размещаемого значения, которую требуется присвоить конечным ячейкам, участвующим в размещении. Задачей программиста клиентского приложения является создание выражений, статистических значений, свертки которых будут равны размещаемому значению выражения.

Внимание

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

Каждое выделение КУБА UPDATE должно считаться атомарным для транзакционных целей. Это означает, что в случае сбоя при выполнении одной из операций размещения по какой-либо причине (например, вследствие ошибки в формуле или нарушения защиты), вся инструкция UPDATE CUBE завершается ошибкой. Перед обработкой вычислений отдельных операций размещения создается моментальный снимок данных, что обеспечивает правильность итоговых вычислений.

Внимание

При использовании для меры, содержащей целые значения, метод USE_WEIGHTED_ALLOCATION может возвращать неточные результаты, что обусловлено округлениями при приращениях.

Внимание

Если обновленные ячейки не пересекаются, свойство строки подключения Update Isolation Level может быть использовано для повышения производительности инструкции UPDATE CUBE.

См. также

ConnectionString
Инструкции обработки данных многомерных выражений (многомерные выражения)