User-defined functions and aggregate functions
The CQL Script editor supports the creation of user-defined functions (UDF) in CQL and their use in INSERT and SELECT statements.
DataStax DevCenter is compatible with DataStax Enterprise (DSE) versions up to 5.0.
The CQL Script editor supports the creation of user-defined functions (UDF) in CQL and their use in INSERT and SELECT statements.
Assuming a table:
CREATE TABLE cycling.cyclist_points (
id UUID,
name text,
race_title text,
race_points double,
PRIMARY KEY (id, race_points )
);
A UDF can be created and used as follows:
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;
User-defined aggregate functions
The CQL Script editor supports the creation of user-defined aggregate functions (UDAF) in CQL and their use in SELECT statements.
Assuming a table:
CREATE TABLE social.numbers (
id text,
num int,
PRIMARY KEY ( id )
);
A UDAF can be created and used as follows:
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;