.create-or-alter materialized-view
適用於: ✅Microsoft網狀架構✅Azure 數據總管
建立具體化檢視或改變現有的具體化檢視。
權限
您必須至少有 具體化檢視管理員 許可權才能執行此命令。
語法
.create-or-alter
materialized-view
[ with
(
PropertyName =
PropertyValue,
...)
] MaterializedViewName SourceTableName 查詢on table
{
}
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
PropertyName、 PropertyValue | 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_max arg_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_max arg_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 否則為 。 如果檢視已成功具體化到最後一小時(MaterializedTo ago(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
行會包含部分數據。 此檢視只會包含更改執行之後處理的記錄。