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

时间:2016-10-31 20:57:34

标签: cassandra user-defined-functions cql user-defined-types

在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。

1 个答案:

答案 0 :(得分:0)

以下适用于问题中的UDT:

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

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

avg_map 字段(地图):设为null(尚无地图)。

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

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

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

最后,这是一个初始化地图的例子。

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