按多个键分组并在 Gremlin 上求和
Group By Multiple Keys And Sum On Gremlin
我有一个查询:
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"))
解决方式如下:
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"))
我有一个查询:
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"))
解决方式如下:
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"))