如何解决Cassandra 从地图中选择所有键
我正在尝试从下面学生表中的课程地图中选择键
CREATE TABLE student (
studentid TEXT,courses map<TEXT,TEXT>,PRIMARY KEY (studentid)
);
插入此数据
UPDATE student SET courses = courses + { 'bio101': 'Intro to Bio'} where studentid='xyz' ;
UPDATE student SET courses = courses + { 'bio102': 'Advanced Bio'} where studentid='xyz' ;
UPDATE student SET courses = courses + { 'chem101': 'Intro to Chem'} where studentid='xyz' ;
我只想选择课程地图中的键。所以
courseId
--------
'bio101'
'bio102'
'chem101'
我尝试过
的变体select courses from student where studentid='xyz';
但我似乎不能只选择那一列。
解决方法
您可以尝试使用 UDF。
CREATE OR REPLACE FUNCTION keys (input Map<Text,Text>)
RETURNS NULL ON NULL INPUT
RETURNS Set<Text>
LANGUAGE java AS 'return input.keySet();';
您必须启用 UDF,因为它默认禁用。在 cassandra.yaml 中找到 enable_user_defined_functions 并将 false 替换为 true。重新启动您的 Cassandra。
稍微改变你的查询。
select keys(courses) from student where studentid='xyz';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。