首页 > 解决方案 > Neo4j 中用于 GDS 计算的图形生成

问题描述

我正在处理一个结构类似于以下内容的 CSV 文件:

aId, Amount, bId 
int, float, int 

这里 aId 和 bId 分别对节点 A 和 B 有约束。在最初加载节点和关系时,

LOAD CSV with headers FROM 'file:///abc.csv' as row
MERGE (a: A {aid: toInteger(row.aID)})
MERGE (b: B {bid: toInteger(row.bID)})
CREATE (a)-[:HAS_SENT {amt: toFloat(row.Amount)}]->(b)

有 1490 个标签和 1299 个关系。

现在我希望使用不同的图形数据科学库对文件执行各种计算。为了对此进行投影,我使用CALL gds.graph.create.estimate(['A'],['HAS_SENT'])返回的 851 个节点和 1299 个关系估计了相同的结果。

但是,当我尝试创建图表时CALL gds.graph.create('mySampleGraph',['A'],['HAS_SENT']),它返回了相同数量的节点,但关系为 0。

我错过了什么,我怎么可能得到正确的映射?

标签: neo4jcyphergraph-databasesgraph-data-science

解决方案


从您的导入查询来看,您的关系仅存在于节点 A 和 B 之间。标记为 A 的节点之间没有关系。通常,仅加载节点投影部分中描述的同时具有源节点和目标节点的关系。在您的情况下,不存在同时具有标签 A 的源节点和目标节点的关系。如果您同时加载标签 A 和 B,则 GDS 应加载所有关系。

CALL gds.graph.create('mySampleGraph',['A', 'B'],['HAS_SENT'])

顺便说一句...有什么特别的理由有两个标签而不是一个标签吗?


推荐阅读