CREATE MATERIALIZED VIEW
読み取り要求を最適化し、ベース・テーブルのデータを複製することで書き込み要求を何度も行う必要をなくします。
ベース・テーブルと異なるパーティション分割カラムとクラスター化カラムを許可して読み取り要求を最適化し、テーブルごとにそれぞれ書き込み要求を行う必要をなくします。データがベース・テーブルに書き込まれると、関連付けられたすべてのマテリアライズド・ビューにも自動的に書き込まれます。
制約事項:
- ベース・テーブルのすべてのプライマリ・キーをマテリアライズド・ビューで使用します。
- 必要に応じて、ベース・テーブルの1つの非PRIMARY KEYカラムをマテリアライズド・ビューのPRIMARY KEYに追加できます。
- 静的カラムはPRIMARY KEYとして使用できません。
構文
CREATE MATERIALIZED VIEW [IF NOT EXISTS] [keyspace_name.]view_name AS SELECT column_list FROM [keyspace_name.]base_table_name WHERE column_name IS NOT NULL [AND column_name IS NOT NULL ...] [AND relation...] PRIMARY KEY ( column_list ) [WITH [table_properties] [AND CLUSTERING ORDER BY (cluster_column_name order_option )]]
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ...</schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
- IF NOT EXISTS
- 任意。既に存在するマテリアライズド・ビューを作成しようとすると表示されるエラー・メッセージを抑制します。
SOURCE
コマンドなどでコマンドの実行を継続する目的で使用します。このオプションは、同じ名前のマテリアライズド・ビューが存在することのみを示します。カラム、プライマリ・キー、プロパティ、その他の設定は異なる可能性があります。 - keyspace_name
- 任意。キースペースが選択されていない場合、または別のキースペースでビューを作成する場合は、キースペース名をマテリアライズド・ビュー名の前に入力します。注: ベース・テーブルとマテリアライズド・ビューは常に同じキースペース内にあります。
- view_name
- マテリアライズド・ビュー名に含めることができるのは、英数字とアンダースコアだけです。ビュー名は英数字で始まり、文字数が49文字以下でなければなりません。
- column_list
-
マテリアライズド・ビューに含めるベース・テーブルの非PRIMARY KEYカラムのコンマ区切りリスト。プライマリ・キー・カラムはすべて自動的に含まれます。
静的カラムは指定されている場合でも、マテリアライズド・ビューに含まれません。
- PK_column_name IS NOT NULL
- すべてのプライマリ・キー・カラムについてwhere句にNull値が含まれているかどうかをテストします。各条件は
AND
で区切ります。プライマリ・キーにNull値が含まれている行は、マテリアライズド・ビュー・テーブルに挿入されません。 - AND relation
- 必要な特定のデータを対象とするその他の関係。
- PRIMARY KEY (column_list)
-
データのパーティション分割とクラスター化に使用されるカラムのコンマ区切りリスト。ベース・テーブルの単一の非プライマリ・キー・カラムを追加できます。テーブルのクエリー効率を高めるには、パーティション分割キーとクラスター化キーを変更するなど、プライマリ・キーの順序を必要に応じて変更してください。
パーティション・キー、クラスター化キーの順にリストします。複合パーティション・キーを作成するには、次のようにカラム名を丸かっこで囲みます。PRIMARY KEY ( (PK_column1[, PK_column2...]), clustering_column1[, clustering_column2...])
- table_properties
- 任意。デフォルトとは異なる場合にテーブル・プロパティを指定します。テーブル・プロパティ定義はANDで区切ります。注: ベース・テーブル・プロパティはコピーされません。制約事項: マテリアライズド・ビューでは、変更ログ(CDC)は使用できません。
例
マテリアライズド・ビューcyclist_by_age
をソース・テーブルcyclist_mv
に基づいて作成します。WHERE
句により、age
カラムとcid
カラムがNULL以外の行だけがマテリアライズド・ビューに追加されます。
CREATE MATERIALIZED VIEW cycling.cyclist_by_age AS SELECT age, name, country FROM cycling.cyclist_mv WHERE age IS NOT NULL AND cid IS NOT NULL PRIMARY KEY (age, cid) WITH caching = { 'keys' : 'ALL', 'rows_per_partition' : '100' } AND comment = 'Based on table cyclist' ;