Refresh 命令 (TMSL)

适用于:SQL Server 2016 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

处理当前数据库中的对象。
刷新 始终并行运行,除非使用 Sequence 命令 (TMSL) 对其进行限制。

可以在数据刷新操作期间替代某些对象的某些属性:

  • 更改 Partition 对象的 QueryDefinition 属性,以使用动态筛选器表达式导入数据。

  • DataSource 对象的 ConnectionString 属性中,作为 Refresh 命令的一部分提供数据源凭据。 这种方法可以被视为更安全,因为凭据是在操作期间临时提供的,而不是存储的。

  • 替代默认 Power BI 语义模型增量刷新策略。

有关这些属性替代的插图,请参阅本主题中的示例。

注意

与多维处理不同,表格处理没有特殊处理处理错误。

请求

刷新 采用类型参数和对象定义。

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

类型参数设置处理操作的范围。

刷新类型 适用于 说明
full 数据库

分区
对于指定分区、表或数据库中的所有分区,刷新数据并重新计算所有依赖项。 对于计算分区,重新计算此分区及其所有依赖项。
clearValues 数据库

分区
清除此对象及其所有依赖项内的值。
计算 数据库

分区
仅当需要时,重新计算此对象及其所有依赖项。 此值不会强制重新计算,可变公式除外。
dataOnly 数据库

分区
刷新此对象内的数据并清除所有依赖项。
automatic 数据库

分区
如果对象需要刷新并重新计算,则刷新并重新计算对象及其所有依赖项。 如果分区处于“就绪”以外的状态,则应用。
add 分区 将数据追加到此分区并重新计算所有依赖项。 此命令仅对常规分区有效,不用于计算分区。
整理 数据库
在指定的表中对数据进行碎片整理。 在表中添加或删除数据时,每一列的字典都会受到污染,会出现实际列值中不再存在的值。 碎片整理选项将清除不再使用的字典中的值。

可以刷新以下对象:

数据库对象 (TMSL) 处理数据库。

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

tables 对象 (TMSL) 处理单个表。

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

分区对象 (TMSL) 处理表中的单个分区。

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

可选参数

对于 Power BI 语义模型,可以将以下参数添加到 TMSL 刷新命令,以替代默认的增量刷新行为:

  • applyRefreshPolicy - 如果表已定义增量刷新策略,applyRefreshPolicy 会确定策略是否已应用。 如果策略未应用,完全处理操作会保持分区定义不变,并且会完全刷新表中的所有分区。 默认值为 True。

  • effectiveDate - 如果正在应用增量刷新策略,它需要知道当前日期,才能确定历史范围和增量范围的滚动窗口范围。 使用 effectiveDate 参数,可以重写当前日期。 这对于将数据增量刷新到过去或未来某个日期的测试、演示和业务方案(如未来预算)十分有用。 默认值是当前日期。

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

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

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

下表显示了 当 applyRefreshPolicy 为 true 时, (默认) 包含增量刷新策略的表的每个刷新类型的影响:

刷新类型 影响
full 应用策略,如 Power BI 中的增量刷新中所述。 假设以前的刷新操作已创建历史分区,下面将介绍一个摘要:
- 如果需要,会将新分区添加到增量范围。
- 如果未定义 pollingExpression 来检测数据更改,则增量范围中的所有分区将完全刷新。
- 如果定义了 pollingExpression,则会针对增量范围中的每个分区对其进行评估。 只有返回与上一次刷新操作不同的轮询结果的轮询结果才会完全刷新。
- 无论历史分区是否已清除数据,都不会刷新历史分区。
- 删除范围外的历史分区。
- 重新计算受影响的分区和依赖项。
clearValues applyRefreshPolicy 不会影响行为。
计算 applyRefreshPolicy 不会影响行为。
dataOnly 与 type=full 相同,但未重新计算受影响的分区和依赖项。
automatic 与 type=full 相同,但增量范围内的分区使用 type=automatic 刷新。
add applyRefreshPolicy 不会影响行为。
整理 applyRefreshPolicy 不会影响行为。

响应

命令成功时返回空结果。 否则,将返回 XMLA 异常。

示例

重写分区的 ConnectionStringQueryDefinition

{
  "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"
          }
        ]
      }
    ]
  }
}

使用情况 (终结点)

此命令元素用于通过 XMLA 终结点 (XMLA) 调用的 Execute 方法的语句中,以下列方式公开:

  • 作为 SQL Server Management Studio (SSMS) 中的 XMLA 窗口

  • 作为 invoke-ascmd PowerShell cmdlet 的输入文件

  • 作为 SSIS 任务或SQL Server 代理作业的输入

可以从 SSMS 为此命令生成现成的脚本。 例如,可以在“处理”对话框中单击“ 脚本 ”。