共用方式為


.alter materialized-view

改變具體化檢視可用於變更具體化檢視的查詢,同時保留檢視中的現有數據。

警告

更改具體化檢視時,請特別小心。 不正確的使用可能會導致數據遺失。

權限

您必須至少有 具體化檢視管理員 許可權才能執行此命令。

語法

.altermaterialized-view [ with(PropertyName = PropertyValue,...)] MaterializedViewName SourceTableName查詢on table{ }

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
PropertyNamePropertyValue string 名稱與值組形式的屬性清單,來自支援的屬性清單
MaterializedViewName string ✔️ 具體化檢視的名稱。
SourceTableName string ✔️ 定義檢視的來源數據表名稱。
查詢 string ✔️ 具體化檢視的查詢定義。

支援的屬性

PropertyName = PropertyValue) 子句支援with(下列屬性。 所有屬性都是選擇性的。

名稱 類型​​ 描述
lookback timespan 僅適用於arg_maxarg_min//take_any具體化檢視。 它會限制預期重複項目的時間週期。 例如,如果在檢視上 arg_max 指定了 6 小時的回溯,新擷取記錄與現有記錄之間的重複資料刪除只會考慮最多 6 小時前擷取的記錄。

回溯相對於 ingestion_time。 不正確地定義回溯期間可能會導致具體化檢視中的重複專案。 例如,如果特定索引鍵的記錄在擷取相同索引鍵的記錄之後 10 小時內嵌,且回溯設定為 6 小時,該索引鍵會在檢視中重複。 回溯期間會同時套用具體化時間和查詢時間
autoUpdateSchema bool 是否要自動更新源數據表上的檢視變更。 預設值為 false。 此選項僅適用於 類型的 arg_max(Timestamp, *)/arg_min(Timestamp, *)/take_any(*) 檢視(只有當數據行的自變數為 *時)。 如果此選項設定為 true,源數據表的變更將會自動反映在具體化檢視中。
dimensionTables 陣列 包含檢視中維度數據表數位的動態自變數。 請參閱 查詢參數
folder string 具體化檢視的資料夾。
docString string 記錄具體化檢視的字串。

傳回

輸出架構:

名稱 類型​​ Description
Name string 具體化檢視的名稱。
SourceTable string 定義檢視的來源數據表名稱。
查詢 string 具體化檢視的查詢定義。
MaterializedTo datetime 源數據表中具體化ingestion_time() 時間戳上限。 如需詳細資訊,請參閱 具體化檢視的運作方式。
LastRun datetime 上次執行具體化的時間。
LastRunResult string 上次執行的結果。 傳 Completed 回成功執行,否則 Failed傳回 。
IsHealthy bool true 當檢視視為狀況良好時, false 否則為 。 如果檢視已成功具體化到最後一小時(MaterializedToago(1h)大於 ),則檢視會視為狀況良好。
IsEnabled bool true 啟用檢視時(請參閱 停用或啟用具體化檢視)。
資料夾 string 建立具體化檢視的資料夾。
DocString string 指派給具體化檢視的描述。
AutoUpdateSchema bool 是否啟用檢視以進行自動更新。
EffectiveDateTime datetime 檢視的有效日期時間,在建立期間決定 (請參閱 .create materialized-view)。
回顧 timespan 時間範圍會限制預期重複項目的時間週期。

範例

修改具體化檢視的查詢定義

下列命令會修改具體化檢視 MyView 的查詢定義:

.alter materialized-view MyView on table MyTable
{
    MyTable | summarize arg_max(Column3, *) by Column1
}

輸出

名稱 SourceTable 查詢 MaterializedTo LastRun LastRunResult IsHealthy IsEnabled 資料夾 DocString AutoUpdateSchema EffectiveDateTime 回顧
MyView MyTable MyTable |summarize arg_max(Column3, *) by Column1 2023-02-26T16:40:03.3345704Z 2023-02-26T16:44:15.9033667Z 已完成 true true false 2023-02-23T14:01:42.5172342Z

使用案例

  • 將匯總新增至檢視 - 例如,藉由將檢視查詢變更為 ,將匯總新增avgT | summarize count(), min(Value) by IdT | summarize count(), min(Value), avg(Value) by Id
  • 變更摘要運算子以外的運算符。 例如,藉由將 變更 T | summarize arg_max(Timestamp, *) by UserT | where User != 'someone' | summarize arg_max(Timestamp, *) by User來篩選掉某些記錄。
  • 因為源數據表中的變更,因此不會變更查詢。 例如,假設的檢視 T | summarize arg_max(Timestamp, *) by Id未設定為 autoUpdateSchema (請參閱 .create materialized-view 命令)。 如果從檢視的源數據表加入或移除數據行,則會自動停用檢視。 使用完全相同的查詢執行alter命令,以變更具體化檢視的架構,以配合新的資料表架構。 使用 啟用具體化檢視命令,在變更之後仍必須明確啟用檢視

限制

  • 不支援變更:

    • 依表達式對具體化檢視群組所做的變更。
    • 變更數據行類型。
    • 重新命名數據行。 例如,將的檢視 T | summarize count() by Id 變更為 T | summarize Count=count() by Id 卸除數據行 count_ ,並建立新的數據行 Count,其一開始只包含 Null。
  • 對現有資料的影響:

    • 改變具體化檢視不會影響現有的數據。
    • 將篩選新增至查詢只會套用至新擷取的記錄,而且不會變更已經具體化的記錄。
      • 新數據行會接收所有現有記錄的 Null,直到在 alter 命令修改 Null 值之後擷取的記錄為止。
      • 例如:的 T | summarize count() by bin(Timestamp, 1d) 檢視會變更為 T | summarize count(), sum(Value) by bin(Timestamp, 1d)。 對於在變更檢視之前已經處理記錄的特定 Timestamp=T 數據,數據 sum 行會包含部分數據。 此檢視只會包含更改執行之後處理的記錄。