简体   繁体   中英

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"))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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