如何解决在带有时间戳的neo4j / Connections中创建社交网络csv
首先,我检查了先前的问题并找到了一些答案,但是无法将解决方案转移到我的确切问题上。与我的问题最接近的问题是this one here.
我的问题:
我有一个很大的 .csv 文件,其中包含来自不同 ids 和时间戳的交互。列为 source , target 和 servertime ,一行如下所示:
B_655,B_632、2020-07-03 00:11:48.828
由于不同的设备在两个方向上都测量连接,通常相同的连接几乎同时发生,但源和目标已切换:
B_632,B_655、2020-07-03 00:11:47.258
不同的设备每15秒测量一次,因此更长的连接(持续45s的交互)将具有3个不同的行。
B_655,B_632、2020-07-03 00:11:48.828
B_655,B_632、2020-07-03 00:12:03.828
B_655,B_632、2020-07-03 00:12:18.828
我知道我的Neo4j数据库中希望拥有所有这些数据,并且希望对两个ID(源和目标)之间的连接具有更大的权重(发生频率更高),而且还能够根据时间调查图表。例如,我想查询在日期X和日期y之间有多少个新的连接ID B_649 。
这些ID是唯一的,但正如我之前所说,它们可以出现在源列和目标列中。
In能够在neo4J浏览器中读取数据,但是在建立连接方面很费力。可以读取我的csv文件的Cypher-Query如下:
LOAD CSV WITH HEADERS FROM 'file:///connections.csv' AS row
WITH row.source as sourcetag,datetime(replace(row.servertime,' ','T')) as timestamp,row.target as beacon
RETURN timestamp,sourcetag,beacon
limit 3
有人知道将这种社交网络导入neo4j的方法吗? 提前非常感谢!
解决方法
首先,您要为节点创建唯一约束。我会假设这是一个
(:User)-[:INTERACTS]->(:User)
但是您可以在以后查看时更改它。
CREATE CONSTRAINT ON (u:User) ASSERT u.id IS UNIQUE;
现在您可以继续导入csv文件:
LOAD CSV WITH HEADERS FROM 'file:///connections.csv' AS row
WITH row.source as sourcetag,datetime(replace(row.servertime,' ','T')) as timestamp,row.target as beacon
MERGE (s:User{id:sourcetag})
MERGE (t:User{id:beacon})
CREATE (s)-[:INTERACTION{date:timestamp}]->(t)
您可以更改节点标签和关系类型的显示方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。