创建Cassandra列,其中只有0或1作为可能的值

时间:2018-02-07 06:29:40

标签: cassandra cassandra-3.0

我想获得具有特定条件的记录数(例如使用应用程序ID接受的应用程序的分数),这可以通过分别对被拒绝和接受的应用程序使用0和1来完成,然后使用sum(application_acceptance)/计数(*)。但是,我不希望该列接受除0或1之外的任何内容。

我正在寻找以下选项之一,但不确定Cassandra是否允许其中任何一个:

  1. 使用带有(0,1)值的布尔数据类型而不是(true,false)。
  2. 使用tinyint并将允许值限制为(0,1)。

1 个答案:

答案 0 :(得分:0)

你真的需要限制价值观吗?一种方法是使用boolean作为列的类型,并创建一个UDF,将您的布尔值转换为int并使用该UDF运行所有选择。

表格定义:

CREATE TABLE b_table (
    key int PRIMARY KEY,
    bol1 boolean
)

UDF:

CREATE FUNCTION my_boolean(input boolean)
    RETURNS NULL ON NULL INPUT
    RETURNS int
    LANGUAGE java
    AS 'return (input) ? 1 : 0;';

选择:select key, my_boolean(bol1) from b_table ;