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
我建议在应用程序中生成此列表,并将其与准备好的查询一起使用 - 从性能的角度来看,它可能更有效。
我知道在分区键中使用 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
我建议在应用程序中生成此列表,并将其与准备好的查询一起使用 - 从性能的角度来看,它可能更有效。