卡桑德拉表
seq | keywords | timestamp
-----+---------------------+---------------
100 | ['apple', 'banana'] | 1488637750836
想要的结果
seq | keyword_size
-----+--------------
100 | 2
查询
select
seq,
something(keywords) as keyword_size
from
t
where
seq = 100
计数栏项目是否有类似功能?
答案 0 :(得分:2)
没有内置方法可以做到这一点
您可以做的是使用查询来获取关键字,并使用Java或其他编程语言从应用程序后端获取大小。
或者Cassandra 2.2和更高版本允许用户定义函数(UDT),这些函数可以作为查询结果的一部分应用于表中存储的数据。您可以尝试下面的UDF
CREATE OR REPLACE FUNCTION lsizeof(data list<text>) CALLED ON NULL INPUT RETURNS int LANGUAGE java AS 'return data.size();';
现在您拥有UTF函数lsizeof
,这是使用以下查询来获取列表大小的方法
SELECT seq, lsizeof(keywords) as keyword_size FROM test_list;
输出:
seq | keyword_size
-----+--------------
100 | 2
注意:默认情况下,UDF(用户定义的函数)是禁用的,您可以通过在cassandra.yaml上设置enable_user_defined_functions:true来启用它。