Изменение данных MDX (многомерных выражений) — использование обратной записи куба

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Вы обновляете куб с помощью инструкции 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 CUBE можно использовать свойство строки подключения Update Isolation Level. Дополнительные сведения см. в разделе ConnectionString.

Example

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

  1. Включите обратную запись для группы мер "Целевые показатели продаж" в базе данных Adventure Works. В Management Studio щелкните правой кнопкой мыши на группу мер, наведите указатель мыши на Write Back Options, выберите «Включить обратную запись».

    В папке "Обратная запись" должна появиться новая таблица. Имя таблицы — WriteTable_Fact квота продаж.

  2. Откройте окно запроса MDX. Выполните следующую инструкцию 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. Теперь вы должны увидеть нулевые значения для квот.

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

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

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

Условия ошибки

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

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

Влияние изменений куба

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

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

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

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

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

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

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

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

  • Удаление атрибута или его иерархии атрибутов, если атрибут включен в обратную запись. Это включает явное удаление атрибута или его иерархию атрибутов или удаление родительского измерения атрибута.

  • Удаление меры, включенной в обратную запись.

  • Добавление атрибута без уровня (все) в измерение, включенное в обратную запись.

  • Изменение детализации измерения для измерения, включенного в обратную запись.

См. также

Изменение данных (MDX)