2016-08-03 90 views
0

我在努力弄清楚如何在Gremlin中執行嵌套的GROUP BY。DSE圖Gremlin GROUP BY計數查詢

My圖表是這樣(在頂點[...]):

[調查] < - forSurvey - [CE] - collectedFrom - > [CE 樣品] - currentResponseState - > [responseState]

  • 1調查具有多個CE。
  • 1 CE有許多CE樣本。
  • 每個CE樣本都有一個當前響應狀態。
  • 有3種可能的狀態(未開始,正在進行中,已完成)。

我想通過CE和響應狀態來計數CE採樣。例如:

CE = CE01,狀態=未開始,計數= 45。

CE = CE01,State =進行中,count = 34。

CE = CE01,狀態=完成,計數= 25。

CE = CE02,狀態=未開始,計數= 60。

CE = CE02,State =進行中,count = 33。

CE = CE02,狀態=完成,計數= 72。

CE = CE03,狀態=未開始,計數= 44。 etc

我可以使用以下查詢獲取組計數,該查詢顯示每個CE的每個狀態(在每個狀態的單獨列中)的正確計數,但它不顯示CE名稱:

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做到這一點的任何提示將不勝感激。

+0

對不起,忘了解釋:'groupCount()。by(「code」)'位是由狀態碼分組和計數。 –

回答

0

一個示例圖會有幫助,但我們試試吧。我認爲你正在尋找這個遍歷:

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