.alter materialized-view
具体化されたビューを変更すると、そのビューの既存のデータを保持したまま、具体化されたビューのクエリを変更することができます。
警告
具体化されたビューを変更する場合は、特に注意が必要です。 正しくない方法で使用すると、データが失われるおそれがあります。
アクセス許可
このコマンドを実行するには、少なくとも Materialized View Admin アクセス許可が必要です。
構文
.alter
materialized-view
[ with
(
PropertyName =
PropertyValue,
...)
] MaterializedViewName on table
SourceTableName{
Query }
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
PropertyName、 PropertyValue | string |
サポートされるプロパティの一覧から、名前と値のペアの形式のプロパティの一覧。 | |
MaterializedViewName | string |
✔️ | マテリアライズドビューの名。 |
SourceTableName | string |
✔️ | ビューが定義されているソース テーブルの名前。 |
クエリ | string |
✔️ | 具体化されたビューのクエリ定義。 |
サポートされるプロパティ
with
(
PropertyName =
PropertyValue)
句では、次のプロパティがサポートされています。 すべてのプロパティは省略可能です。
名前 | 種類 | 説明 |
---|---|---|
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 | 配列 | ビュー内のディメンション テーブルの配列を含む動的引数。 Query パラメーターを参照してください。 |
フォルダー | string |
具体化されたビュー*のフォルダー*。 |
docString | string |
具体化されたビューを文書化する文字列。 |
返品
[Output Schema]\(出力スキーマ\):
名前 | 種類 | 説明 |
---|---|---|
Name | string |
マテリアライズドビューの名。 |
SourceTable | string |
ビューが定義されているソース テーブルの名前。 |
クエリ | string |
具体化されたビューのクエリ定義。 |
MaterializedTo | datetime |
ソース テーブルのマテリアライズド ingestion_time() タイムスタンプの最大値。 詳細については、マテリアライズドビューのしくみ を参照してください。 |
LastRun | datetime |
前回具体化が実行された時刻。 |
LastRunResult | string |
最後の実行の結果。 正常に実行された場合は Completed を返します。それ以外の場合は Failed を返します。 |
IsHealthy | bool |
true ビューが正常と見なされる場合、false それ以外の場合。 ビューは、直近の 1 時間まで正常にマテリアライズされた場合に正常と見なされます (MaterializedTo が ago(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
}
出力
Name | 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 |
ユース ケース
- ビューに集計を追加します。たとえば、ビュー クエリを
T | summarize count(), min(Value), avg(Value) by Id
に変更して、avg
集計をT | summarize count(), min(Value) by Id
に追加します。 - summarize 演算子以外の演算子を変更します。 たとえば、
T | summarize arg_max(Timestamp, *) by User
をT | where User != 'someone' | summarize arg_max(Timestamp, *) by User
に変更して、一部のレコードをフィルターで除外します。 - ソース テーブルが変更されたため、クエリは変更しません。 たとえば、
autoUpdateSchema
に設定されていないT | summarize arg_max(Timestamp, *) by Id
のビューを想定します (.create materialized-view
コマンドを参照)。 ビューのソース テーブルに列が追加または削除されると、ビューは自動的に無効になります。 まったく同じクエリで alter コマンドを実行して、具体化されたビューのスキーマを新しいテーブル スキーマに合わせて変更します。 変更後も、enable materialized view コマンドを使用して、ビューを明示的に有効にする必要があります。
制限事項
次の変更はサポートされていません:
- 式別の具体化されたビュー グループに対する変更。
- 列の種類の変更。
- 列名を変更する。 たとえば、
T | summarize count() by Id
のビューを変更して列count_
T | summarize Count=count() by Id
削除し、最初は null のみを含む新しい列Count
を作成します。
既存のデータへの影響:
- 具体化されたビューを変更しても、既存のデータに影響はありません。
- クエリにフィルターを追加すると、新しく取り込まれたレコードにのみ適用され、既に具体化されているレコードは変更されません。
- alter コマンドの後に取り込まれたレコードが null 値を変更するまで、新しい列は既存のすべてのレコードに対して NULL を受け取ります。
- たとえば、
T | summarize count() by bin(Timestamp, 1d)
のビューがT | summarize count(), sum(Value) by bin(Timestamp, 1d)
に変更されます。 ビューを変更する前にレコードが既に処理されている特定のTimestamp=T
の場合、sum
列には部分的なデータが含まれます。 このビューには、変更の実行後に処理されたレコードだけが含まれます。