CQL 在带有 IN 子句的 CQL 查询中使用 set/list

CQL using a set/list in a CQL query with IN clause

我知道在分区键中使用 IN 子句但是我想写一个 UDF 从 2 个日期 returns 一个 array/list 的值可以是用于 IN 子句。

基本上我想要实现的是:

CREATE OR REPLACE FUNCTION date_range(start date, end date) called on null input returns set<date> language JAVA as
$$
// function implementation here that returns a list of dates between the 2 provided dates
$$

然后我会 运行 像

这样的 CQL 查询
SELECT * from my_table where t_id=3 AND t_date IN (date_range('2010-01-01', '2019-01-10');

table 结构是

CREATE TABLE test ( t_id number, t_date date, t_value number) primary key ((t_number, t_date));

我有什么办法可以做到这一点?

您不能在 Cassandra 中执行此操作 - UDF 主要应用于单个列。在 WHERE 中有一个支持 UDF 的 JIRA,但它仍然是开放的:https://issues.apache.org/jira/browse/CASSANDRA-8488

我建议在应用程序中生成此列表,并将其与准备好的查询一起使用 - 从性能的角度来看,它可能更有效。