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


Команда Refresh (TMSL)

Применимо к: SQL Server 2016 и более поздних версий Analysis Services Azure Analysis Services Fabric/Power BI Premium

Обрабатывает объекты в текущей базе данных.
Обновление всегда выполняется параллельно, если не регулировать его с помощью команды последовательности (TMSL).

Некоторые свойства некоторых объектов можно переопределить во время операции обновления данных:

  • Измените свойство QueryDefinition объекта Partition для импорта данных с помощью выражения фильтра на лету.

  • Укажите учетные данные источника данных в рамках команды Refresh в свойстве ConnectionString объекта DataSource . Этот подход можно считать более безопасным, так как учетные данные предоставляются и используются временно в течение операции, а не сохраняются.

  • Переопределите политику добавочного обновления семантической модели Power BI по умолчанию.

Примеры этих переопределений см. в этом разделе.

Примечание

В отличие от многомерной обработки, нет специальной обработки ошибок обработки для табличной обработки.

Запрос

Обновление принимает параметр типа и определение объекта.

    {  
        "refresh": {  
            "description": "Parameters of Refresh command of Analysis Services JSON API",  
            "properties": {  
            "type": {  
                "enum": [  
                "full",  
                "clearValues",  
                "calculate",  
                "dataOnly",  
                "automatic",  
                "add",  
                "defragment"  
                ]  
            },  
            "objects": [  

Параметр type задает область для операции обработки.

Тип обновления. Применяется к Описание
переполненные Базы данных
Таблице
Секция
Обновить данные и пересчитать все зависимые объекты для всех секций в указанной секции, таблице или базе данных. Для вычисления секции пересчитать раздел и все его зависимости.
clearValues Базы данных
Таблице
Секция
Очистка значений в этом объекте и всех его зависимых элементах.
Рассчитать Базы данных
Таблице
Секция
Пересчитать этот объект и все зависимые ресурсы только при необходимости. Это значение не приводит к принудительному повторному вычислению, за исключением временных формул.
dataOnly Базы данных
Таблице
Секция
Обновление данных в этом объекте и очистка его зависимых элементов.
automatic Базы данных
Таблице
Секция
Если объект необходимо обновить и пересчитать, обновить и пересчитать объект и все его зависимости. Применяется, если секция находится в состоянии, отличном от "Готово".
add Секция Добавление данных в эту секцию и пересчет всех зависимых элементов. Эта команда может применяться только к обычным секциям, а не для вычисления секций.
Дефрагментации Базы данных
Таблица
Дефрагментировать данные в указанной таблице. По мере добавления или удаления данных из таблицы словари для каждого столбца могут заполниться значениями, которых на самом деле больше не существует в столбцах. Параметр дефрагментации приведет к очистке более не используемых значений в словарях.

Вы можете обновить следующие объекты:

Объект Database (TMSL) Обработка базы данных.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200"  
      }  
    ]  
  }  
}  

Объект Tables (TMSL) Обработка одной таблицы.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "Date"  
      }  
    ]  
  }  
}  

Объект Partitions (TMSL) Обработка одной секции в таблице.

{  
  "refresh": {  
    "type": "automatic",  
    "objects": [  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota"  
      },  
      {  
        "database": "AdventureWorksTabular1200",  
        "table": "FactSalesQuota",  
        "partition": "FactSalesQuota - 2011"  
      }  
    ]  
  }  
}  

Необязательные параметры

Для семантических моделей Power BI в команду обновления TMSL можно добавить следующие параметры, чтобы переопределить поведение добавочного обновления по умолчанию:

  • applyRefreshPolicy — если для таблицы определена политика добавочного обновления, этот параметр определяет, применяется политика или нет. Если политика не применяется, полная операция обработки не приведет к изменению определений разделов и все разделы в таблице будут обновлены полностью. Значение по умолчанию — true.

  • effectiveDate — если применяется политика добавочного обновления, чтобы определить диапазоны скользящих интервалов для диапазона в прошлом и инкрементного диапазона, необходимо знать текущую дату. Параметр effectiveDate позволяет переопределить текущую дату. Это удобно при тестировании, демонстрации и в бизнес-сценариях, где используется инкрементное обновление данных до даты в прошлом или будущем (например, для бюджетов в будущем). Значение по умолчанию равно текущей дате.

{
  "refresh": {
    "type": "full",

    "applyRefreshPolicy": true,
    "effectiveDate": "12/31/2013",

    "objects": [
      {
        "database": "IR_AdventureWorks", 
        "table": "FactInternetSales" 
      }
    ]
  }
}

В следующей таблице показано влияние, когда applyRefreshPolicy имеет значение true (по умолчанию) на каждый из типов обновления для таблицы, содержащей политику добавочного обновления.

Тип обновления. Влияние
переполненные Политика применяется, как описано в разделе Добавочное обновление в Power BI. Предполагая, что исторические секции уже были созданы с помощью предыдущей операции обновления, ниже приведена сводка:
— При необходимости в добавочный диапазон добавляются новые секции.
— Если для обнаружения изменений данных не определен опросExpression, все секции в добавочном диапазоне обновляются полностью.
— Если определен параметр pollingExpression, он вычисляется для каждой секции в добавочном диапазоне. Полностью обновляются только те, которые возвращают другой результат опроса по сравнению с предыдущей операцией обновления.
— Исторические секции не обновляются независимо от того, были ли они очищены от данных.
— удаляются исторические секции, выпадающие за пределы диапазона.
— Пересчет затронутых секций и зависимых.
clearValues ApplyRefreshPolicy не влияет на поведение.
Рассчитать ApplyRefreshPolicy не влияет на поведение.
dataOnly То же, что и type=full, но без пересчета затронутых секций и зависимых.
automatic Аналогично type=full, но секции в добавочном диапазоне обновляются с помощью type=automatic.
add ApplyRefreshPolicy не влияет на поведение.
Дефрагментации ApplyRefreshPolicy не влияет на поведение.

Ответ

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

Примеры

Переопределите connectionString и QueryDefinition секции.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "AdventureWorksDW2017",
        "table": "DimCustomer"
      }
    ],
    "overrides": [
      {
        "dataSources": [ // Bindings for DataSources​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "dataSource": "SqlServer localhost"
            },
            "connectionString": "Provider=SQLNCLI11.1;Data Source=.;Persist Security Info=True;User ID=YourSQLLogin;Password=YourPassword;Initial Catalog=AdventureWorksDW2017"
          }
        ],
        "partitions": [ // Bindings for Partitions​
          {
            "originalObject": {
              "database": "AdventureWorksDW2017",
              "table": "DimCustomer",
              "partition": "DimCustomer"
            },
            "source": {
              "query": "SELECT * FROM [dbo].[DimCustomer]"
            }
          }
        ]
      }
    ]
  }
}

Область конкретных переопределений, задав для параметра типа значение dataOnly refresh, метаданные остаются нетронутыми.

{
  "refresh": {
    "type": "dataOnly",
    "objects": [
      {
        "database": "TMTestDB",
        "table": "Customer"
      },
      {
        "database": "TMTestDB",
        "table": "Sales"
      }
    ],
    "overrides": [
      {
        "scope": {
          "database": "TMTestDB",
          "table": "Sales"
        },
        "dataSources": [
          {
            "originalObject": {
              "dataSource": "SqlServer sqlcldb2 AS_foodmart_2000"
            },
            "connectionString": "Provider=SQLNCLI11;Data Source=sqlcldb2;Initial Catalog=AS_foodmart_2000;Integrated Security=SSPI;Persist Security Info=false"
          }
        ]
      }
    ]
  }
}

Использование (конечные точки)

Этот командный элемент используется в инструкции вызова метода Execute (XMLA) через конечную точку XMLA, которая предоставляется следующими способами:

  • Как окно XMLA в SQL Server Management Studio (SSMS)

  • Входной файл командлета PowerShell invoke-ascmd

  • В качестве входных данных для задачи служб SSIS или задания агент SQL Server

Вы можете создать готовый скрипт для этой команды из SSMS. Например, можно щелкнуть скрипт в диалоговом окне Обработка.