【发布时间】:2019-06-29 19:44:52
【问题描述】:
有没有办法过滤大于一列而小于另一列,或者适当地建模?
create table foo (id int, low int, high int, primary key (id, low, high));
这些查询有效:
select * from foo;
select * from foo where id = 1 and low < 0;
但是这个查询没有:
select * from foo where id = 1 and low < 0 and high >10;
结果:
InvalidRequest:来自服务器的错误:code=2200 [Invalid query] message="无法限制聚类列“高”(前面的列“低”受非 EQ 关系限制)”
我目前已启用过滤。它在一个分区上,并且对远远超出预期场景的场景的跟踪在可接受的范围内执行,但我想知道是否有更好的方法来对表进行建模,以便所有人获取信息而不导致过滤?
【问题讨论】:
-
这是它为什么不起作用的解释 - Clustering columns。如果可能的话,一个可能的解决方案是使用 IN 作为低列
-
谢谢。好吧,老实说,低值可以是任何数字,所以我认为 IN 行不通。