【问题标题】:how to run complex sql of cassandra via node js如何通过节点js运行cassandra的复杂sql
【发布时间】:2018-01-09 21:50:48
【问题描述】:

我正在尝试从 node.js 运行复杂的 cassandra sql,并为其使用 cassandra express 包,下面是查询:

client.execute("select distinct c.objekt PSP, b.bestellung purchase_order, b.details, b.bestellnettowert Budget, c.Interim_Amounts, c.belegdatum, b.cost_centre
                                from
                                            (select objekt, sum("Wert/KWahr") Interim_Amounts, belegdatum, bestellung from bdr.cj74 where year(belegdatum) = '2016' group by objekt, belegdatum, bestellung) c,
                                            (select bestellung, "Lieferant/Lieferwerk" details, bestellnettowert, belegdatum, "PSP-Elm", "Kostenst." cost_centre  from bdr.opexcapex where year(opexcapex.belegdatum) = '2016') b
                                where b."PSP-Elm" = c.objekt
                                            and year(c.belegdatum) = year(b.belegdatum)
                                            and c.bestellung = b.bestellung", [],

function(err, result) {

如果我运行简单的选择语句,它就可以工作,任何帮助都会很棒!

【问题讨论】:

    标签: node.js express cassandra cql


    【解决方案1】:

    简单地说,你不能。 Cassandra 支持 CQL,而不是 SQL。 CQL 的语法与 SQL 相似,但许多 SQL 关键字在 CQL 中的行为不同。

    例如,您不能执行 JOIN 或子查询之类的操作。它确实允许您执行诸如 DISTINCT 之类的操作以及诸如 SUM 之类的聚合,但是对何时以及如何使用这些方法存在限制(仅允许在某些键上使用)。这是关于使用聚合进行查询的文档的链接:https://docs.datastax.com/en/cql/latest/cql/cql_using/useQueryStdAggregate.html

    此外,聚合是从 Cassandra 3.0 开始的新功能。如果您在 2.x 版本上运行,您唯一的选择是在客户端进行一些处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 2017-08-15
      • 2019-08-29
      • 2017-02-04
      • 1970-01-01
      • 2021-08-10
      • 2018-01-06
      相关资源
      最近更新 更多