简体   繁体   English

按多个键分组并在 Gremlin 上求和

[英]Group By Multiple Keys And Sum On Gremlin

I have a query like:我有一个像这样的查询:

GraphTraversal t = graph.V().hasLabel("App").as("a")
        .inE("RANKS").as("r")
        .outV().as("k")
        .choose(__.select("k").by("countryCode").is(__.in(...)),
                __.math("1.0 / r").by("rank1"),
                __.math("1.0 / r").by("rank2"))
        .as("score")
        ...;

In here, I want to aggregate data like:在这里,我想汇总如下数据:

group by a.appId, k.countryCode, sum(score)

I tried like:我试过像:

.group("a").by("appId").group("k").by("countryCode").by(...select("score").sum())

but this doesnt work.但这不起作用。

Do you have any suggestion?你有什么建议吗?

Solved like :解决如下

GraphTraversal t = graph.V().hasLabel("App").as("a")
        .inE("RANKS").as("r")
        .outV().as("k")
        .choose(__.select("k").by("countryCode").is(__.in(...)),
                __.math("1.0 / r").by("rank1"),
                __.math("1.0 / r").by("rank2"))
        .as("score")
    .select("a", "k").by("appId").by("countryCode")
                .group().by().by(__.select("score").sum().as("sum_score"))

Solved like:解决如下:

GraphTraversal t = graph.V().hasLabel("App").as("a")
        .inE("RANKS").as("r")
        .outV().as("k")
        .choose(__.select("k").by("countryCode").is(__.in(...)),
                __.math("1.0 / r").by("rank1"),
                __.math("1.0 / r").by("rank2"))
        .as("score")
    .select("a", "k").by("appId").by("countryCode")
                .group().by().by(__.select("score").sum().as("sum_score"))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM