在 neo4j/Connections 中创建一个带有时间戳的社交网络 csv
Create a social network csv in neo4j / Connections with a timestamp
首先,我检查了以前的问题并找到了一些答案,但无法将解决方案转移到我的确切问题上。最接近我的问题的问题是
我的问题:
我有一个很大的 .csv 文件,其中包含来自不同 ids 的交互,带有 timestamp.这些列是 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 秒测量一次,因此较长的连接(持续 45 秒的交互)将有 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)
您可以根据自己的喜好更改节点标签和关系类型。
首先,我检查了以前的问题并找到了一些答案,但无法将解决方案转移到我的确切问题上。最接近我的问题的问题是
我的问题:
我有一个很大的 .csv 文件,其中包含来自不同 ids 的交互,带有 timestamp.这些列是 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 秒测量一次,因此较长的连接(持续 45 秒的交互)将有 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)
您可以根据自己的喜好更改节点标签和关系类型。