2015-01-07 34 views
0

向所有人致意!使用Cypher遍歷圖並將結果集作爲表格

我用的Neo4j和Cypher支架一個初學者,有下列功能的問題:

  1. 我有節點的非循環有向圖是與:DATA_FLOWS邊緣

    連接
  2. 有可能是兩個節點之間有多個邊緣,因爲這些邊緣可能具有不同的邊緣屬性 - scenario_id

  3. 當我按組選擇一個或多個節點並嘗試按一個或多個s cenario_id(邊緣屬性)我希望看到一定深度的依賴於我的選擇和邊緣濾波器

  4. 我使用下面的查詢所有相關的節點(* .. N): match p= (src:Node)-[:DATA_FLOWS*..5]->(dst:Node) where src.group_id IN {Group} and all(x in RELATIONSHIPS(p) WHERE x.scenario_id IN {Scenario}) RETURN p;

  5. 這看起來OK在Neo4j的瀏覽器呈現在一個不錯的視覺方式的結果,但我需要運行在湯姆·索亞視野,這預計平表樣的結果集,而不是Json的此查詢...

  6. 因此,我的查詢,經過太多不成功的嘗試,看起來像: match p= (src:Node)-[:DATA_FLOWS*..5]->(dst:Node) where src.group_id IN {Group} and all(x in RELATIONSHIPS(p) WHERE x.scenario_id IN {Scenario}) WITH p MATCH (a)-[r:DATA_FLOWS]->(b) where all(x in RELATIONSHIPS(p) WHERE ID(x) = ID(r)) RETURN a.id, r.scenario_id, b.id

  7. 我不認爲它帶來正確的結果,這是非常緩慢...

我將不勝感激,如果有人爲我提供了關於如何提高任何建議,改寫等這個查詢,並得到一個更好的性能。

謝謝你在前進, 弗拉德

回答

0

以表格的方式制定Neo4j的數據,你應該考慮使用neo4j-jdbc driver它允許你就好像它是任何其他關係數據庫訪問Neo4j的數據庫。

我對Tom Sawyer Perspective並不熟悉,但它對於支持從JDBC連接中提取數據的可視化工具來說非常常見,所以這可能會讓您的生活變得更加輕鬆,並且意味着您甚至不必在將數據導入工具之前,將數據導出爲表格文件格式(CSV)。

+0

非常感謝您的建議。我現在會嘗試使用JDBC驅動程序。在與Tom Sawyer Perspectives團隊交談之後,我瞭解到在未來的軟件版本中,他們將能夠與Json一起工作,而不僅僅是表格數據集。 –