DSE Graph Gremlin GROUP BY计数查询

时间:2016-08-03 09:45:54

标签: datastax gremlin

我正在努力弄清楚如何在Gremlin中进行嵌套的GROUP BY。

我的图表是这样的([...]中的顶点):

  

[survey]< - forSurvey - [ce] - gatherFrom - > [ce   样品] - currentResponseState - > [responseState]

  • 1调查有很多CE。
  • 1 CE有许多CE样本。
  • 每个CE样本都有一个当前响应状态。
  • 有3种可能的状态(未开始,正在进行,已完成)。

我想通过CE和响应状态来计算CE样本。例如:

  

CE = CE01,State =未启动,count = 45。

     

CE = CE01,状态=正在进行中,计数= 34。

     

CE = CE01,State = completed,count = 25.

     

CE = CE02,State =未启动,count = 60。

     

CE = CE02,状态=正在进行中,计数= 33。

     

CE = CE02,State = completed,count = 72。

     

CE = CE03,State =未启动,count = 44。等

我可以使用以下查询获取组计数,该查询显示每个状态的正确计数(在每个状态的单独列中),每个CE都有一个单独的行,但它不显示CE名称:< / p>

g.V().hasLabel("survey").has("surveyId","LFS")
.in("forSurvey").as("ce")
.local(out("collectedFrom")
.out("currentResponseState")
.groupCount().by("code")).as("counts")
.select("counts")

但我无法弄清楚Gremlin如何将CE名称与计数一起返回。如果我在“select()”投影中包含“ce”以获取CE顶点的名称,则根本没有结果。

这在SQL中是微不足道的,在那里我只是GROUP BY相关列,但Gremlin是一个不同的世界。

有关如何使用DSE Graph 5.0 Gremlin执行此操作的任何提示将不胜感激。

1 个答案:

答案 0 :(得分:0)

示例图表会有所帮助,但我们试试吧。我想你正在寻找这个遍历:

g.V().hasLabel("survey", "surveyId", "LFS").in("forSurvey").as("CE").
  out("collectedFrom").out("currentResponseState").as("State).
  select("CE", "State").by("name", "code").groupCount()