【问题标题】:How to determine time stamps for Cassandra queries如何确定 Cassandra 查询的时间戳
【发布时间】:2018-12-29 04:23:24
【问题描述】:

插入表中的值之一是当前时间。我使用toTimestamp(now()) 计算当前时间。现在,我想计算当前时间减去 90 天,当前时间减去 15 天。 我的问题是如何计算 current time - nth day

查询当前时间戳:

INSERT INTO TABLE_NAME (col_1, col_2, col_3) VALUES ('val_1', toTimestamp(now()), val_3);

在上述查询中,val_2 是当前时间戳。当前时间戳由

决定
toTimestamp(now())

我如何计算current time - 90 days , current time - 2weeks

【问题讨论】:

    标签: cassandra cassandra-2.0


    【解决方案1】:

    此功能未内置在 CQL 中。

    如果您能够使用 UDF,则可以(基于此处给出的示例: How to get Last 6 Month data comparing with timestamp column using cassandra query?) 执行以下操作:

    通过在 cassandra.yaml 中添加或更改此行为 true,根据需要启用 UDF:

    enable_user_defined_functions: true
    

    然后像这样添加两个user defined functions

    CREATE FUNCTION dateadd(date timestamp, daydiff int)
        CALLED ON NULL INPUT
        RETURNS timestamp
        LANGUAGE java
        AS $$java.util.Calendar c = java.util.Calendar.getInstance();c.setTime(date);c.add(java.util.Calendar.DATE, daydiff);return c.getTime();$$
    
    CREATE FUNCTION weekadd(date timestamp, weekdiff int)
        CALLED ON NULL INPUT
        RETURNS timestamp
        LANGUAGE java
        AS $$java.util.Calendar c = java.util.Calendar.getInstance();c.setTime(date);c.add(java.util.Calendar.DATE, weekdiff*7);return c.getTime();$$
    

    像这样从表格中选择数据:

    select dateadd(col_2,-90) from TABLE_NAME;
    select weekadd(col_2,-2) from TABLE_NAME;
    

    【讨论】:

    • @Valerir Parham-thompson,感谢您的回复。我在哪里定义 UDF ?我正在使用 cassandra 驱动程序通过 python 连接到数据库并执行 cql。我应该将 UDF 添加为我的 python 脚本的一部分吗?
    • 您需要在 Cassandra 中将 udf 定义为架构的一部分。在执行 cql 时,您需要使用它们。注意 udf 的逻辑语言默认支持 Java。检查datastax.com/dev/blog/…
    猜你喜欢
    • 2017-04-30
    • 2022-12-04
    • 2019-05-25
    • 2014-05-07
    • 2016-05-04
    • 2021-09-26
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多