このトピックでは、Lindorm Cassandra Query Language(CQL)でサポートされている関数について説明します。また、これらの関数の使用方法についても説明します。
Lindorm CQL は、スカラー関数とネイティブ集計関数の次のカテゴリの関数をサポートしています。
- スカラー関数は、値を取得して出力を生成するために使用されます。
- ネイティブ集計関数は、SELECT ステートメントによって返される複数の行の値を集計するために使用されます。
次の表に、一般的なスカラー関数とネイティブ集計関数を示します。
種類 | 関数 |
スカラー関数 | cast 、now 、maxTimeuuid 、minTimeuuid 、時間変換関数、および blob 変換関数 |
ネイティブ集計関数 | count 、sum 、avg 、min 、および max |
Cast
cast 関数は、データをあるネイティブ データ型から別のデータ型に変換するために使用されます。
データ型の変換次の表に、cast 関数で変換できるソース データ型と、各ソース データ型を変換できる変換先データ型を示します。
ソース データ型 | 変換先データ型 |
ascii | text |
bigint | tinyint 、smallint 、int 、float 、double 、decimal 、varint 、または text |
boolean | text |
counter | tinyint 、smallint 、int 、bigint 、float 、double 、decimal 、varint 、または text |
date | timestamp |
decimal | tinyint 、smallint 、int 、bigint 、float 、double 、varint 、または text |
double | tinyint 、smallint 、int 、bigint 、float 、decimal 、varint 、または text |
float | tinyint 、smallint 、int 、bigint 、double 、decimal 、varint 、または text |
inet | text |
int | tinyint 、smallint 、bigint 、float 、double 、decimal 、varint 、または text |
time | text |
timestamp | date または text |
timeuuid | timestamp 、date 、または text |
tinyint | tinyint 、smallint 、int 、bigint 、float 、double 、decimal 、varint 、または text |
uuid | text |
varint | tinyint 、smallint 、int 、bigint 、float 、double 、decimal 、または text |
変換は Java のセマンティクスに厳密に依存します。
例CREATE TABLE persioninfo (c1 int PRIMARY KEY, c2 timeuuid);
SELECT avg(cast(c1 as double)) FROM persioninfo;
Now
now 関数は、現在時刻を返すために使用されます。
now 関数はパラメーターを受け入れません。この関数を呼び出すと、システムはコーディネーター ノードで timeuuid 形式の新しい一意の値を生成します。WHERE
句に now 関数を指定すると、結果は返されません。このようにして、now 関数によって返される各値は一意であることが保証されます。次のコードは例を示しています。
SELECT * FROM persioninfo WHERE c2 = now()
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 ;
Datetime
日付または時刻関連の関数は、関数が呼び出された日付または時刻を取得するために使用されます。
関数 | 出力型 |
currentTimestamp | Timestamp |
currentDate | date |
currentTime | time |
currentTimeUUID | timeUUID |
時間変換
時間変換関数は、timeuuid データ、タイムスタンプ、または日付を Lindorm CQL でサポートされているネイティブ データ型に変換するために使用されます。
関数 | 入力型 | 説明 |
toDate | timeuuid | timeuuid 型を date 型に変換します。 |
toDate | timestamp | timestamp 型を date 型に変換します。 |
toTimestamp | timeuuid | timeuuid 型を timestamp 型に変換します。 |
toTimestamp | date | date 型を timestamp 型に変換します。 |
toUnixTimestamp | timeuuid | timeuuid 型を bigint 型に変換します。 |
toUnixTimestamp | timestamp | timestamp 型を bigint (raw)型に変換します。 |
toUnixTimestamp | date | date 型を bigint (raw)型に変換します。 |
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));
Count
count 関数は、指定された列にある空でない値の数をカウントするために使用されます。この関数は、返された行の数をカウントするためにも使用できます。
例返された行の数を計算します。
SELECT COUNT (*) FROM persioninfo;
SELECT COUNT (1) FROM persioninfo;
指定された列にある空でない値の数を計算します。
SELECT COUNT (c2) FROM persioninfo;
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;
Sum
sum 関数は、指定された列のすべての値を加算するために使用されます。
例SELECT sum(c2) FROM persioninfo ;
Avg
avg 関数は、指定された列のすべての値の平均を計算するために使用されます。
例SELECT avg(c2) FROM persioninfo ;