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 )]]
表 1. 凡例
構文規則 説明
大文字 リテラル・キーワード。
小文字 リテラル以外。
イタリック体 変数値。ユーザー定義値と置き換えます。
[] 任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。
( ) グループ。丸かっこ(( ))は、選択肢を含むグループを示します。丸かっこは入力しないでください。
| または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。
... 繰り返し可能。省略記号(...)は、構文要素を必要な回数だけ繰り返すことができることを示します。
'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' ;