全部產品
Search
文件中心

ApsaraDB for HBase:函數說明

更新時間:Jul 06, 2024

本節介紹Lindorm CQL文法支援的函數及其使用。

Lindorm CQL支援兩類函數:scalar function和native aggregate function。

  • scalar function:用於擷取一些值並產生一個輸出。
  • native aggregate function:用於彙總SELECT語句的多行結果。
說明 Lindorm CQL提供了許多原生寫入程式碼函數。

常見的scalar function函數和native aggregate function函數如下。

類別函數
scalar functionCastNowmaxTimeuuidminTimeuuid、Time conversion函數、Blob conversion函數等。
native aggregate functionCountSumAvgMinMax等。

Cast

Cast函數用於資料類型的轉換,支援將一種本機資料類型轉換為另一種。

資料類型

Cast函數支援轉換的資料類型如下:

轉換前轉換後
asciitext
biginttinyintsmallintintfloatdoubledecimalvarinttext
booleantext
countertinyintsmallintintbigintfloatdoubledecimalvarinttext
datetimestamp
decimaltinyintsmallintintbigintfloatdoublevarinttext
doubletinyintsmallintintbigintfloatdecimalvarinttext
floattinyintsmallintintbigintdoubledecimalvarinttext
inettext
inttinyintsmallintbigintfloatdoubledecimalvarinttext
timetext
timestampdatetext
timeuuidtimestampdatetext
tinyinttinyintsmallintintbigintfloatdoubledecimalvarinttext
uuidtext
varinttinyintsmallintintbigintfloatdoubledecimaltext
轉換說明

通過Cast函數轉換資料類型,需嚴格遵守Java的語義規範。

轉換樣本
CREATE TABLE persioninfo (c1 int PRIMARY KEY, c2 timeuuid);
SELECT avg(cast(c1 as double)) FROM persioninfo;

Now

Now函數用於返回當前的時間。

Now函數不接受任何參數,並在調用該函數時在協調器節點上會產生一個新的唯一timeuuid。因此,在使用Now函數時,在WHERE語句中基本沒有意義,例如對以下表單的查詢,不會按設計返回任何結果,因此now()返回的值保證是唯一的。

SELECT * FROM persioninfo WHERE c2 = now()

MaxTimeuuid和MinTimeuuid

MinTimeuuid和MaxTimeuuid函數用於擷取時間戳記值T(可以是時間戳記或日期文字<Timestamps>),並返回與最小值或最大值時間戳記T對應的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

Datetime相關函數用於檢索調用函數時的日期和時間。

函數名輸出形式
currentTimestampTimestamp
currentDatedate
currentTimetime
currentTimeUUIDtimeUUID

Time Conversion

Time Conversion函數用於將Timeuuid、時間戳記或日期轉換成Lindorm CQL內建的支援格式。

函數名輸入類型轉換描述
toDatetimeuuidtimeuuid類型轉換為date類型。
toDatetimestamptimestamp類型轉換為date類型。
toTimestamptimeuuidtimeuuid類型轉換為timestamp類型。
toTimestampdatedate類型轉換為timestamp類型。
toUnixTimestamptimeuuidtimeuuid類型轉換為bigInt類型。
toUnixTimestamptimestamptimestamp類型轉換為bigInt類型(raw)。
toUnixTimestampdatedate類型轉換為bigInt類型(raw)。

Blob Conversion

Blob Conversion系列函數支援將本機類型轉換為位元據(Blob)。

對於Lindorm CQL支援的每個<native type>類型,函數TypeAsBlob接受一個Type類型的參數並將其作為Blob返回。相反,函數BlobAsType接受64位Blob參數並將其轉換為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 ;