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


Инструкция UPDATE CUBE (многомерные выражения)

Изменения: 17 июля 2006 г.

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

Синтаксис

UPDATE [ CUBE ] Cube_Name 
      SET 
            <update clause> 
           [, <update clause> ...n ]
  
<update clause> ::= 
      Tuple_Expression[.VALUE]= New_Value
      [ 
        NO_ALLOCATION
      | 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. Оно определяет ту часть размещаемого значения, которую требуется присвоить конечным ячейкам, участвующим в размещении. Задачей программиста клиентского приложения является создание выражений, статистических значений, свертки которых будут равны размещаемому значению выражения.

ms145488.Caution(ru-ru,SQL.90).gifВнимание!
Клиентское приложение должно выполнять размещение во всех измерениях параллельно, чтобы избежать возможных непредвиденных результатов, в том числе неправильных значений свертки или несогласованности данных.

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

ms145488.Caution(ru-ru,SQL.90).gifВнимание!
При использовании для меры, содержащей целые значения, метод USE_WEIGHTED_ALLOCATION может возвращать неточные результаты, что обусловлено округлениями при приращениях.

См. также

Другие ресурсы

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

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Измененное содержимое
  • Обновлены синтаксис и аргументы для облегчения понимания.