このトピックでは、Lindorm Cassandra Query Language(CQL)でサポートされている関数について説明します。また、これらの関数の使用方法についても説明します。
Lindorm CQL は、スカラー関数とネイティブ集計関数の以下のタイプの関数をサポートしています。
スカラー関数は、値を取得して出力を生成するために使用されます。
ネイティブ集計関数は、SELECT ステートメントによって返される複数の行の値を集計するために使用されます。
Lindorm CQL は、複数のネイティブ ハードコード関数を備えています。
次の表に、一般的なスカラー関数とネイティブ集計関数について説明します。
タイプ | 関数 |
スカラー関数 |
|
ネイティブ集計関数 |
|
Cast
cast 関数は、データをあるネイティブ データ型から別のデータ型に変換するために使用されます。
データ型
次の表に、cast 関数によって変換できるソース データ型と、各ソース データ型を変換できる変換先データ型を示します。
ソース データ型 | 変換先データ型 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用上の注意
変換は Java のセマンティクスに厳密に依存します。
例
CREATE TABLE persioninfo (c1 int PRIMARY KEY, c2 timeuuid);
SELECT avg(cast(c1 as double)) FROM persioninfo; // c1 列を double 型にキャストして平均値を求める
Now
now 関数は、現在の時刻を返すために使用されます。
now 関数はパラメーターを受け入れません。この関数を呼び出すと、システムはコーディネーターノードで timeuuid 形式の新しい一意の値を生成します。WHERE
句で now 関数を指定すると、結果は返されません。このようにして、now 関数によって返される各値は一意になります。次のサンプルコードは例を示しています。
SELECT * FROM persioninfo WHERE c2 = now(); // c2 列が現在の時刻と一致する行を検索 (結果は返されない)
maxTimeuuid 関数と minTimeuuid 関数
maxTimeuuid 関数は、タイムスタンプまたは日付文字列のタイムスタンプ値を受け入れ、そのタイムスタンプ値の最大の TimeUUID を返します。 minTimeuuid 関数は、タイムスタンプまたは日付文字列のタイムスタンプ値を受け入れ、そのタイムスタンプ値の最小の TimeUUID を返します。
例
SELECT * FROM persioninfo WHERE c2 > maxTimeuuid('2013-01-01 00:05+0000') AND c2 < minTimeuuid('2013-02-02 10:00+0000') ALLOW FILTERING ; // c2 列が指定された範囲内の TimeUUID である行を検索
Datetime
日付または時刻関連の関数は、関数が呼び出された日付または時点を取得するために使用されます。
関数 | 出力タイプ |
|
|
|
|
|
|
|
|
時間変換
時間変換関数は、timeuuid データ、タイムスタンプ、または日付を Lindorm CQL でサポートされているネイティブ データ型に変換するために使用されます。
関数 | 入力タイプ | 説明 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Blob 変換
blob 変換関数は、ネイティブ データ型をバイナリデータまたは blob に変換するために使用されます。
Lindorm CQL でサポートされている各ネイティブ データ型について、typeAsBlob 関数はそのデータ型のパラメーター値を受け入れ、その値を blob として返します。 blobAsType 関数は 64 ビット バイナリデータのみを受け入れ、そのデータを bigint 値に変換します。たとえば、bigintAsBlob(3) は 0x0000000000000003 を返し、blobAsBigint(0x0000000000000003) は 3 を返します。
CREATE TABLE persioninfo (c1 text PRIMARY KEY, c2 bigint);
INSERT INTO persioninfo (c1, c2) VALUES ( '11', blobAsBigint(0x0000000000000003)); // c2 列に 16 進数 0x0000000000000003 を bigint 値として挿入
Count
count 関数は、指定された列にある空でない値の数をカウントするために使用されます。この関数は、返された行の数をカウントするためにも使用できます。
例
返された行の数を計算します。
SELECT COUNT (*) FROM persioninfo; // persioninfo テーブルの全行数をカウント
SELECT COUNT (1) FROM persioninfo; // persioninfo テーブルの全行数をカウント (別の書き方)
指定された列にある空でない値の数を計算します。
SELECT COUNT (c2) FROM persioninfo; // persioninfo テーブルの c2 列に値が入っている行数をカウント
max 関数と min 関数
max 関数は、指定された列の最大値を返すために使用されます。 min 関数は、指定された列の最小値を返すために使用されます。
例
CREATE TABLE persioninfo (c1 text PRIMARY KEY, c2 int);
INSERT INTO persioninfo (c1, c2) VALUES ('k1', 3);
INSERT INTO persioninfo (c1, c2) VALUES ('k2', 4);
SELECT min(c2), max(c2) FROM persioninfo; // c2 列の最小値と最大値を取得
Sum
sum 関数は、指定された列のすべての値の合計を計算するために使用されます。
例
SELECT sum(c2) FROM persioninfo ; // c2 列の値の合計を計算
Avg
avg 関数は、指定された列のすべての値の平均を計算するために使用されます。
例
SELECT avg(c2) FROM persioninfo ; // c2 列の値の平均を計算