2016-07-15 6 views
0

Ich möchte tabellarisches Format Liste der Datenherkunft erstellen, so dass Benutzer Quellentabelle und Spalten aus DWH-Tabellen mit Excel-Filterfunktion leicht identifizieren können. Aber der folgende Cypher-Code funktioniert nicht.Wie kann ich mit Cypher von Neo4j die Liste der Artikel aus verschiedenen Hauptrückgabewert erstellen?

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 

Ich habe den folgenden Fehler erhalten.

Type mismatch: expected Map, Node or Relationship but was Collection<Relationship> (line 3, column 25 (offset: 147)) 

"RETURN a.table, a.column, b.clause, c.table, c.column"

Wenn ich angeben "RETURN a, b, c" nur habe ich den folgenden .

a b c 
{"TABLE":"TXX","COLUMN":"CXX","DB":"DXX"} [{"CLAUSE":"unknown"}] {"TABLE":"TYYY","COLUMN":"CYYY","DB":"DYYY"} 

Aber ich möchte wie folgt erhalten.

TABLE,COLUMN,DB,CLAUSE,TABLE,COLUMN, 
"TXX","CXX","DXX","unknown","TYYY","CYYY","DYYY" 

Wie kann ich das erreichen?

Antwort

0

Also, weil die Beziehung, die Sie an b gebunden haben, eine Beziehung mit variabler Länge von 1 zu 3 tatsächlichen Beziehungen ist, wenn Sie b referenzieren, erhalten Sie eine Sammlung dieser Beziehungen, nicht eine einzelne Beziehung.

Sie können sehen, dass in Ihrer Ausgabe, wenn Sie nur a, b und c verwenden, beachten Sie die Klammern um die unbekannte Klausel; Es könnte bis zu 2 andere Objekte in dieser Sammlung geben. Für einige Daten „RETURN a, b, c“ das könnte wie folgt aussehen:

{"TABLE":"TXX","COLUMN":"CXX","DB":"DXX"} [{"CLAUSE":"unknown"}, {"CLAUSE":"join"}, {"CLAUSE":"where"}] {"TABLE":"TYYY","COLUMN":"CYYY","DB":"DYYY"} 

Die warum Rückkehr b.clause keinen Sinn macht, da Sie für eine Eigenschaft aus einer Liste zu fragen statt irgendeine Art von Objekt.

Sie können wahrscheinlich ein UNWIND b als somethingElse tun ... dann tun etwasElse.clause und haben das funktioniert. UNWIND ändert eine Liste von etwas in Zeilen, aber wenn mehrere: RELATED-Beziehungen existieren, werden sie jeweils in einer eigenen Zeile in Kombination mit a und c angezeigt.