【问题标题】:Group By Multiple Keys And Sum On Gremlin按多个键分组并在 Gremlin 上求和
【发布时间】:2021-02-12 17:39:47
【问题描述】:

我有一个类似的查询:

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

在这里,我想汇总如下数据:

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

我试过了:

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

但这不起作用。

你有什么建议吗?

已解决喜欢

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

【问题讨论】:

  • 在这种情况下也可以嵌套group步骤。

标签: java gremlin tinkerpop3


【解决方案1】:

解决如下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2015-12-13
    • 1970-01-01
    • 2021-11-01
    • 2022-09-23
    相关资源
    最近更新 更多