共用方式為


.create-or-alter materialized-view

適用於: ✅Microsoft網狀架構Azure 數據總管

建立具體化檢視或改變現有的具體化檢視。

權限

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

語法

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

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
PropertyNamePropertyValue string 名稱與值組形式的屬性清單,來自支援的屬性清單
MaterializedViewName string ✔️ 具體化檢視的名稱。 檢視名稱不能與相同資料庫中的數據表或函式名稱衝突,而且必須遵守 標識符命名規則
SourceTableName string ✔️ 定義檢視的來源數據表名稱。
查詢 string ✔️ 具體化檢視的查詢定義。

支援的屬性

新增資料表

如果數據表是新的,PropertyName = PropertyValue )with(支援下列屬性。 所有屬性都是選擇性的。

名稱 類型​​ 描述
回填 bool 是要根據目前 SourceTable 的所有true記錄來建立檢視,還是從現在開始建立檢視。false。 預設值為 false。 如需詳細資訊,請參閱 回填具體化檢視
effectiveDateTime datetime 只有在您使用 backfill時才相關。 如果已設定,則建立只會填入日期時間之後內嵌的記錄。 backfill 也必須設定為 true。 此屬性需要 datetime 常值;例如, effectiveDateTime=datetime(2019-05-01)
updateExtentsCreationTime bool 只有在您使用 backfill時才相關。 如果設定為 true則會在回填程式期間,根據 datetime 群組索引鍵指派範圍建立時間 。 如需詳細資訊,請參閱 回填具體化檢視
lookback timespan 僅適用於arg_maxarg_min//take_any具體化檢視。 它會限制預期重複項目的時間週期。 例如,如果在檢視上 arg_max 指定了 6 小時的回溯,新擷取記錄與現有記錄之間的重複資料刪除只會考慮最多 6 小時前擷取的記錄。

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

現有的資料表

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

範例

建立或改變具體化檢視

下列命令會建立新的或改變名為 ArgMax 的現有具體化檢視:

.create-or-alter materialized-view ArgMax on table T
{
    T | summarize arg_max(Timestamp, *) by User
}

輸出

名稱 SourceTable Query MaterializedTo LastRun LastRunResult IsHealthy IsEnabled Folder DocString AutoUpdateSchema EffectiveDateTime 回顧
ArgMax T T |summarize arg_max(Timestamp, *) by User 2023-02-26T16:40:03.3345704Z 2023-02-26T16:44:15.9033667Z 已完成 true true false 2023-02-23T14:01:42.5172342Z

備註

如果具體化檢視不存在,此命令的行為就像 .create materialized-view 一樣

如需詳細資訊,請參閱 查詢參數屬性 小節。

限制

  • 不支援變更:

    • 依表達式對具體化檢視群組所做的變更。
    • 變更數據行類型。
    • 重新命名數據行。 例如,將的檢視 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 行會包含部分數據。 此檢視只會包含更改執行之後處理的記錄。