Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select 卡桑德拉:如何用十进制搜索键列?_Select_Search_Cassandra_Int_Decimal - Fatal编程技术网

Select 卡桑德拉:如何用十进制搜索键列?

Select 卡桑德拉:如何用十进制搜索键列?,select,search,cassandra,int,decimal,Select,Search,Cassandra,Int,Decimal,我知道Cassandra是为基于字符串的键/值对设计的。 我需要一个带十进制键的卡桑德拉表。是否仍然可以使用数值范围搜索键。是否喜欢3到6之间的键(包括) 示例键列 一, 3.3 6.345 九, 十, 2.5让我们试试这个。假设一个简单的表有一个十进制键和一个文本值 CREATE TABLE decimalRangePK (dec decimal, value text, PRIMARY KEY (dec)); 在本例中,dec是我的分区键。这是我唯一的密钥,因为没有集群密钥。插入一些数

我知道Cassandra是为基于字符串的键/值对设计的。 我需要一个带十进制键的卡桑德拉表。是否仍然可以使用数值范围搜索键。是否喜欢3到6之间的键(包括)

示例键列 一,

3.3

6.345

九,

十,


2.5让我们试试这个。假设一个简单的表有一个
十进制
键和一个
文本

CREATE TABLE decimalRangePK (dec decimal, value text, PRIMARY KEY (dec));
在本例中,
dec
是我的分区键。这是我唯一的密钥,因为没有集群密钥。插入一些数据后,我得到的是:

aploetz@cqlsh:stackoverflow> SELECT * FROM decimalrangepk ;

 dec  | value
------+-------
  2.5 |   ghi
 6.35 |   abc
    9 |   def
  3.2 |   3.2
    1 |     1
  3.3 |   3.3
   10 |   ten

(7 rows)
因此,我假设您正在尝试对分区键进行范围查询,如下所示:

aploetz@cqlsh:stackoverflow> SELECT * FROM decimalrangeck WHERE dec>=3.3 AND dec<=9;
InvalidRequest: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"
CREATE TABLE decimalRangeCK (dateBucket text, dec decimal, value text,
     PRIMARY KEY (dateBucket,dec));
插入一些行后,我将查询该表,它看起来会略有不同:

aploetz@cqlsh:stackoverflow> SELECT * FROM decimalrangeck ;

 datebucket | dec  | value
------------+------+-------
   20151108 |    1 |     1
   20151108 |  3.2 |   3.2
   20151110 |  2.5 |   ghi
   20151110 |   10 |   ten
   20151109 |    1 |     1
   20151109 |  3.3 |   3.3
   20151109 | 6.35 |   abc
   20151109 |    9 |   def

(8 rows)
现在我可以在
dec
上运行范围查询,只要我还提供了分区键:

aploetz@cqlsh:stackoverflow> SELECT * FROM decimalrangeck WHERE datebucket='20151109'
                             AND dec>=3.3 AND dec<=9;

 datebucket | dec  | value
------------+------+-------
   20151109 |  3.3 |   3.3
   20151109 | 6.35 |   abc
   20151109 |    9 |   def

(3 rows)
aploetz@cqlsh:stackoverflow>SELECT*FROM decimalrangeck,其中datebucket='20151109'
12月>=3.3和12月