Compartir a través de


Usar reescrituras de cubos (MDX)

Los cubos pueden actualizarse mediante la instrucción UPDATE CUBE. Esta instrucción permite actualizar una tupla con un valor específico. Para utilizar de forma eficaz la instrucción UPDATE CUBE a fin de actualizar, un cubo es preciso comprender la sintaxis de la instrucción, las condiciones de error que pueden generarse y el efecto de las actualizaciones en el cubo.

Sintaxis de la instrucción UPDATE CUBE

La siguiente sintaxis describe la instrucción UPDATE CUBE:

UPDATE [CUBE] <Cube_Name> SET <tuple>.VALUE = <value> [,<tuple>.VALUE = <value>...]
 [ USE_EQUAL_ALLOCATION | USE_EQUAL_INCREMENT |
  USE_WEIGHTED_ALLOCATION [BY <weight value_expression>] |
  USE_WEIGHTED_INCREMENT [BY <weight value_expression>] ] 

Si no se especifica un conjunto completo de coordenadas para la tupla, las que no se hayan especificado usarán el miembro predeterminado de la jerarquía. La tupla identificada debe hacer referencia a una celda agregada con la función Sum y no debe utilizar ningún miembro calculado como una de las coordenadas de la celda.

Podría decirse que la instrucción UPDATE CUBE es una subrutina que genera una serie de operaciones de reescritura individuales en celdas atómicas. Todas estas operaciones de reescritura individuales se acumulan después en la suma especificada.

[!NOTA]

Si las celdas actualizadas no se superponen, se puede usar la propiedad de cadena de conexión Update Isolation Level para mejorar el rendimiento de UPDATE CUBE. Para obtener más información, vea ConnectionString.

Ejemplo

Puede probar UPDATE CUBE con el grupo de medida Destinos de venta del cubo de Adventure Works. Este grupo de medida consta de medidas agregadas mediante SUM, que es un requisito para UPDATE CUBE.

  1. Habilite la reescritura para el grupo de medida Destinos de venta de la base de datos Adventure Works. En Management Studio, haga clic con el botón secundario en un grupo de medida, seleccione Opciones de reescritura y elija Habilitar reescritura.

    Debe ver una nueva tabla de reescritura en la carpeta Writeback. El nombre de la tabla es WriteTable_Fact Sales Quota.

  2. Abra una ventana de consulta MDX. Ejecute la siguiente instrucción select para ver el valor original:

    SELECT [Measures].[Sales Amount Quota] on 0 ,
    [Employee].[Employee Department].[Title].&[Sales Representative].children on 1
    FROM [Adventure Works]
    

    Debe ver las cuotas de importe de venta para cada representante.

  3. Ejecute la instrucción update cube para reescribir un nuevo valor. En este ejemplo, vamos a establecer la cuota de importe de venta en 0. Como el nuevo valor es 0, no especifique ningún método de asignación.

    UPDATE CUBE [Adventure Works] 
    SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 0 
    
  4. Vuelva a ejecutar la instrucción SELECT. Ahora debe ver el valor cero para las cuotas.

El valor de reescritura está limitado a la sesión actual. Para conservar el valor entre distintos usuarios y sesiones, procese la tabla de escritura. En Management Studio, haga clic con el botón secundario en WriteTable_Fact Sales Quota y elija Procesar.

Para especificar un método de asignación, el nuevo valor debe ser mayor que cero. En este ejemplo, el nuevo valor de Cuota de importe de venta es dos millones y el método de asignación distribuye el importe entre todos los representantes de ventas.

UPDATE CUBE [Adventure Works] 
SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 2000000 
USE_EQUAL_ALLOCATION

Condiciones de error

En la siguiente tabla se describe lo que puede hacer que una operación de reescritura genere un error y el resultado de tales errores.

Condición de error

Resultado

La actualización incluye miembros de la misma dimensión que no pueden coexistir.

La actualización generará un error. El espacio del cubo no contendrá la celda a la que se hace referencia.

La actualización incluye una medida con origen en una medida de un tipo sin signo.

La actualización generará un error. Los incrementos exigen que la medida acepte valores negativos.

La actualización incluye una medida que agrega elementos distintos de Sum.

Se genera un error.

Se ha intentado realizar la actualización en un subcubo.

Se genera un error.

Efecto de los cambios en el cubo

Los siguientes cambios no tienen ningún efecto sobre las reescrituras:

  • Procesamiento de un cubo, los grupos de medida del cubo o las dimensiones del cubo.

  • Agregar atributos a una dimensión.

  • Agregar una nueva dimensión.

  • Eliminar una dimensión que no incluye la reescritura.

  • Agregar, modificar o eliminar una jerarquía.

  • Agregar una nueva medida.

Los siguientes cambios no pueden llevarse a cabo sin eliminar los datos de la reescritura:

  • Eliminar un atributo, o su jerarquía de atributos, si el atributo está incluido en la reescritura. Esto incluye eliminar explícitamente el atributo, o su jerarquía de atributos, o bien eliminar la dimensión primaria del atributo.

  • Eliminar una medida incluida en la reescritura.

  • Agregar un atributo sin un nivel (All) a una dimensión incluida en la reescritura.

  • Cambiar la granularidad de dimensión de una dimensión incluida en la reescritura.

Vea también

Conceptos

Modificar datos (MDX)