ユーザー定義関数と集計関数

[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;