Cassandra:具有复杂用户定义类型的聚合函数 INITCOND

Cassandra: aggregate function INITCOND with complex user defined type

对于 Cassandra 中用户定义的聚合函数,什么可以作为 INITCOND 放置?我只看过简单类型的例子(例如元组)。

我在聚合函数中有以下类型的状态对象:

create type avg_type_1 (
    accum tuple<text,int,double>,   // source, count, sum
    avg_map map<text,double>        // source, average
);

当我省略 INITCOND 时,我得到一个 Java NullPointerException。

问题中的 UDT 以下内容适用:

INITCOND ((null, 0, 0.0), null)

accum字段(元组):第一个元素(source,String)设置为null,第二个元素(count,int)设置为0(零) , 第三个也是最后一个元素 (sum, double) 设置为 0.0(零)。

avg_map字段(地图):设置为空(还没有地图)。

字段也可以通过名称来引用,如下(来自 describe ...)所示。

INITCOND {accum: (null, 0, 0.0), avg_map: null};

对于命名字段,使用大括号“{}”(因为它们表示为地图)。

最后,这里还有一个初始化地图的例子。

INITCOND {accum: (null, 0, 0.0), avg_map: {'i1': 23.5, 'i2': 1.2}};