在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。
答案 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}};