cha*_*ows 5 csv neo4j cypher load-csv
neo4j版本2.3.1
索引存在于Stoptime.stop_sequence和Stoptime.key.
Stoptime.stop_sequence是数字.
图形:
(Stoptime)-[:PART_OF]->(Trip)
声明:
//USING PERIODIC COMMIT 1000
PROFILE
load csv with headers from "file:///path/to/csv" as csv with csv limit 0
match (s1:Stoptime{key:(csv.trip_id + csv.stop_id)})-[:PART_OF]->(trip:Trip), (s2:Stoptime)-[:PART_OF]->(trip)
where s2.stop_sequence = s1.stop_sequence + 1
create (s1)-[:PRECEDES]->(s2);
Run Code Online (Sandbox Code Playgroud)
生成的配置文件如下所示:
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| Operator | Rows | DB Hits | Identifiers | Other |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +EmptyResult | 0 | 0 | | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +UpdateGraph | 0 | 0 | anon[188], anon[227], anon[311], csv, s1, s2, trip | CreateRelationship |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Eager | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Filter | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | Ands(trip:Trip, s2:Stoptime, s2.stop_sequence == Add(s1.stop_sequence,{ AUTOINT0}), NOT(anon[188] == anon[227])) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SimplePatternMatcher | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SchemaIndex | 0 | 0 | csv, s1 | Add(csv.trip_id,csv.stop_id); :Stoptime(key) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Slice | 0 | 0 | csv | Literal(0) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +LoadCSV | 1 | 0 | csv | |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
在这种情况下如何将MATCH + WHERE与CREATE分开以删除EAGER?
PRECEDES在将预先建立的关系填充到图表中之前,我是否唯一可以将CSV预处理为具有其中定义关系的新CSV ?或者是否有某种方法可以与更好的MATCH建立连续关系.