我正在寻找关于处理进入Neo4j的数据的最佳方法的建议。
我有一套结构化数据,CSV格式,与旅行有关。数据如下:
"JourneyID" -唯一的参考文献#/主键,例如g 1234
"StartID" - ref#,这是一个车站,例如Station1
"EndIID" - ref# --这是一个站点,例如Station1 (开始和结束可以相同)
"Time" -整数,例如24
假设我有100次旅行/行数据,显示了10个不同站点之间的行程。
我可以在SQL或Excel中看到和处理这些数据。我想在Neo4j中处理这个问题。
这就是我目前的情况:
StartID,以JourneyID为标签,以EndID为标签
这意味着站的CSV中的每一行都是自己的节点。然后,我使用JourneyID (主键)在开始和结束之间创建了一个关系,结果是只将100个节点连接到100个节点。例如从Station1到站2、站1和站3、站1站和站4的连接。它没有显示Station1启动和结束Station1、2和3之间的关系--这就是我想要显示的。
我如何最好地对这些数据建模,以便图表能够看到10个唯一的StartID,连接到不同的EndIDs -显示它们之间的关系?
提前感谢
(全新的图形!)
发布于 2020-06-03 17:48:33
我认为你不想让一个旅程成为一个节点,你想让旅程ID成为边缘的一个属性:
LOAD CSV WITH HEADERS FROM 'file://input.csv' AS row
MERGE (start:Station {id: row.StartID})
MERGE (end:Station {id: row.EndID})
MERGE (start)-[:JOURNEY {id:row.JourneyID}]->(end)这更直观地描述了数据,如果您能够更详细地描述旅程,甚至可以将其扩展到不同的关系类型。
编辑:
这是为了回答你的问题,但我不能说这是如何扩大的。我认为这取决于您计划执行的查询类型。
发布于 2020-06-02 19:36:45
这个示例查询使用合并来避免创建重复的节点和关系,应该可以帮助您入门:
LOAD CSV WITH HEADERS FROM 'file://input.csv' AS row
MERGE (start:Station {id: row.StartID})
MERGE (end:Station {id: row.EndID})
MERGE (j:Journey {id: row.JourneyID})
ON CREATE SET j.time = row.Time
MERGE (j)-[:FROM]->(start)
MERGE (j)-[:TO]->(end)https://stackoverflow.com/questions/62147346
复制相似问题