CREATE MATERIALIZED VIEW
説明
マテリアライズドビューを作成します。マテリアライズドビューの使用情報については、 Synchronous materialized view および Asynchronous materialized view を参照してください。
注意
ベーステーブルが存在するデータベースで CREATE MATERIALIZED VIEW 権限を持つユーザーのみがマテリアライズドビューを作成できます。
マテリアライズドビューの作成は非同期操作です。このコマンドが正常に実行されると、マテリアライズドビューの作成タスクが正常に送信されたことを示します。データベース内の同期マテリアライズドビューの構築状況は SHOW ALTER MATERIALIZED VIEW コマンドで確認でき、非同期マテリアライズドビューの状況は Information Schema のメタデータビュー tasks および task_runs をクエリすることで確認できます。
StarRocks は v2.4 から非同期マテリアライズドビューをサポートしています。以前のバージョンの同期マテリアライズドビューとの主な違いは次のとおりです:
| シングルテーブル集計 | マルチテーブルジョイン | クエリの書き換え | リフレッシュ戦略 | ベーステーブル | |
|---|---|---|---|---|---|
| ASYNC MV | はい | はい | はい |
| 複数のテーブルから:
|
| SYNC MV (Rollup) | 集計関数の選択肢が限られている | いいえ | はい | データロード中の同期リフレッシュ | Default catalog 内の単一テーブル |
同期マテリアライズドビュー
構文
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [database.]<mv_name>
[COMMENT ""]
[PROPERTIES ("key"="value", ...)]
AS
<query_statement>
角括弧 [] 内のパラメータはオプションです。
パラメータ
mv_name (必須)
マテリアライズドビューの名前。命名要件は次のとおりです:
- 名前は文字 (a-z または A-Z)、数字 (0-9)、またはアンダースコア (_) で構成され、文字で始まる必要があります。
- 名前の長さは 64 文字を超えてはなりません。
- 名前は大文字と小文字を区別します。
COMMENT (オプション)
マテリアライズドビューに対するコメント。COMMENT は mv_name の後に配置する必要があります。そうでない場合、マテリアライズドビューは作成できません。
query_statement (必須)
マテリアライズドビューを作成するためのクエリステートメント。その結果がマテリアライズドビューのデータになります。構文は次のとおりです:
SELECT select_expr[, select_expr ...]
[WHERE where_expr]
[GROUP BY column_name[, column_name ...]]
[ORDER BY column_name[, column_name ...]]
-
select_expr (必須)
クエリステートメント内のすべての列、つまりマテリアライズドビューのスキーマ内のすべての列。このパラメータは次の値をサポートします:
SELECT a, abs(b), min(c) FROM table_aのような単純な列または集計列。ここでa、b、cはベーステーブル内の列名です。マテリアライズドビューの列名を指定しない場合、StarRocks は自動的に列に名前を割り当てます。SELECT a+1 AS x, b+2 AS y, c*c AS z FROM table_aのような式。ここでa+1、b+2、c*cはベーステーブルの列を参照する式であり、x、y、zはマテリアライズドビューの列に割り当てられたエイリアスです。
注意
select_exprには少なくとも 1 つの列を指定する必要があります。- 集計関数を使用して同期マテリアライズドビューを作成する場合、GROUP BY 句を指定し、
select_exprに少なくとも 1 つの GROUP BY 列を指定する必要があります。 - 同期マテリアライズドビューは、JOIN や GROUP BY の HAVING 句などの句をサポートしていません。
- v3.1 以降、各同期マテリアライズドビューは、ベーステーブルの各列に対して複数の集計関数をサポートできます。たとえば、
select b, sum(a), min(a) from table group by bのようなクエリステートメント。 - v3.1 以降、同期マテリアライズドビューは SELECT および集計関数の複雑な式をサポートします。たとえば、
select b, sum(a + 1) as sum_a1, min(cast (a as bigint)) as min_a from table group by bやselect abs(b) as col1, a + 1 as col2, cast(a as bigint) as col3 from tableのようなクエリステートメント。同期マテリアライズドビューで使用される複雑な式には次の制限があります:- 各複雑な式にはエイリアスが必要であり、ベーステーブルのすべての同期マテリアライズドビュー間で異なる複雑な式には異なるエイリアスを割り当てる必要があります。たとえば、
select b, sum(a + 1) as sum_a from table group by bとselect b, sum(a) as sum_a from table group by bのクエリステートメントは、同じベーステーブルの同期マテリアライズドビューを作成するために使用できません。複雑な式に異なるエイリアスを設定できます。 - 複雑な式を使用して作成された同期マテリアライズドビューによってクエリが書き換えられたかどうかを確認するには、
EXPLAIN <sql_statement>を実行します。詳細については、 Query analysis を参照してください。
- 各複雑な式にはエイリアスが必要であり、ベーステーブルのすべての同期マテリアライズドビュー間で異なる複雑な式には異なるエイリアスを割り当てる必要があります。たとえば、
-
WHERE (オプション)
v3.1.8 以降、同期マテリアライズドビューは、マテリアライズドビューに使用される行をフィルタリングする WHERE 句をサポートします。
-
GROUP BY (オプション)
クエリの GROUP BY 列。このパラメータが指定されていない場合、デフォルトでデータはグループ化されません。
-
ORDER BY (オプション)
クエリの ORDER BY 列。
- ORDER BY 句の列は、
select_exprの列と同じ順序で宣言する必要があります。 - クエリステートメントに GROUP BY 句が含まれている場合、ORDER BY 列は GROUP BY 列と同一でなければなりません。
- このパラメータが指定されていない場合、システムは次のルールに従って ORDER BY 列を自動的に補完します:
- マテリアライズドビューが AGGREGATE タイプの場合、すべての GROUP BY 列が自動的にソートキーとして使用されます。
- マテリアライズドビューが AGGREGATE タイプでない場合、StarRocks はプレフィックス列に基づいてソートキーを自動的に選択します。
- ORDER BY 句の列は、