新しくNeo4jに新しいといくつかのガイダンスを探しています:-)Cypher LOAD CSV - プロパティによって順序付けられたノードのリンクリストを作成する方法は?
基本的に以下のcsvからグラフを作成します。 NEXT関係は、プロパティの順序に基づいてポイント間に作成されますシーケンス。 シーケンスが連続している場合は、無視したいと思います。何か案は?
(S1:形状) - [:POINTS] - >(P1:ポイント)
(S1:形状) - [:POINTS] - >(P2:ポイント)
(S1:シェイプ) - [:POINTS] - >(P3:ポイント)
(P1) - [:NEXT] - >(P2)
(P2):NEXT] - >(P3)
など
shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled
"1-700-y11-1.1.I","53.42646060879","-6.23930113514121","1","0"
"1-700-y11-1.1.I","53.4268571616632","-6.24059395687542","2","96.6074531286277"
"1-700-y11-1.1.I","53.4269700485041","-6.24093540883784","3","122.549696670773"
"1-700-y11-1.1.I","53.4270439028769","-6.24106779537932","4","134.591291249566"
"1-700-y11-1.1.I","53.4268623569266","-6.24155684094256","5","172.866609667575"
"1-700-y11-1.1.I","53.4268380666968","-6.2417384245122","6","185.235926544428"
"1-700-y11-1.1.I","53.4268874080753","-6.24203735638874","7","205.851454672516"
"1-700-y11-1.1.I","53.427394066848","-6.24287421729846","8","285.060040065768"
"1-700-y11-1.1.I","53.4275257974236","-6.24327509689195","9","315.473852717259"
"1-700-y11-1.2.O","53.277024711771","-6.20739084216546","1","0"
"1-700-y11-1.2.O","53.2777605784999","-6.20671521402849","2","93.4772699644143"
"1-700-y11-1.2.O","53.2780318605927","-6.2068238246152","3","124.525619356934"
"1-700-y11-1.2.O","53.2786209984572","-6.20894363498438","4","280.387737910482"
"1-700-y11-1.2.O","53.2791038678913","-6.21057305710353","5","401.635418300665"
"1-700-y11-1.2.O","53.2790975844245","-6.21075327761739","6","413.677012879457"
"1-700-y11-1.2.O","53.2792296384738","-6.21116766400758","7","444.981964564454"
"1-700-y11-1.2.O","53.2799500357098","-6.21065767664905","8","532.073870043666"
"1-700-y11-1.2.O","53.2800290799386","-6.2105343995296","9","544.115464622458"
"1-700-y11-1.2.O","53.2815594673093","-6.20949562301196","10","727.987702875002"
私はできない3番目の部分です。 NEXT関係を作成する!
//1. Create Shape
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM
'file:///D:\\shapes.txt' AS csv
With distinct csv.shape_id as ids
Foreach (x in ids | merge (s:Shape {id: x}));
//2. Create Point, and Shape to Point relationship
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM
'file:///D:\\shapes.txt' AS csv
MATCH (s:Shape {id: csv.shape_id})
with s, csv
MERGE (s)-[:POINTS]->(p:Point {id: csv.shape_id,
lat : csv.shape_pt_lat, lon : csv.shape_pt_lat,
sequence : toInt(csv.shape_pt_sequence), dist_travelled : csv.shape_dist_traveled});
//3.Create Point to Point relationship
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM
'file:///D:\\shapes.txt' AS csv
???
何らかの理由で、関係は作成されません。正しいバッチ数を正しく返します。 apoc.perioidic.iterateは私が想定している変更をコミットします!多分apoc.perioidic.iterateの中で別のプロシージャを呼び出すことはできませんか?これは正常に実行されましたが、バッチ処理されませんでした。MATCH(s:Shape) WITH MATCH(s) - [:POINTS] - >(point:Point) WITH s、ポイント ORDER by point.sequence ASC WITH s、COLLECT(ポイント)をポイントとして CALL apoc.nodes.link(ポイント、 'NEXT') return s; – Robatron
興味深い発見、私もこれを複製することができました。私の答えを変えてバグを書き留め、バッチ処理をせずに単純化したクエリを提案しました。 – InverseFalcon