我想创建数据沿袭的表格格式列表,以便用户可以使用Excel过滤功能轻松识别DWH表中的源表和列。 但是以下Cypher代码不起作用。
MATCH(a:DB {TABLE:'CONT'})-[b:RELATED*1..3]->(c:DB)
WHERE ALL ( tmp IN b WHERE tmp.CLAUSE IN ['where','join','unknown'] )
RETURN a.table,a.column,b.clause,c.table,c.column
LIMIT 200
我收到了以下错误。
Type mismatch: expected Map, Node or Relationship but was Collection<Relationship> (line 3, column 25 (offset: 147))
&#34;返回a.table,a.column,b.clause,c.table,c.column&#34;
如果我只指定&#34;返回a,b,c&#34;,我得到以下内容。
a b c
{"TABLE":"TXX","COLUMN":"CXX","DB":"DXX"} [{"CLAUSE":"unknown"}] {"TABLE":"TYYY","COLUMN":"CYYY","DB":"DYYY"}
但我想得到如下。
TABLE,COLUMN,DB,CLAUSE,TABLE,COLUMN,
"TXX","CXX","DXX","unknown","TYYY","CYYY","DYYY"
我怎样才能做到这一点?
答案 0 :(得分:0)
所以,因为你绑定的关系是一个1到3个实际关系的可变长度关系,当你引用b时,你会得到这些关系的集合,而不是单个关系。
您可以在输出中看到只使用a,b和c时,请注意未知子句周围的括号;该集合中最多可以有2个其他对象。对于某些数据,“RETURN a,b,c”可能如下所示:
{"TABLE":"TXX","COLUMN":"CXX","DB":"DXX"} [{"CLAUSE":"unknown"}, {"CLAUSE":"join"}, {"CLAUSE":"where"}] {"TABLE":"TYYY","COLUMN":"CYYY","DB":"DYYY"}
这就是为什么返回b.clause没有意义,因为你要求列表中的属性而不是某种对象。
你可以做一个UNWIND b作为somethingElse ...然后做一些Else.clause并让它工作。 UNWIND将某些内容列表更改为行,但请注意,如果存在多个:RELATED关系,则它们将与a和c一起显示在各自的行中。