Instrução UPDATE CUBE (MDX)
A instrução UPDATE CUBE é usada para fazer write-back de dados para qualquer célula em um cubo que é agregado a seu pai usando a agregação SUM.
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
Uma cadeia de caracteres válida que fornece o nome de um cubo.Tuple_Expression
Uma linguagem MDX válida que retorna uma tupla.New_Value
Uma expressão numérica válida.Weight_Expression
Uma expressão numérica MDX válida que retorna um valor decimal entre 0 e 1.
Você pode atualizar o valor de uma célula folha ou célula não folha especificada em um cubo, alocando opcionalmente o valor para uma célula não folha especificada em células folha dependentes. A célula especificada pela expressão de tupla pode ser qualquer célula válida no espaço multidimensional (ou seja, a célula não tem de ser uma célula folha). Entretanto, a célula deve ser agregada à função de agregação Sum e não deve incluir um membro calculado na tupla que é usada para identificar a célula.
Pode ser útil considerar a instrução UPDATE CUBE como uma sub-rotina que irá gerar automaticamente uma série de operações de write-back de células individuais para células folha e não folha que acumularão em uma determinada soma.
A tabela a seguir descreve os métodos de alocação.
Método de alocação |
Descrição |
---|---|
USE_EQUAL_ALLOCATION |
Toda a célula folha que contribui para a célula atualizada receberá um valor igual com base na seguinte expressão:
|
USE_EQUAL_INCREMENT |
Toda a célula folha que contribui para a célula atualizada será modificada de acordo com a seguinte expressão:
|
USE_WEIGHTED_ALLOCATION |
Toda a célula folha que contribui para a célula atualizada receberá um valor igual com base na seguinte expressão:
|
USE_WEIGHTED_INCREMENT |
Toda a célula folha que contribui para a célula atualizada será modificada de acordo com a seguinte expressão:
|
Se uma expressão de peso não for especificada, a instrução UPDATE CUBE usará implicitamente a expressão seguinte:
Weight_Expression = <leaf cell value> / <existing value>
Uma expressão de peso deve ser expressa como um valor decimal entre zero (0) e 1. Esse valor especifica a razão do valor alocado que você deseja atribuir às células folha afetadas pela alocação. O programador de aplicativo cliente tem a responsabilidade de criar expressões cujos valores de rollup agregados serão iguais ao valor alocado da expressão.
Cuidado |
---|
O aplicativo cliente deve considerar a alocação de todas as dimensões simultaneamente a fim de evitar possíveis resultados inesperados, inclusive valores de rollup incorretos ou dados inconsistentes. |
Cada alocação UPDATE CUBE deve ser considerada atômica para propósitos transacionais. Isso significa que se qualquer uma das operações de alocação falhar por alguma razão, como um erro em uma fórmula ou uma violação de segurança, toda a operação UPDATE CUBE falhará. Antes que os cálculos das operações de alocação individuais sejam processados, um instantâneo dos dados é considerado para garantir que os cálculos resultantes sejam corretos.
Cuidado |
---|
Quando usado em uma medida que contenha inteiros, o método USE_WEIGHTED_ALLOCATION pode produzir resultados imprecisos decorrentes de alterações de arredondamento incremental. |
Importante |
---|
Quando células atualizadas não se sobrepõem, a propriedade de cadeia de conexão Update Isolation Level pode ser usada para melhorar o desempenho de UPDATE CUBE. |