ユーザー定義関数と集計関数
[CQL Script]エディターは、CQLでのユーザー定義関数(UDF)の作成と、INSERT文およびSELECT文でのその使用をサポートしています。
[CQL Script]エディターは、CQLでのユーザー定義関数(UDF)の作成と、INSERT文およびSELECT文でのその使用をサポートしています。
次のテーブルがあるとします。
CREATE TABLE cycling.cyclist_points ( id UUID, name text, race_title text, race_points double, PRIMARY KEY (id, race_points ) );
UDFを次のように作成して使用できます。
CREATE OR REPLACE FUNCTION cycling.flog(d double)
CALLED ON NULL INPUT RETURNS double
LANGUAGE java AS 'return Double.valueOf(Math.log(d.doubleValue()));';
INSERT INTO cycling.cyclist_points
JSON '{
"id" : "93031620-12ae-11e4-9191-0800200c9a66",
"name" : "Georgina Bronzini",
"race_title" : "Tour of Chongming Island World Cup",
"race_points" : 120
}';
INSERT INTO cycling.cyclist_points
JSON '{
"id" : "f6071e72-48ec-4fcb-bf3e-379c8a696488",
"name" : "Paolo Tiralongo",
"race_title" : "98th Giro d'Italia - Stage 15",
"race_points" : 2
}';
SELECT id, name, flog(race_points) FROM cycling.cyclist_points;

ユーザー定義集計関数
[CQL Script]エディターは、CQLでのユーザー定義集計関数(UDAF)の作成と、SELECT文でのその使用をサポートしています。
次のテーブルがあるとします。
CREATE TABLE social.numbers ( id text, num int, PRIMARY KEY ( id ) );
UDAFを次のように作成して使用できます。
INSERT INTO social.numbers (id, num) VALUES ('007', 110);
INSERT INTO social.numbers (id, num) VALUES ('123', 34);
INSERT INTO social.numbers (id, num) VALUES ('111', 667);
INSERT INTO social.numbers (id, num) VALUES ('099', 12);
CREATE OR REPLACE FUNCTION social.my_state ( s int, b int )
CALLED ON NULL INPUT
RETURNS int
LANGUAGE java
AS $$
if ( s == 0 ) return 1; else return s * b;
$$;
CREATE OR REPLACE AGGREGATE social.my_product ( int )
SFUNC social.my_state
STYPE int
INITCOND 0;
SELECT social.my_product(num) FROM social.numbers;
