Partilhar via


Instrução UPDATE CUBE (MDX)

Atualiza 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 por células folha dependentes.

Sintaxe

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]
      ]

Argumentos

  • Cube_Name
    Uma cadeia de caracteres válida que fornece o nome de um cubo.

  • Tuple_Expression
    Uma expressão MDX (Multidimensional Expressions) 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.

Comentários

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 resultarã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:

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

USE_EQUAL_INCREMENT

Toda a célula folha que contribui para a célula atualizada será modificada de acordo com a seguinte expressão:

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

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:

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

USE_WEIGHTED_INCREMENT

Toda a célula folha que contribui para a célula atualizada será modificada de acordo com a seguinte expressão:

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

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.

Observação sobre cuidadosCuidado

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.

Observação sobre cuidadosCuidado

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.

Observação importanteImportante

Quando células atualizadas não se sobrepõem, a propriedade de cadeia de caracteres da conexão Update Isolation Level pode ser usada para aprimorar o desempenho de UPDATE CUBE.

Consulte também

Referência

Outros recursos