Инструкция UPDATE CUBE (многомерные выражения)
Обновляет значение указанной конечной или неконечной ячейки куба, по желанию размещая значение для указанной неконечной ячейки в зависимых конечных ячейках.
Синтаксис
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 |
В каждой конечной ячейке, которая участвует в обновлении ячейки, размещаются одинаковые значения в соответствии со следующим выражением.
|
USE_EQUAL_INCREMENT |
Значение каждой конечной ячейки, которая участвует в обновлении ячейки, изменяется в соответствии со следующим выражением.
|
USE_WEIGHTED_ALLOCATION |
В каждой конечной ячейке, которая участвует в обновлении ячейки, размещаются одинаковые значения в соответствии со следующим выражением.
|
USE_WEIGHTED_INCREMENT |
Значение каждой конечной ячейки, которая участвует в обновлении ячейки, изменяется в соответствии со следующим выражением.
|
Если выражение веса не указано, инструкция UPDATE CUBE неявно использует следующее выражение:
Weight_Expression = <leaf cell value> / <existing value>
Выражение веса должно быть отображено как десятичное значение от нуля (0) до 1. Оно определяет ту часть размещаемого значения, которую требуется присвоить конечным ячейкам, участвующим в размещении. Задачей программиста клиентского приложения является создание выражений, статистических значений, свертки которых будут равны размещаемому значению выражения.
Внимание! |
---|
Клиентское приложение должно выполнять размещение во всех измерениях параллельно, чтобы избежать возможных непредвиденных результатов, в том числе неправильных значений свертки или несогласованности данных. |
Каждое размещение UPDATE CUBE должно считаться элементарным в смысле транзакций. Это означает, что в случае сбоя при выполнении одной из операций размещения по какой-либо причине (например, вследствие ошибки в формуле или нарушения защиты), вся инструкция UPDATE CUBE завершается ошибкой. Перед обработкой вычислений отдельных операций размещения создается моментальный снимок данных, что обеспечивает правильность итоговых вычислений.
Внимание! |
---|
При использовании для меры, содержащей целые значения, метод USE_WEIGHTED_ALLOCATION может возвращать неточные результаты, что обусловлено округлениями при приращениях. |
Важно! |
---|
Если обновленные ячейки не пересекаются, свойство строки соединения Update Isolation Level может быть использовано для повышения производительности инструкции UPDATE CUBE. |
См. также