【问题标题】:Neo4j Cypher building a graph using csvNeo4j Cypher 使用 csv 构建图形
【发布时间】:2021-11-05 08:52:10
【问题描述】:

下午好! 我有一个具有以下结构的 csv 文件:

numberRow,A,B,C
0,a1,b1,c1
1,,,c2
2,,b2,c3
3,a2,b3,c4
4,,,c5
...

我上传使用,对于其他节点,脚本类似

LOAD CSV WITH HEADERS FROM 'file:///file.csv' AS row
WITH row
  WHERE row.a IS NOT NULL
CREATE
  (aa:A {numberRow: toInteger(row.numberRow), value: row.a});

我的任务是得到如下形式的图表

CREATE
  (a1:A {numberRow: 0, value: 'a1'})-[:R]-(b1:B {numberRow: 0, value: 'b1'})-[:R]->(c1:C {numberRow: 0, value: 'c1'}),
  (a1)-[:R]-(b1)-[:R]->(c2:C {numberRow: 1, value: 'c2'}),
  (a1)-[:R]-(b2:B {numberRow: 2, value: 'b2'})-[:R]->(c3:C {numberRow: 2, value: 'c3'}),
  (a2:A {numberRow: 3, value: 'a2'})-[:R]-(b3:B {numberRow: 3, value: 'b3'})-[:R]->(c4:C {numberRow: 3, value: 'c4'}),
  (a2)-[:R]-(b3)-[:R]->(c5:C {numberRow: 4, value: 'c5'})

请告诉我如何提出绘制图表的请求,可能会将所有节点一起加载,我提前感谢

【问题讨论】:

    标签: csv neo4j cypher


    【解决方案1】:

    您的案例需要跟踪前几行中的项目。我建议先创建一个完整的数组,然后从那里合并。可以使用REDUCE 来创建一个完整的数组并循环遍历项目:

    WITH [ 
           {numberRow:0,A:'a1',B:'b1',C:'c1'},
           {numberRow:1,C:'c2'},
           {numberRow:2,B:'b2',C:'c3'},
           {numberRow:3,A:'a2',B:'b3',C:'c4'},       
           {numberRow:4,C:'c5'}      
         ] AS rows
    UNWIND rows AS row
    
    WITH row ORDER BY row.numberRow ASC
    WITH COLLECT(row) AS rows
    
    RETURN REDUCE(arr=[], row IN rows |
                arr
                + {
                    numberRow: row.numberRow,
                    A:COALESCE(row.A,LAST(arr).A),
                    B:COALESCE(row.B,LAST(arr).B),
                    C:COALESCE(row.C,LAST(arr).C)
                  }
               ) AS completeArray
    

    【讨论】:

    • 是的。请接受答案;)
    猜你喜欢
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多