Compartir a través de


UPDATE CUBE (MDX)

Actualiza el valor de una celda hoja o no hoja especificada en un cubo, asignando opcionalmente el valor de una celda no hoja especificada entre las celdas hoja dependientes.

Sintaxis

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
    Cadena válida que proporciona el nombre de un cubo.

  • Tuple_Expression
    Expresión MDX válida que devuelve una tupla.

  • New_Value
    Expresión numérica válida.

  • Weight_Expression
    Expresión numérica MDX (Expresiones multidimensionales) válida que devuelve un valor decimal entre 0 y 1.

Notas

La celda especificada por la expresión de tupla puede ser cualquier celda válida del espacio multidimensional (es decir, la celda no tiene que ser una celda hoja). Sin embargo, la celda debe agregarse con la función de agregado Sum y no debe incluir un miembro calculado en la tupla que se utiliza para identificar la celda.

Puede ser de utilidad considerar la instrucción UPDATE CUBE como una subrutina que generará automáticamente una serie de operaciones de reescritura de celdas individuales en celdas hoja y celdas no hoja que se resumirán en una suma especificada.

La siguiente tabla describe los métodos de asignación.

Método de asignación

Descripción

USE_EQUAL_ALLOCATION

Cada celda hoja que contribuye a la celda actualizada se asignará un valor igual basado en la siguiente expresión:

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

USE_EQUAL_INCREMENT

Cada celda hoja que contribuye a la celda actualizada se cambiará de acuerdo con la siguiente expresión:

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

USE_WEIGHTED_ALLOCATION

A cada celda hoja que contribuye a la celda actualizada se asignará un valor igual basado en la siguiente expresión:

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

USE_WEIGHTED_INCREMENT

Cada celda hoja que contribuye a la celda actualizada se cambiará de acuerdo con la siguiente expresión:

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

Si no se especifica una expresión de peso, la instrucción UPDATE CUBE utiliza de forma implícita la siguiente expresión:

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

Una expresión de tipo weight debe expresarse como un valor decimal entre cero (0) y 1. Este valor especifica la proporción del valor asignado que se desea asignar a las celdas hoja afectadas por la asignación. El programador de la aplicación cliente es el responsable de crear expresiones con valores agregados de resumen que sean iguales al valor asignado de la expresión.

Nota de advertenciaAdvertencia

La aplicación cliente debe considerar la asignación de todas las dimensiones de forma simultánea para evitar posibles resultados inesperados, incluidos los valores de resumen incorrectos o los datos incoherentes.

Las asignaciones UPDATE CUBE deben considerarse atómicas para fines transaccionales. Eso significa que si alguna de las operaciones de asignación no tiene éxito por alguna razón, como un error en una fórmula o una infracción de seguridad, se producirá un error de toda la operación UPDATE CUBE. Antes de procesar los cálculos de las operaciones de asignación individuales, se toma una instantánea de los datos para garantizar que los cálculos resultantes sean correctos.

Nota de advertenciaAdvertencia

Cuando se utiliza en una medida que contiene enteros, el método USE_WEIGHTED_ALLOCATION puede devolver resultados imprecisos causados por cambios en el redondeo incremental.

Nota importanteImportante

Si las celdas actualizadas no se superponen, se puede utilizar la propiedad de la cadena de conexión Update Isolation Level para mejorar el rendimiento de UPDATE CUBE.