如何将用户定义的变量作为参数传递给Cassandra 3.0中的函数/聚合

时间:2018-02-07 06:55:04

标签: function cassandra aggregate cassandra-3.0

表/类型结构:

Create type typ_pks_details(
tpks_value Text,
tpks_date  Text,
tpks_comp_flg Text
);
Create Table pk_summary (
pks_nbr_key text,
pks_type_value text,
pks_type_character text,
pks_details map<text, frozen<typ_pks_details>>,
PRIMARY KEY (pks_nbr_key,pks_type_val)
);

功能/骨料:

Create FUNCTION sfunc_compute_value (state map<Text,Text>
               ,ps_type_val Text
               ,ps_type_char Text
               ,pm_pks_details map<text, frozen<typ_pks_details>>) 
CALLED ON NULL INPUT
RETURNS map<Text,Text>
LANGUAGE java
AS '
......<<Other code goes here>> 
//Clarification 2
//How to traverse typ_pks_details to fetch data

return state;';

Create AGGREGATE compute_value 
              (Text
               ,Text
               ,map<text, frozen<typ_attr_dtls>> 
             //Clarification 1 
             //How to pass map column pk_summary.pks_details map
              ) 

SFUNC sfunc_compute_value 
STYPE map<Text,Text>
INITCOND {}
; 

查询:

Select compute_value(pks_type_value,pks_type_character,pks_details) As 
       Summary 
  From pk_summary
 Where pks_nbr_key='100' Allow Filtering;

问题:

要求在查询中传递用户定义的列(pks_details)(上面的snipet 中的 Clarifcation 1)以聚合/函数并计算值(上面的snipet中的 Clarifcation 2 )。 请注意,上面已经解释了该场景,而不是显示原始表格。

0 个答案:

没有答案