CQLネイティブ関数
1行のデータの値を処理して新しい値を作成するスカラー関数について説明します。
CQLでは、1つのカラム値を新しい値に変換するいくつかの関数がサポートされています。
スカラー関数
DataStax Enterpriseデータベースは以下のネイティブ関数をサポートしています。
- cast
-
selectorが返したデータをネイティブのCQLデータ型に変換します。
CAST( selector AS to_type )
キャストは完全にJavaセマンティクスに基づいています。基になる型の詳細については、CQL型のJava派生元を参照してください。注: カラムの独自のデータ型へのキャストを自動的に無視します。selectorのカラム型 出力データ型(to_type) ascii text、varchar bigint tinyint、smallint、int、varint、float、double、decimal、text、varchar
boolean text、varchar counter tinyint、smallint、int、bigint、float、double、decimal、varint、text、varchar date timestamp decimal tinyint、smallint、int、bigint、float、double、varint、text、varchar double tinyint、smallint、int、bigint、float、decimal、varint、text、varchar float tinyint、smallint、int、bigint、double、decimal、varint、text、varchar inet text、varchar int tinyint、smallint、bigint、float、double、decimal、varint、text、varchar smallint tinyint、int、bigint、float、double、decimal、varint、text、varchar time text、varchar timestamp date、text、varchar timeuuid timestamp、date、text、varchar tinyint tinyint、smallint、int、bigint、float、double、decimal、varint、text、varchar uuid text、varchar varint tinyint、smallint、int、bigint、float、double、decimal、text、varchar CQLのほとんどの型はJavaの型から派生しており、Javaプログラマーには明白です。しかし、以下の型の派生元は、必ずしも明白ではありません。表 1. CQL型のJava派生元 CQL型 Java型 decimal java.math.BigDecimal float java.lang.Float double java.lang.Double varint java.math.BigInteger - token
-
ターゲット・カラム内の値のトークンを計算します。
TOKEN(column_name)
token関数の正確なシグネチャーは、関連するテーブルと、クラスターが使用するパーティショナーによって異なります。- Murmur3Partitionerの型は
bigint
- RandomPartitionerの型は
varint
- ByteOrderedPartitionerの型は
BLOB
- Murmur3Partitionerの型は
- ttl
- フィールド内の値が期限切れになり、データが自動的に削除されるまでの秒数をカウントダウンします。Nullは、カラムのTTLが設定されていない(またはカウントダウンが終了した)ことを示します。
非パーティション・キー・カラムに対してSELECT文のselectors句でのみ使用します。TTL(column_name)
警告: 2038年問題のため、データベース・ストレージ・エンジンでは、January 19 2038 03:14:07 UTC
のみをエンコードできます。TTL日付オーバーフローポリシーによって、有効期限が最長の日付よりも後のタイムスタンプの要求を拒否するか、受け入れるかどうかが決定します。-Dcassandra.expiration_date_overflow_policyを参照してください。 - uuid
- パラメーターはなく、ランダムなタイム4のUUIDを生成します。
UUID()
- writeTime
- データが書き込まれたunixタイムスタンプ(エポック以来の秒数)を示します。
非パーティション・キー・カラムに対してSELECT文のselectors句でのみ使用します。WRITETIME(column_name)
日時関数
現在の日時
コーディネーター・ノードの(現在)のシステム時刻をCQL型形式で返します。このような関数には引数がありません。
- currentDate
- システム時刻をdate形式で返します。
- currentTime
- システム時刻をtime形式で返します。
- currentTimestamp
- システム時刻をtimestamp形式で返します。
- currentTimeUuid
- システム時刻をtimeuuid形式で返します。
- floor
- 日付と時刻を最も近い値に丸めます。
- timestamp
(timestamp, duration [, start_timestamp])
start_timestampが使用されない場合は、開始タイムスタンプはJanuary 1, 1970 00:00:00.000 GMTになります。 - timeuuid
floor(timeuuid, duration [, start_timestamp])
start_timestampが使用されない場合は、開始タイムスタンプはJanuary 1, 1970 00:00:00.000 GMTになります。 - date
floor(date, duration [, start_date])
start_dateが使用されない場合は、開始日はJanuary 1, 1970 GMTになります。 - time
floor(time, duration[, start_time])
start_timeが使用されない場合は、開始時刻は00:00:00[000000000]になります。
以下のように時間構文を使用します。- N y - 年数
- N mo - 月数
- N w - 週数
- N d - 日数
- N h - 時間
- N m - 分数
- N s - 秒数
- N ms - ミリ秒数
- N usまたはµs - マイクロ秒数
- N ns - ナノ秒数
- timestamp
- now
- currentTimeUuidの別名。
TimeUuidの計算
- minTimeUuid
-
指定した日付(
'yyyy-mm-dd'
)またはタイムスタンプ('yyyy-mm-dd [hh:mm:ss[.fff][+/-NNNN]]'
)形式文字列から、最小の仮のtimeuuid
を計算します。minTimeuuid( date_string | timestamp_string )
SELECT文のWHERE句を使用して、
timeuuid
カラムから日付範囲内の行を返します。たとえば、WHERE id >= minTimeuuid('2017-05-01')
のようになります。 - maxTimeUuid
-
指定した日付(
'yyyy-mm-dd'
)またはタイムスタンプ('yyyy-mm-dd [hh:mm:ss[.fff][+/-NNNN]]'
)形式文字列から、最大の仮のtimeuuid
を計算します。MAXTIMEUUID( date_string | timestamp_string )
SELECT文のWHERE句を使用して、
timeuuid
カラムから日付範囲内の行を返します。たとえば、WHERE id <= maxTimeuuid('2017-05-01')
のようになります。
日付と時刻の変換
定義済み引数のデータをtimestamp、date、およびtimeuuidから別の型に変換します。
- toDate
-
timestamp
値をミリ秒数から日数(エポック以来)に変換し、timeuuid
の場合は、タイムスタンプを抽出してエポック以来の日数に変換します。TODATE(column_name)
注: 日時は文字列形式で表示されますが、整数として格納され、比較されます。 - toTimestamp
-
date
値をエポック以来の日数からミリ秒数に変換し、timeuuid
の場合はタイムスタンプを抽出します。TOTIMESTAMP(column_name)
注: 日付の時刻(hh:mm:ss.ffffff+NNNN)は結果のタイムスタンプ内ではすべて0に設定されます。 - toUnixTimestamp
timeuuid
、timestamp
またはdate
カラムをエポック以来の秒数に変換します。TOUNIXTIMESTAMP(column_name)
Blob変換
CQLネイティブ型をバイナリー(
blob
)に変換します。 廃止予定の関数
次の関数は、後方互換性を維持するためにのみサポートされています。
- dateOf
- toTimestampに似ています。
- unixTimestampOf
- toUnixTimestampに似ています