我正在寻求关于处理进入Neo4j的数据的最佳方式的建议。
我有一组结构化的数据,CSV格式,与旅程有关。这些数据是
"旅程ID" - 独有的参考文献# 主密钥,例如:1234。
"StartID" - ref# ,这是一个站点,例如:Station1。
"EndIID" - ref# 这是一个站点,例如Station1(起点和终点可以相同)。
"时间" - 整数
假设我有100个行程数据,显示10个不同车站之间的行程。
我可以在SQL或Excel中查看和处理这些数据。我想在Neo4j中处理这些数据。
这是我目前所拥有的。
StartID与JourneyID作为标签EndID与JourneyID作为标签。
这意味着从CSV中的每一行对于一个站点来说都是自己的节点。然后我用JourneyID(主键)创建了一个Start和End之间的关系,效果就是100个节点连接到100个节点。如:站1和站2的连接,站1和站3的连接,站1和站4的连接。它没有显示起点站1和终点站1、2、3之间的关系--这正是我想显示的。
我怎样才能最好地对这些数据进行建模,使图形看到10个唯一的StartID,连接到不同的EndIDs - 显示它们之间的关系?
先谢谢你
(新来的Graphs!)
我认为你不希望旅程是一个节点,你希望旅程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)
这样可以更直观地描述数据 如果你能更详细地描述Journey,你甚至可以把它扩展到不同的关系类型中去
这是为了回答你的问题,但我不能说这是如何扩展的。我认为这取决于你计划进行的查询类型。
这个示例查询,它使用了 MERGE 以避免创建重复的节点和关系,应该可以帮助你入门。
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)