【问题标题】:Why does my Cassandra SELECT WHERE statement return 0 rows?为什么我的 Cassandra SELECT WHERE 语句返回 0 行?
【发布时间】:2014-10-06 22:46:06
【问题描述】:

我正在尝试通过 USERID 进行查询,该 USERID 已编入索引,并且是复合键的一部分,在具有 ~1000 行的表上:

create table MYTABLE (
DATE timestamp,
USERID text,
FIRST_NAME text,
LAST_NAME text,
primary key (DATE, USERID));

create index on mytable(userid);

以下工作正常:

select userid from mytable limit 5;

 userid
-------------
   "ID0003"
   "ID0004"
   "ID0005"
   "ID0006"
   "ID0007"

(5 rows)

但如果我通过这些 ID 之一进行查询,我会得到 0 行

select * from mytable where userid='ID0003' limit 5 ALLOW FILTERING;
(0 rows)

为什么我得到 0 行?我设置了索引,所以that is not the problem

[cqlsh 4.1.1 | Cassandra 2.0.10 | CQL spec 3.1.1 | Thrift protocol 19.39.0]

【问题讨论】:

  • 那些" 引用真的是您记录的一部分吗?如果是这样,您需要改用userid='"ID0003"'ID0003 != "ID0003"
  • @MarcB:没有,刚试过。
  • 好吧,检查其他东西,比如不可见/空白字符。例如'[space]foo' 不等于 'foo'
  • 我刚刚设置了一个相同的表和索引,查询工作正常。你能尝试重建你的索引吗?
  • @MarcB 没关系,你是对的。我有引号空格,这就是为什么它一开始不起作用...当字段有换行符时,引号只是从CSV加载时的特殊字符

标签: csv select cassandra


【解决方案1】:

这是 CSV 导入工作原理的产物。我的数据来自使用引号作为特殊字符的 CSV。所以我的行看起来像"2014-09-15", "ID0547" , "Firstname 0547" , "Lastname 0547"

较早的文档指出quotation marks are only special characters when a field has a newline。较新的文档没有注意到这一点,但行为仍然存在。因此,我的 ID 格式为 [SPACE][DOUBLEQUOTE]ID0547[DOUBLEQUOTE][SPACE]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多