.alter materialized-view

具体化されたビューを変更すると、そのビューの既存のデータを保持したまま、具体化されたビューのクエリを変更することができます。

警告

具体化されたビューを変更する場合は、特に注意が必要です。 正しくない方法で使用すると、データが失われるおそれがあります。

アクセス許可

このコマンドを実行するには、少なくとも Materialized View Admin アクセス許可が必要です。

構文

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

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
PropertyNamePropertyValue 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 時間まで正常にマテリアライズされた場合に正常と見なされます (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

ユース ケース

  • ビューに集計を追加します。たとえば、ビュー クエリを T | summarize count(), min(Value), avg(Value) by Id に変更して、avg 集計を T | summarize count(), min(Value) by Id に追加します。
  • summarize 演算子以外の演算子を変更します。 たとえば、 T | summarize arg_max(Timestamp, *) by UserT | 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 列には部分的なデータが含まれます。 このビューには、変更の実行後に処理されたレコードだけが含まれます。