SELECT
テーブルのデータを返します。
1つのテーブルのデータを返します。WHERE句のないSELECT文は、すべてのパーティションのすべての行を返しますが、このような使用法は推奨されません。
構文
SELECT selectors FROM [keyspace_name.]table_name [WHERE [primary_key_conditions] ( AND | ) [index_conditions] [GROUP BY column_name] [ORDER BY PK_column_name ASC|DESC] [LIMIT N | PER PARTITION LIMIT N] [ALLOW FILTERING]
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )で区切ります。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ...</schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
selectors
column_list | DISTINCT partition_key [AS output_name]
- column_list
-
結果セットで返されるカラムとその順序を指定します。カラムのコンマ区切りリストを指定するか、アスタリスクを使用して格納順にすべてのカラムを取得します。
column_name | function_name(argument_list)
- column_name:結果セットに1つのカラムを含めます。
- function_name(arguments):結果セットの行ごとに指定した引数に対して関数を実行します。「CQLネイティブ関数」と「ユーザー定義関数(UDF)の作成」を参照してください。
- aggregate_name(arguments):条件が一致するデータに対して集計を実行し、1つの結果を返します。「CQLネイティブの集計」と「CREATE AGGREGATE」を参照してください。
- DISTINCT partition_key
-
完全なパーティション・キーの一意な値を返します。複合パーティション・キーには、コンマ区切りリストを使用します。
ヒント:DESC TABLE table_name
を実行してPRIMARY KEY定義を取得してから、SELECT DISTINCT partition_key FROM table_name
を実行してテーブル・パーティション値をリストします。 - AS output_name
- たとえば以下のように、結果セットのカラム名を新しい出力名に変更します。
count(id) AS "Cyclist Count"
注: 名前に特殊文字やスペースが含まれている場合、または大文字と小文字の区別を維持する場合は、新しい名前を二重引用符で囲んでください。
keyspace_name.table_name
FROM "TestTable"
primary_key_conditions
[partition_conditions
[AND clustering_conditions ] | [AND index_conditions]
ロジック文の構文
カラム値をテストするロジック文を作成するには、次の構文を使用します。
column_name operator value
SELECT rank, cyclist_name as name FROM cycling.rank_by_year_and_name WHERE "race_name" = 'Tour of Japan - Stage 4 - Minami > Shinshu' AND race_year = 2014;
- column_name
- 大文字または特殊文字を含むカラム名は、二重引用符で囲みます。注: 文字列値は単一引用符で囲みます。
- operator
- DataStaxは、以下の演算子をサポートしています。
演算子 説明 = カラム値が指定した値と完全に一致する。 IN 値のコンマ区切りリスト内の任意の値に等しい。 >= 指定した値以上。 <= 指定した値以下。 > 指定した値よりも大きい。 < 指定した値よりも小さい。 CONTAINS 任意の種類のコレクションに含まれている値と一致する。インデックス付きのコレクションに対してのみ使用します。 CONTAINS KEY マップ内のキー名と一致する。インデックス付きのキーのあるマップに対してのみ使用します。 - value
- 文字列値は単一引用符で囲みます。 注: 大文字または特殊文字を含むカラム名は、二重引用符で囲みます。
データの場所の特定とクラスター化カラムによるフィルター
- パーティション・キー・カラム:等価演算子を使用してすべてのパーティション・キー値(またはその欠落)を特定します。パフォーマンスの低下を回避するため、データ・モデルが単一パーティション・クエリーをサポートしていることを確認します。注: 通常、パーティションは大きなデータ・セットです。パーティショナーは、パーティション・キー・カラムのハッシュを作成してデータを分散させ、同じハッシュのすべての行を同じノードに格納します。パーティション・キーの日付カラム値の7/01/2017と7/02/2017のように、類似するデータが同じノードにない場合があります。
- クラスター化カラムは、パーティション内のソート順を決定します。データは、まず最初のクラスター化カラム、次に2番目のクラスター化カラムという順にクラスター化カラムでソートされます。
- partition_conditions
-
データベースでは、セカンダリ・インデックスまたは検索インデックスをクエリーする場合を除き、すべてのパーティションを制限する必要があります。次の演算子でパーティション・キー・カラムを特定するロジック文を使用します。
- 等号(=):任意のパーティション・キー・カラム。
- IN:複数のパーティションを検索するには、パーティション・キーの最後のカラムに制限します。
- トークンの範囲(>=、<=、>および<):完全にトークン化されたパーティション・キー(TOKEN関数の引数として順番に指定されたすべてのPKカラム)。トークン範囲を使用して特定のノードに格納したデータをスキャンします。
注: セカンダリ・インデックス・クエリーでは、パーティション・キー・ロジック文で使用できる演算子は等価のみです。使用例と手順については、「パーティション・キー」を参照してください。
- clustering_conditions
-
クラスター化セグメントを特定するロジック文を使用します。クラスター化カラムは、複数のクラスター化カラムがある場合はネストされる、格納データのソート順を設定します。パーティション・キーの評価後、データベースは、1番目(最上位)、2番目、3番目などネストされた順序でクラスター化した文を評価します。
テーブルにクラスター化カラムが1つしかない場合、ロジック文ではすべての演算子がサポートされます。テーブルに複数のクラスター化カラムがある場合にテーブルのパーティション内のデータを効率よく見つけるには、次の制限を適用します。- 最上位のクラスター化カラム:
- 等号(=)
- IN
- 最後のクラスター化カラムの文:すべての演算子および複数のカラムの比較
クラスター化カラムのロジック文では、複数のクラスター化セグメントに及ぶスライスを返すこともできます。
(column1, column2, ...) operator (value1, value2, ...) [ AND (column1, column2, ...) operator (value1, value2, ...)]
スライスを使用すると、対応する値のある行を特定し、その前、後および間にあるすべての行を返すことができます(2つのスライス文が含まれている場合)。
使用例と手順については、「クラスター化カラム」を参照してください。
- 最上位のクラスター化カラム:
index_conditions
DataStax Enterpriseデータベースは、3種類のインデックスをサポートしています。
- セカンダリ・インデックス
- セカンダリ・インデックス・カラムのロジック文では、次の演算子がサポートされています。
- =
- インデックス・コレクション型に対するCONTAINS
- インデックス・マップ型に対するCONTAINS KEY
- Solrクエリー
-
DSE Searchクエリー式は、Solrのqパラメーターによってサポートされている構文を使用します。DSE Searchの「CQLクエリー構文」と「JSONクエリー構文」を参照してください。
- SASIインデックス
- SSTable Attached Secondary Index(SASI)を使用してデータを取得するには、「SASIの使用」を参照してください。
追加のオプション
クエリーで返されるデータのスコープと順序を変更します。
- GROUP BY column_name
- ターゲット・カラム名として一意の値を返します。集計関数とともに使用した場合、この関数は結果セットの各データ・グループに適用されます。
- ORDER BY (ASC | DESC)
- 結果セットを昇順(ASC)または降順(DESC)にソートします。 注: 順序が指定されていない場合、結果は格納された順に返されます。
- ALLOW FILTERING
- プライマリ・キーを特定するロジック文を含めずにフィルター処理すること、またはプライマリ・キーでフィルター処理することができます。注: 詳細については、「Allow Filtering explained」を参照してください。
- LIMIT N | PER PARTITION LIMIT N
- 結果セットで返されるレコード数を制限します。
例
カラム別名の使用
選択項目リストに関数やその他の複雑な式が含まれている場合、別名を使用すると出力が読みやすくなります。次の例では、dateOf(created_at)
関数とblobAsText(content)
関数に別名を適用します。
SELECT event_id, dateOf(created_at) AS creation_date, blobAsText(content) AS content FROM timeline;
出力では、これらのカラムにわかりやすい名前のラベルを付けます。
event_id | creation_date | content
-------------------------+--------------------------+----------------
550e8400-e29b-41d4-a716 | 2013-07-26 10:44:33+0200 | Some stuff
FROMを使用したソース・テーブルの指定
次のSELECT文の例では、system
キースペースのIndexInfo
テーブルの行数が返されます
SELECT COUNT(*) FROM system.IndexInfo;
LIMITを使用した、返される行数の制御
LIMIT
オプションは、クエリーが返す最大行数を設定します。
SELECT lastname FROM cycling.cyclist_name LIMIT 50000;
たとえば、クエリーが105,291行と一致しても、データベースは最初の50,000行のみを返します。
cqlsh
シェルのデフォルトの行数は10,000に制限されています。DataStax Enterpriseサーバーとネイティブ・プロトコルでは、返される行の数は制限されませんが、誤った形式のクエリーによってシステムが不安定になるのを防ぐためにタイムアウトが適用されます。
パーティションの選択
partition_column = value
partition_column IN(value1,value2[,...])
partition_column1 = value1
AND partition_column2 = value2 [AND ...])
PER PARTITION LIMITを使用した、返される行数の制御
DataStax Enterprise 5.1以降では、PER PARTITION LIMIT
オプションを使用して、クエリーで各パーティションから返される行数の最大数を設定します。たとえば、複数のパーティションにデータをソートするテーブルを作成します。
CREATE TABLE cycling.rank_by_year_and_name ( race_year int, race_name text, cyclist_name text, rank int, PRIMARY KEY ((race_year, race_name), rank) );
データを挿入した後、テーブルには以下の値が格納されます。
race_year | race_name | rank | cyclist_name
-----------+--------------------------------------------+------+----------------------
2014 | 4th Tour of Beijing | 1 | Phillippe GILBERT
2014 | 4th Tour of Beijing | 2 | Daniel MARTIN
2014 | 4th Tour of Beijing | 3 | Johan Esteban CHAVES
2015 | Giro d'Italia - Stage 11 - Forli > Imola | 1 | Ilnur ZAKARIN
2015 | Giro d'Italia - Stage 11 - Forli > Imola | 2 | Carlos BETANCUR
2015 | Tour of Japan - Stage 4 - Minami > Shinshu | 1 | Benjamin PRADES
2015 | Tour of Japan - Stage 4 - Minami > Shinshu | 2 | Adam PHELAN
2015 | Tour of Japan - Stage 4 - Minami > Shinshu | 3 | Thomas LEBAS
レースの年度と名前ごとに上位2名のレーサーを取得するには、SELECT文とPER PARTITION LIMIT 2
を使用します。
SELECT * FROM cycling.rank_by_year_and_name PER PARTITION LIMIT 2;
出力:
race_year | race_name | rank | cyclist_name
-----------+--------------------------------------------+------+-------------------
2014 | 4th Tour of Beijing | 1 | Phillippe GILBERT
2014 | 4th Tour of Beijing | 2 | Daniel MARTIN
2015 | Giro d'Italia - Stage 11 - Forli > Imola | 1 | Ilnur ZAKARIN
2015 | Giro d'Italia - Stage 11 - Forli > Imola | 2 | Carlos BETANCUR
2015 | Tour of Japan - Stage 4 - Minami > Shinshu | 1 | Benjamin PRADES
2015 | Tour of Japan - Stage 4 - Minami > Shinshu | 2 | Adam PHELAN
WHEREを使用したデータのフィルター
WHERE
句は、SELECTで返された行をフィルター処理する1つまたは複数の関係を示します。
カラム指定
- テーブルのパーティション・キーの1つまたは複数のメンバー
- クラスター化カラム(関係の前にパーティション・キー内のすべてのカラムを指定する他の関係がある場合)
- CREATE INDEXを使用してインデックスが作成されたカラム。
WHERE
句では、別名ではなく実際の名前を使用してカラムを参照してください。パーティション・キーでのフィルター
id
を定義します。CREATE TABLE cycling.cyclist_career_teams ( id UUID PRIMARY KEY, lastname text, teams set<text> );この例では、SELECT文にパーティション・キーが含まれているため、WHERE句は
id
カラムを使用できます。SELECT id, lastname, teams FROM cycling.cyclist_career_teams WHERE id=5b6962dd-3f90-4c93-8f61-eabfa4a803e2;
制限:パーティション・キーを参照する関係は、等価演算子=またはINしか使用できません。IN演算子の詳細については、以下の「例」を参照してください。
クラスター化カラムでのフィルター
パーティション・キーのすべての要素を参照する関係がその前にある場合のみ、クラスター化カラムに対して関係を使用します。
例:
CREATE TABLE cycling.cyclist_points ( id UUID, firstname text, lastname text, race_title text, race_points int, PRIMARY KEY (id, race_points ));
SELECT sum(race_points) FROM cycling.cyclist_points WHERE id=e3b19ec4-774a-4d1c-9e5a-decec1e30aac AND race_points > 7;
出力:
system.sum(race_points)
-------------------------
195
(1 rows)
DataStax Enteprise 5.1以降では、インデックスなしのクラスター化カラムでのみフィルター処理するにはALLOW FILTERING
を追加します。次の例ではテーブル定義を含めて、race_start_date
がセカンダリ・インデックスのないクラスター化カラムであることを示しています。
例:
CREATE TABLE cycling.calendar ( race_id int, race_name text, race_start_date timestamp, race_end_date timestamp, PRIMARY KEY (race_id, race_start_date, race_end_date));
SELECT * FROM cycling.calendar WHERE race_start_date='2015-06-13' ALLOW FILTERING;
出力:
race_id | race_start_date | race_end_date | race_name
---------+---------------------------------+---------------------------------+----------------
102 | 2015-06-13 07:00:00.000000+0000 | 2015-06-13 07:00:00.000000+0000 | Tour de Suisse
103 | 2015-06-13 07:00:00.000000+0000 | 2015-06-17 07:00:00.000000+0000 | Tour de France
パーティション・キーとクラスター化カラムを組み合わせて1つの関係にすることができます。 詳細については、「クラスター化カラムの比較」を参照してください。
インデックス付きカラムでのフィルター
インデックス付きテーブルのSELECTのWHERE句には、インデックス付きカラムに対する等価関係を少なくとも1つ含める必要があります。詳細については、「カラムのインデックスの作成」を参照してください。
IN演算子の使用
等価条件演算子であるIN
は、可能性のある複数のカラム値をリストするために使用します。次の例では、従業員ID(プライマリ・キー)が105、107、または104である3つの行から、first_name
とlast_name
という2つのカラムを選択します。
SELECT first_name, last_name FROM emp WHERE empID IN (105, 107, 104);
リストは特定の範囲のコンマ区切りのカラム値で構成できます。
INを使用した、複合プライマリ・キーでのフィルター
IN
条件を使用します。例:CREATE TABLE parts ( part_type text, part_name text, part_num int, part_year text, serial_num text, PRIMARY KEY ((part_type, part_name), part_num, part_year));
SELECT * FROM parts WHERE part_type='alloy' AND part_name='hubcap' AND part_num=1249 AND part_year IN ('2010', '2015');
IN
を使用する場合、最後のカラム以外のクラスター化カラムに対する等価テストを省略できます。ただし、この使用法ではALLOW FILTERING
の使用が必要になる場合があるため、パフォーマンスを予想できないことがあります。例:SELECT * FROM parts WHERE part_num=123456 AND part_year IN ('2010', '2015') ALLOW FILTERING;
CQLでは、IN
句内に空の値リストを使用できるため、Javaドライバー・アプリケーションで空の配列を引数としてIN
句に渡す場合に役立ちます。
INを使用すべきでない場合
ほとんどの条件下では、パーティション・キーの関係にIN
を使用することは推奨されません。値のリストを処理するには、SELECTで多数のノードをクエリーする必要がある場合があり、それによってパフォーマンスが低下します。たとえば、ノードが30、レプリケーション係数が3、整合性レベルがLOCAL_QUORUM
の1つのローカル・データ・センター・クラスターがあるとします。パーティション・キーを1つ指定したクエリーは2つのノードに送られます。しかし、SELECTでIN
条件が使用されている場合、キーがトークン範囲のどこに位置するかにより、演算には最大で20のノードが含まれる可能性があります。
クラスター化カラムでIN
を使用する方が安全です。「Cassandra Query Patterns: Not using the “in” query for multiple partitions」でIN
の使用に関するその他のロジックの詳細を参照してください。
コレクションでのフィルター
クエリーはコレクション全体を取得できます。また、コレクション・カラムを対象としてインデックスを作成してから、WHERE
句にCONTAINS
条件を指定してコレクションに属する特定の値のデータをフィルター処理することも、CONTAINS KEY
を使用してキーでフィルター処理することもできます。次の例では、playlistsテーブルのタグのコレクションを示します。クエリーによってタグのインデックスを作成し、次にタグ・セットの'blues'でフィルター処理できます。
SELECT album, tags FROM playlists WHERE tags CONTAINS 'blues';
SELECT * FROM playlists WHERE venue CONTAINS 'The Fillmore';
SELECT * FROM playlists WHERE venue CONTAINS KEY '2014-09-22 22:00:00-0700';
マップのエントリーのフィルター
CREATE INDEX blist_idx ON cycling.birthday_list (ENTRIES(blist));
SELECT * FROM cycling.birthday_list WHERE blist['age'] = '23';
frozenのフル・コレクションのフィルター
FROZEN
コレクション(セット、リスト、またはマップ)を含むテーブルに対するクエリーを示しています。このクエリーは、コレクションの値と完全に一致する行を取得します。
CREATE INDEX rnumbers_idx ON cycling.race_starts (FULL(rnumbers));
SELECT * FROM cycling.race_starts WHERE rnumbers = [39,7,14];
範囲関係
DataStax Enterpriseは>または<比較をサポートしていますが、指定されたパーティション・キーのクラスター化カラムに対する条件は、連続した行のセットを選択できるフィルターに制限されます。
CREATE TABLE ruling_stewards ( steward_name text, king text, reign_start int, event text, PRIMARY KEY (steward_name, king, reign_start) );
king
(王)がプライマリ・キーのコンポーネントではなかった場合、以下のクエリーを使用するためにkingにインデックスを作成する必要があります。SELECT * FROM ruling_stewards WHERE king = 'Brego' AND reign_start >= 2450 AND reign_start < 2500 ALLOW FILTERING;
steward_name | king | reign_start | event
--------------+-------+-------------+--------------------
Boromir | Brego | 2477 | Attacks continue
Cirion | Brego | 2489 | Defeat of Balchoth
(2 rows)
連続した行のセットを選択できるようにするには、WHERE句でプライマリ・キーのking
コンポーネントに等価条件を適用する必要があります。ALLOW FILTERING句も必要です。
ALLOW FILTERING
を使用すると、任意の条件を使用してクラスター化カラムをクエリーできます。
ALLOW FILTERING
は開発目的でのみ使用してください。特定範囲の行を検索するなど潜在的に高負荷のクエリーを実行しようとすると、以下のメッセージが表示されます。
Bad Request: Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING.
このようなクエリーを実行するには、ALLOW FILTERING
を使用し、LIMIT n
を使用して出力をn
行に制限します。例:
Select * FROM ruling_stewards WHERE king = 'none' AND reign_start >= 1500 AND reign_start < 3000 LIMIT 10 ALLOW FILTERING;
LIMIT
を使用しても、ALLOW FILTERING
によって生じる問題をすべて防げるわけではありません。次の例では、kingの値のないエントリーがない場合、LIMIT
の値にかかわらずSELECTはテーブル全体をスキャンします。
ALLOW FILTERING
とともにLIMIT
を使用する必要はなく、LIMIT
を単独で使用できます。しかし、LIMIT
を使用すると、クエリーがデータ・センター内のすべてのパーティションに及んだり、複数のデータ・センターにまたがったりすることを防ぐことができます。
複合プライマリ・キーの使用と結果のソート
ORDER BY
句は単一のカラムにのみ使用できます。そのカラムは、複合PRIMARY KEY
の2番目のカラムである必要があります。これは、プライマリ・キーに複数のカラム・コンポーネントがあるテーブルにも当てはまります。順序はASC
キーワードまたはDESC
キーワードを使用して昇順または降順に指定できます(デフォルトは昇順)。
ORDER BY
句では、別名ではなく実際の名前を使用してカラムを参照してください。
たとえば、複合プライマリ・キーを使用するplaylistsテーブルを設定し、以下のクエリーを使用してsong_orderで順序が指定された特定のプレイリストに関する情報を取得します。select式にORDER BY
カラムを含める必要はありません。
SELECT * FROM playlists WHERE id = 62c36092-82a1-3a00-93d1-46196ee77204 ORDER BY song_order DESC LIMIT 50;
出力:
または、プレイリストのアーティストにインデックスを作成し、以下のクエリーを使用してそのプレイリストでFu Manchuの曲のタイトルを取得します。
CREATE INDEX ON playlists(artist);
SELECT album, title FROM playlists WHERE artist = 'Fu Manchu';
出力:
集計の計算
DataStax Enterpriseは、SELECT文に集計値を返す標準の組み込み関数を備えています。
COUNT()を使用した、カラムのNULL以外の値のカウントの取得
SELECT
式でCOUNT(column_name)
を使用すると、カラムに含まれるNULL以外の値の数を返します。
たとえば、cyclist_name
テーブル内の姓の数をカウントします。
SELECT COUNT(lastname) FROM cycling.cyclist_name;
COUNT()を使用した、条件に一致する行と集計値の取得
SELECT
式でCOUNT(*)
を使用すると、クエリーに一致した行の数を返します。COUNT(1)
を使用しても同じ結果を得ることができます。他の集計関数またはカラムと組み合わせてCOUNT(*)
またはCOUNT(1)
を使用できます。
次の例は、usersテーブルの行数を返します。
SELECT COUNT(*) FROM users;
次の例は、usersテーブルの行数をカウントし、pointsの最大値を計算します。
SELECT name, max(points), COUNT(*) FROM users;
カラムの最大値および最小値の取得
SELECT
式でMAX(column_name)
を使用すると、カラム内の最大値を返します。カラムのデータ型が数値(bigint
、decimal
、double
、float
、int
、smallint
)である場合、これが最大値になります。
SELECT MAX(points) FROM cycling.cyclist_category;
出力:

MIN
は最小値を返します。クエリーにWHERE
句が含まれている場合、MAX
またはMIN
はそのWHERE
条件を満たす行の最大値または最小値を返します。SELECT category, MIN(points) FROM cycling.cyclist_category WHERE category = 'GC';
出力:

MAX
またはMIN
が参照するカラムがascii
データ型またはtext
データ型の場合、これらの関数はアルファベット順にソートしたカラム値の最後または最初の項目を返します。指定したカラムのデータ型がdate
型またはtimestamp
型の場合、これらの関数は最も新しいまたは最も古い日時を返します。指定したカラムにNull
値がある場合、MIN
関数はこれを無視します。MIN
としてNull値を返しません。数値のカラムの合計または平均の取得
SUM
またはAVG
を使用した場合、DataStax Enterpriseではカラム内のすべての値の合計または平均が計算されます。
AVG
集計で参照されるカラムのNull値が含まれている場合、その行は行数に含まれますが、平均の計算には0値が使用されます。sum
関数とavg
関数はtext
型、uuid
型またはdate
型のフィールドには使用できません。書き込みが発生した日時の取得
カラムにWRITETIME関数が適用されると、カラムがデータベースに書き込まれた日時がマイクロ秒単位で返されます。
たとえば、姓がJonesというユーザーのfirst_nameカラムに書き込みが発生した日時を取得するには、次のように入力します。
SELECT WRITETIME (first_name) FROM users WHERE last_name = 'Jones';
writetime(first_name)
-----------------------
1353010594789000
マイクロ秒単位のWRITETIME
出力を変換すると、「November 15, 2012 at 12:16:34 GMT-8」になります。
カラムのTime To Liveの取得
INSERT INTO cycling.calendar (race_id, race_name, race_start_date, race_end_date) VALUES (200, 'placeholder', '2015-05-27', '2015-05-27') USING TTL;
UPDATE cycling.calendar USING TTL 300 SET race_name = 'dummy' WHERE race_id = 200 AND race_start_date = '2015-05-27' AND race_end_date = '2015-05-27';TTLを挿入したら、SELECT文を使用して現在値を確認します。
SELECT TTL(race_name) FROM cycling.calendar WHERE race_id=200;出力:
ttl(race_name)
----------------
276
(1 rows)
JSON形式の値の取得
このオプションは、DataStax Enterprise 5.0以降で使用できます。詳細については、「JSONを使用した取得」を参照してください。