Manipulación de datos de MDX: UPDATE CUBE

La instrucción UPDATE CUBE se emplea para reescribir datos en cualquier celda de un cubo que se agrega a su primario mediante la agregación SUM. Para obtener más explicación y un ejemplo, vea "Descripción de las asignaciones" en esta entrada de blog: Creación de una aplicación de reescritura con Analysis Services (blog) .

Sintaxis

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

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.

Comentarios

Puede actualizar el valor de una celda hoja o de una celda no hoja especificada de un cubo, asignando opcionalmente el valor de una celda no hoja especificada a través de las celdas hoja dependientes. 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 usa para identificar la celda.

Puede resultar útil pensar en la instrucción UPDATE CUBE como una subrutina que generará automáticamente una serie de operaciones de escritura diferida de celdas individuales en celdas hoja y no hoja que se acumularán en una suma especificada.

A continuación se muestra una descripción de los métodos de asignación.

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

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

USE_EQUAL_INCREMENT: Todas las celdas hoja que contribuyen a la celda actualizada se cambiarán según 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 le asignará un valor igual que se basa en la expresión siguiente.

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

USE_WEIGHTED_INCREMENT: Todas las celdas hoja que contribuyen a la celda actualizada se cambiarán según 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 usa implícitamente la expresión siguiente.

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

Una expresión de peso debería expresarse como un valor decimal entre cero (0) y 1. Este valor especifica la proporción del valor asignado que 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.

Precaución

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.

Cada asignación UPDATE CUBE debe considerarse atómica 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.

Precaución

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.

Importante

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.

Consulte también

ConnectionString
Instrucciones de manipulación de datos de MDX (MDX)