CQLネイティブ関数
1行のデータの値を処理して新しい値を作成するスカラー関数について説明します。
CQLでは、1つのカラム値を新しい値に変換するいくつかの関数がサポートされています。
ネイティブ・データベース関数は次のとおりです。
- CAST
-
selectorが返したデータをネイティブのCQLデータ型に変換します。
CAST( selector AS to_type )
キャストは完全にJavaセマンティクスに基づいています。基になる型の詳細については、CQL型のJava派生元を参照してください。SELECT文でのみ使用します。注: カラムの独自のデータ型へのキャストを自動的に無視します。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 - BLOBASto_type
- ターゲット・カラムまたはリテラル(文字列を単一引用符で囲む)をBLOBから指定したtypeに変換します。
blobAstype(column_name | literal)
- typeASBLOB
-
ターゲット・カラムまたはリテラル(文字列を単一引用符で囲む)を指定したtypeからBLOBに変換します。ここで、変換元の型は有効なCQLデータ型に対応しています。
typeAsBlob(column_name | literal )
- TOKEN
-
ターゲット・カラム内の値のトークンを計算します。
TOKEN(column_name)
token関数の正確なシグネチャーは、関連するテーブルと、クラスターが使用するパーティショナーによって異なります。- Murmur3Partitionerの型は
bigint
- RandomPartitionerの型は
varint
- ByteOrderedPartitionerの型は
BLOB
- Murmur3Partitionerの型は
- 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')
のようになります。 - NOW
-
引数はなく、文の実行時にコーディネーター・ノードに新しい一意のtimeuuidを生成します。
NOW()
INSERT文またはUPDATE文で、新しい
timeuuid
値を生成するために使用します。WHERE
句でも使用できますが、now()
は一意であることが保証されるため、指定されたSELECT文またはUPDATE文に一致する値はありません。 - 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)
- UUID
- パラメーターはなく、ランダムなタイム4のUUIDを生成します。
UUID()
- WRITETIME
- データが書き込まれたunixタイムスタンプ(エポック以来の秒数)を示します。
非パーティション・キー・カラムに対してSELECT文のselectors句でのみ使用します。WRITETIME(column_name)
- TTL
- フィールド内の値が期限切れになり、データが自動的に削除されるまでの秒数をカウントダウンします。Nullは、カラムのTTLが設定されていない(またはカウントダウンが終了した)ことを示します。
非パーティション・キー・カラムに対してSELECT文のselectors句でのみ使用します。TTL(column_name)
廃止予定の関数
次の関数は、後方互換性を維持するためにのみサポートされています。
- DATEOF
TOTIMESTAMP(timeuuid)
と同様です。- UNIXTIMESTAMPOF
TOUNIXTIMESTAMP(timeuuid)
と同様です。