.create-or-alter materialized-view
具体化されたビューを作成するか、既存の具体化されたビューを変更します。
アクセス許可
このコマンドを実行するには、少なくとも Materialized View Admin アクセス許可が必要です。
構文
.create-or-alter
materialized-view
[ with
(
PropertyName =
PropertyValue,
...)
] MaterializedViewName on table
SourceTableName {
Query }
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
PropertyName、 PropertyValue | string |
サポートされるプロパティの一覧から、名前と値のペアの形式のプロパティの一覧。 | |
MaterializedViewName | string |
✔️ | マテリアライズドビューの名。 ビュー名は、同じデータベース内のテーブル名または関数名と競合することはできないため、 identifier の名前付け規則に従う必要があります。 |
SourceTableName | string |
✔️ | ビューが定義されているソース テーブルの名前。 |
クエリ | string |
✔️ | 具体化されたビューのクエリ定義。 |
サポートされるプロパティ
新しいテーブル
テーブルが新しい場合、 with(
PropertyName =
PropertyValue )
で次のプロパティがサポートされます。 すべてのプロパティは省略可能です。
名前 | 種類 | 説明 |
---|---|---|
backfill | bool |
現在 SourceTable (true ) にあるすべてのレコードに基づいてビューを作成するか、これから作成するか (false )。 既定値は false です。 詳細については、「 マテリアライズド ビューのバックフィルを参照してください。 |
effectiveDateTime | datetime |
backfill を使用している場合にのみ関連します。 設定されている場合、作成は datetime より後に取り込まれたレコードでのみバックフィルされます。 backfill も true に設定する必要があります。 このプロパティには datetime リテラルが必要です。たとえば、 effectiveDateTime=datetime(2019-05-01) 。 |
updateExtentsCreationTime | bool |
backfill を使用している場合にのみ関連します。 true に設定されている場合、バックフィル プロセス中に datetime group-by キーに基づいて Extent Creation time が割り当てられます。 詳細については、「 マテリアライズド ビューのバックフィルを参照してください。 |
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 | 配列 | ビュー内のディメンション テーブルの配列を含む動的引数。 Query パラメーターを参照してください。 |
フォルダー | string |
具体化されたビュー*のフォルダー*。 |
docString | string |
具体化されたビューを文書化する文字列。 |
allowMaterializedViewsWithoutRowLevelSecurity | bool |
行レベルのセキュリティ ポリシーが有効になっているテーブルに対して具体化されたビューを作成できるようにします。 |
既存のテーブル
テーブルが既に存在する場合は、 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 |
重複が予想される期間を制限する期間。 |
例
具体化されたビューを作成または変更する
次のコマンドは、ArgMax という名前の具体化された既存のビューを新規作成または変更します。
.create-or-alter materialized-view ArgMax on table T
{
T | summarize arg_max(Timestamp, *) by User
}
出力
Name | SourceTable | クエリ | MaterializedTo | LastRun | LastRunResult | IsHealthy | IsEnabled | フォルダー | 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 と同じように動作します。
詳細については、「 Query パラメーター および Properties 」セクションを参照してください。
制限事項
次の変更はサポートされていません:
- 式別の具体化されたビュー グループに対する変更。
- 列の種類の変更。
- 列名を変更する。 たとえば、
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
列には部分的なデータが含まれます。 このビューには、変更の実行後に処理されたレコードだけが含まれます。