Select 特定列加上 avg 和 max 使用 datastax Java driver for Cassandra 中的别名可链接便捷方法

Select specific columns plus avg and max using the aliased chainable convenience methods in datastax Java driver for Cassandra

假设我使用 driver:

的便捷方法进行一般 SQL 查询
statement = select().from(keyspace, table)
            .where(eq("fieldx", var1))
            .and(eq("fieldy", var2))
            .orderBy(asc("fieldz"));
return client.getSession().execute(statement);

以及我将如何修改上面的查询以支持这种 CQL/SQL:

select fielda, fieldb, avg(fieldc), max(fielde) from ...

使用 IntelliJ,我注意到在 select(). 之后我只能将它链接起来附加一个 column() 来过滤特定列的查询,但我没有看到 [=18= 的可用选项] 和 max()。查看 Java 文档,看起来应该存在这些文档?或者我没有使用可用的正确 select() 方法(我是 Cassandra 和这个 Java driver 的新手)。使用来自 IDE 的 goto 声明,我看到 select() 方法导致 QueryBuilder class 的静态 select() 方法 returns a SelectionOrAlias()与 JavaDocs 匹配的可用方法的方法 class.

对于导入,这些是导入的 non-custom classes w.r.t。 driver:

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Statement;
import com.google.inject.Inject;
import static com.datastax.driver.core.querybuilder.QueryBuilder.*;

正确的查询设置我缺少什么?

自 3.3.0 / dse 1.3.0 (JAVA-1443) 以来,QueryBuilder 中提供了 CQL 中的常用聚合方法。以下是您将如何使用它们:

import com.datastax.driver.core.Statement;

import static com.datastax.driver.core.querybuilder.QueryBuilder.*;

public class Example {

    public static void main(String args[]) {
        Statement statement = select("fielda",
                "fieldb",
                avg("fieldc"),
                max("fielde"))
                .from("tbl");

        System.out.println(statement);
    }
}

这产生:SELECT fielda,fieldb,avg(fieldc),max(fielde) FROM tbl;