共用方式為


重新整理指令 (TMSL)

適用於: SQL Server 2016 和更新版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

處理目前資料庫中的物件。
重新整理 一律以平行方式執行,除非您使用 Sequence 命令 (TMSL)進行節流。

您可以在資料重新整理作業期間覆寫某些物件的一些屬性:

  • 變更 Partition 物件的 QueryDefinition 屬性,以使用即時篩選表達式匯入數據。

  • DataSource 物件的 ConnectionString 屬性中,提供數據源認證做為 Refresh 命令的一部分。 這種方法可以視為更安全,因為認證會提供並暫時用於作業期間,而不是儲存。

  • 覆寫預設 Power BI 語意模型累加式重新整理原則。

如需這些屬性覆寫的圖例,請參閱本主題中的範例。

注意

與多維度處理不同,表格式處理沒有特殊處理錯誤。

請求

Refresh 接受類型參數和物件定義。

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

類型 參數會設定處理作業的範圍。

重新整理類型 適用於 描述
滿 資料庫
桌子
分區
針對指定之數據分割、數據表或資料庫中的所有分割區,重新整理數據並重新計算所有相依專案。 針對計算分割區,重新計算數據分割及其所有相依專案。
clearValues 資料庫
桌子
分區
清除這個物件及其所有相依專案中的值。
資料庫
桌子
分區
重新計算此物件及其所有相依專案,但前提是需要。 除了揮發性公式之外,這個值不會強制重新計算。
dataOnly 資料庫
桌子
分區
重新整理此物件中的數據,並清除所有相依專案。
自動 資料庫
桌子
分區
如果需要重新整理和重新計算物件,請重新整理並重新計算物件及其所有相依專案。 如果分割區處於就緒以外的狀態,則適用 。
分區 將數據附加至此分割區,並重新計算所有相依性。 此命令僅適用於一般分割區,不適用於計算分割區。
重組 資料庫
桌子
重組指定數據表中的數據。 當數據加入數據表或從數據表中移除數據時,每個數據行的字典可能會因為實際數據行值中不再存在的值而受到污染。 重組選項會清除不再使用字典中的值。

您可以重新整理下列物件:

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 – 如果數據表已定義累加式重新整理原則,applyRefreshPolicy 會判斷是否已套用原則。 如果未套用原則,進程完整作業將會讓分割區定義保持不變,而且數據表中的所有分割區都會完全重新整理。 默認值為 true。

  • effectiveDate – 如果套用累加式重新整理原則,它必須知道目前的日期,才能判斷歷程記錄範圍和增量範圍的滾動視窗範圍。 effectiveDate 參數可讓您覆寫目前的日期。 這適用於測試、示範和商務案例,其中數據會累加地重新整理到過去或未來的日期(例如,未來的預算)。 預設值為目前的日期。

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

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

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

下表顯示 applyRefreshPolicy 對於包含累加式重新整理原則之數據表的每個重新整理類型的影響:

重新整理類型 衝擊
滿 原則會套用,如 Power BI 中的累加式重新整理 中所述,。 假設先前的重新整理作業已建立歷程記錄數據分割,請在這裡描述摘要:
- 視需要將新的分割區新增至累加範圍。
- 如果未定義任何 pollingExpression 來偵測數據變更,則累加範圍中的所有分割區都會完整重新整理。
- 如果定義了 pollingExpression,則會針對累加範圍中的每個分割進行評估。 只有相較於先前重新整理作業傳回不同輪詢結果的輪詢結果,才會完整重新整理。
- 不論數據是否已清除,歷程記錄數據分割都不會重新整理。
- 刪除超出範圍的歷程記錄數據分割。
- 重新計算受影響的分割區和相依性。
clearValues applyRefreshPolicy 不會影響行為。
applyRefreshPolicy 不會影響行為。
dataOnly 與 type=full 相同,但不會重新計算受影響的分割區和相依專案。
自動 與 type=full 相同,但累加範圍中的數據分割會使用 type=automatic 重新整理。
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": {
    "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) 呼叫的語句中,以下列方式公開:

  • SQL Server Management Studio 中的 XMLA 視窗 (SSMS)

  • 作為 invoke-ascmd PowerShell Cmdlet 的輸入檔

  • 做為 SSIS 工作或 SQL Server Agent 作業的輸入

您可以從 SSMS 產生此命令的現成腳本。 例如,您可以在 [處理] 對話框中按兩下 文稿