我创建了一张桌子
CREATE TABLE human (chromosome text, position bigint,
hg01583 frozen<set<text>>,
hg03006 frozen<set<text>>,
PRIMARY KEY (chromosome, position)
)
我创建了函数
CREATE FUNCTION process(sample list<frozen<set<text>>>)
CALLED ON NULL INPUT
RETURNS text
LANGUAGE java
AS
$$
return leftsample==null?null:leftsample.getClass().toString()+" "+leftsample.toString();
$$;
当我进行Issie CQL查询
选择人类的染色体,位置,hg01583,hg03006,过程([hg01583,hg03006]);
我遇到了这个错误
SyntaxException: line 1:80 no viable alternative at input ',' ([[hg01583],..
如何将hg01583,hg03006作为列表传递给处理功能?
答案 0 :(得分:0)
将每个参数作为自己的参数,例如:SELECT chromosome, position, hg01583, hg03006, process(hg01583, hg03006) from human;
CREATE FUNCTION process(hg01583 frozen<set<text>>, hg03006 frozen<set<text>>)
CALLED ON NULL INPUT
RETURNS text
LANGUAGE java AS
$$
return hg01583==null? null : ...
$$;
如果您希望它们是动态的,则不必为每一个都创建固定的列,而是使其宽行,并使用UDA将其与累加器函数进行汇总。喜欢:
CREATE TABLE human (chromosome text, position bigint,
sample text,
value frozen<set<text>>
PRIMARY KEY (chromosome, position, sample)
)