如何通过节点js运行cassandra的复杂sql

时间:2017-08-02 15:15:54

标签: node.js express cassandra cql

我正在尝试从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) {

如果我运行简单的select语句就可以了,任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

简单地说,你不能。 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版本上运行,你唯一的选择就是在客户端进行一些处理。