Поделиться через


Обратная запись в куб (многомерные выражения)

Для обновления куба используется инструкция UPDATE CUBE . Эта инструкция позволяет записать в кортеж указанное значение. Для эффективного использования инструкции UPDATE CUBE необходимо понимать ее синтаксис, ситуации, в которых может возникнуть ошибка, и влияние обновления на весь куб.

Синтаксис инструкции UPDATE CUBE

Синтаксис инструкции 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>] ]   

Если для кортежа не указан полный набор координат, вместо неуказанных координат используется элемент иерархии по умолчанию. Заданный кортеж должен ссылаться на ячейку, которая содержит статистическое значение, полученное с помощью функции Sum . В качестве координат ячейки нельзя использовать вычисляемые элементы.

Инструкция UPDATE CUBE подобна подпрограмме, выполняющей серию отдельных операций обратной записи в элементарные ячейки. Затем отдельные операции обратной записи сводятся в указанную сумму.

Примечание

Если обновленные ячейки не пересекаются, свойство строки подключения Update Isolation Level может быть использовано для повышения производительности инструкции UPDATE CUBE. Для получения дополнительной информации см. ConnectionString.

Пример

Можно проверить инструкцию UPDATE CUBE с помощью группы мер Sales Targets в кубе Adventure Works. Эта группа мер состоит из мер, суммированных с помощью функции SUM, которая обязательна для UPDATE CUBE.

  1. Разрешение обратной записи для группы мер Sales Targets в базе данных Adventure Works. В среде Management Studio щелкните группу мер правой кнопкой мыши, наведите указатель мыши на пункт Параметры запускаи выберите пункт Включить обратную запись.

    Появится новая таблица обратных записей в папке обратных записей. Имя таблицы — WriteTable_Fact Sales Quota.

  2. Откройте окно запроса многомерных выражений. Чтобы просмотреть исходное значение, выполните следующую инструкцию SELECT.

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

    Появятся квоты продаж по каждому представителю.

  3. Выполните инструкцию обновления куба, чтобы записать новое значение. В этом примере рекомендуется задать значение 0 для квоты продаж. Поскольку новое значение равно 0, не указывайте способ распределения.

    UPDATE CUBE [Adventure Works]   
    SET ([Measures].[Sales Amount Quota], [Employee].[Employee Department].[Department].&[Sales]) = 0  
    
    
  4. Выполните инструкцию SELECT еще раз. Значение для квот теперь будет равно 0.

Значение обратной записи ограничивается текущим сеансом. Чтобы сохранить значение для других пользователей и сеансов, выполните обработку таблицы обратных записей. В среде Management Studio щелкните правой кнопкой мыши WriteTable_Fact Sales Quota и выберите Обработка.

Чтобы указать способ распределения, нужно задать новое значение больше нуля. В этом примере новое значение для квоты продаж равно двум миллионам, а способ распределения распределяет сумму по всем торговым представителям.

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

Ситуации, которые могут привести к ошибке

В следующей таблице описаны причины возможных ошибок обратной записи и их результаты.

Условие возникновения ошибки Результат
Инструкция обновления содержит элементы одного и того же измерения, которые не существуют друг с другом. Обновление не выполняется. Пространство куба не будет содержать ячейку, на которую ссылается инструкция.
Инструкция обновления содержит меру, источником которой является мера беззнакового типа данных. Обновление не выполняется. При приращении необходимо, чтобы мера могла принимать отрицательные значения.
Инструкция обновления содержит меру, которая соответствует не сумме, а другому статистическому выражению. Возникает ошибка.
Попытка обновления вложенного куба. Возникает ошибка.

Зависимость от изменений куба

Следующие изменения не влияют на обратную запись.

  • Обработка куба, групп его мер или измерений.

  • Добавление атрибутов в любое измерение.

  • Добавление нового измерения.

  • Удаление измерения, которое не содержит обратной записи.

  • Добавление, изменение и удаление иерархии.

  • Добавление новой меры.

Следующие изменения нельзя выполнить без удаления данных обратной записи.

  • Удаление атрибута или его иерархии, если атрибут содержится в обратной записи. Под этим подразумевается явное удаление атрибута или его иерархии, либо удаление родительского измерения атрибута.

  • Удаление меры, которая содержится в обратной записи.

  • Добавление атрибута без уровня (All) в измерение, которое содержится в обратной записи.

  • Изменение степени гранулярности измерения, которое содержится в обратной записи.

См. также:

Изменение данных (многомерные выражения)