Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 迭代csv文件并查询属性值-Cypher Neo4j_Loops_Csv_Filter_Neo4j_Cypher - Fatal编程技术网

Loops 迭代csv文件并查询属性值-Cypher Neo4j

Loops 迭代csv文件并查询属性值-Cypher Neo4j,loops,csv,filter,neo4j,cypher,Loops,Csv,Filter,Neo4j,Cypher,请查看csv文件的图像。我和Cypher,Neo4j一起工作。正如您所看到的,带有时间戳的活动都分别属于一个case\u id。很多都属于同一个案例,你可以看到案例3,2,1,但请想象还有更多。我想对属于相同案例id的活动进行分组,并执行相同的操作!对每个分组的查询分组是必不可少的 除了为每个组重写相同的查询之外,还有其他方法可以做到这一点吗?这里分为三个步骤: 一, 二, 三, 因此,基本上我想概括一下cid=3或2或1的情况,即迭代所有不同的case-id,而不显式地命名它们。在Java中,

请查看csv文件的图像。我和Cypher,Neo4j一起工作。正如您所看到的,带有时间戳的活动都分别属于一个case\u id。很多都属于同一个案例,你可以看到案例3,2,1,但请想象还有更多。我想对属于相同案例id的活动进行分组,并执行相同的操作!对每个分组的查询分组是必不可少的

除了为每个组重写相同的查询之外,还有其他方法可以做到这一点吗?这里分为三个步骤:

一,

二,

三,

因此,基本上我想概括一下cid=3或2或1的情况,即迭代所有不同的case-id,而不显式地命名它们。在Java中,数组内容中的每个元素都有点类似:按大小写分组\u id执行查询

知道怎么做吗

提前谢谢你,如果这听起来太神秘,我很乐意提供更好的描述

更新: 以下是查询:

MATCH(act: Activity)
WHERE act.caseId = 1 //and here I want to be able to simplify for EVERY caseId
WITH act ORDER BY act.time ASC 
WITH apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(act.activityName))) AS g
UNWIND g AS p
RETURN*

在我看来,单次加载CSV查询应该处理这个问题,只需将caseId设置为row.case\u id的整数值:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///XY" AS row
WITH toInteger(row.case_id) AS cid, row
CREATE (act:Activity {caseId: cid, activityName: row.activity, time: row.timestamp})

好的,我知道您想对每个组执行一些查询。您能解释一下为什么在加载csv中创建后执行查询不起作用吗

导入后执行查询是否对您有效


有关您打算运行的查询的更多信息可能会有所帮助。

您能解释一下为什么在加载csv中创建后执行查询不起作用吗?->它可以工作,但是请想象有多达一百个不同的case_id。导入后执行查询是否对您有效?最好是在进口时。但是如果不可能,可以。有关您打算运行的查询的更多信息将很有帮助。->在每个组中,我想通过第一个时间戳,然后通过成对的活动对节点进行排序。您能提供查询吗?时间属性意味着您只需要根据该属性进行查询和排序,除非您希望按顺序通过这些节点创建链表结构。你能详细解释一下你所说的成对活动是什么意思吗?谢谢你。实际上,我真正想做的就是执行一个查询,而不必引用每个不同的cid。我已经试过你提出的问题了。它导入所有节点,但仅此而已。但我想要一个通用语句“对于每个不同的cid执行查询X”。我在手册等中找不到任何东西。目前我无法更好地解释它。也许有人知道我的意思?在这种情况下,是否值得将:case节点与caseId合并,然后创建该节点与:Activity节点之间的关系?再加上:caseid上的唯一约束,可以确保每个case都有一个不同的节点,然后后续查询可以在所有:case节点上匹配,并执行可能要匹配到每个case的关联:Activity节点的查询
LOAD CSV WITH HEADERS FROM "file:///XY" AS row

WITH toInteger(row.case_id) AS cid, row

WHERE cid=1

CREATE (act:Activity {caseId: cid, activityName: row.activity, time: 
row.timestamp})

'QUERY'
MATCH(act: Activity)
WHERE act.caseId = 1 //and here I want to be able to simplify for EVERY caseId
WITH act ORDER BY act.time ASC 
WITH apoc.coll.frequencies(apoc.coll.pairsMin(COLLECT(act.activityName))) AS g
UNWIND g AS p
RETURN*
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///XY" AS row
WITH toInteger(row.case_id) AS cid, row
CREATE (act:Activity {caseId: cid, activityName: row.activity, time: row.timestamp})