2017-06-14 3 views
0

私は現在、リレーショナルデータベースをNeo4Jデータベースにアップグレードするプロセスを実行しています。これまで、リレーショナルデータベース(MySQL)で設計していたすべてのものを上回ることができました。つまり、私の報告をする時間が来るまでです。Neo4J - 複数のノードの結果が単一行になるPythonを使用して

私はデータベースを照会するためにPythonを使用していますが、関連するすべての情報を返すことができますが、私が望むやり方ではありません。

コード:

AList = session.run("match (dept:Department)<-[]-(d1:Domain)<-[]-(d2:Domain)<-[]-(a:TestAnswer)-[]->(q:SurveyQuestion) return dept.ABBR as Department, d1.DomainName as Forest, d2.DomainName as Domain, q.QuestionDesc as Question, a.Result as Answer ORDER BY Department") 

これは質問のそれぞれのための答えを持っている部門の略語、並べ替え、ノードの素晴らしいリストを返します。電流出力の

例:

部門|フォレスト|ドメイン|質問|回答|

Dname |フォレストロケーション|ドメイン名| Q1 | 90 |

Dname |フォレストロケーション|ドメイン名| Q2 | 1 |

など

私は次のようなレイアウトを持っているために、これを再作成したいと思いますが、私は、私はいくつかのフォームを使用できるかどうかのpython 3に長いプロセスを経るか、する必要がある場合は、完全にはわかりません最も単純な結果を得るためにNeo4j内の組合の数:

部|フォレスト|ドメイン| Q1 | Q2

Dname | ForestName |ドメイン名| 90 | 1

私が答えを見つけることができる場所で誰かが正しい方向に向けることができれば、それも役に立ちます。

が ジム私のコメントで述べたように

+1

私の知る限りのNeo4jは、動的な列を提供することはできません知っているが、あなたが質問を知っていれば、あなたがしたいようあなたがこれを行うことができるはずです。しかし、あなたのタイトルは、あなたが必要とするのは、これをすべて1行にまとめることだということを示しています。私は各部門/森林/ドメインごとに推測しています。質問ごとに別々の列が本当に必要ですか、あるいは他の手段で1つの行に質疑応答を集約すれば十分ですか? – InverseFalcon

+0

@InverseFalconそれを独自のイテレータ/リストにすることができれば、printコマンドを使用してCSVに出力し、レポートで作成された元のテーブルを模倣することができます。これは容認できる解決策になるでしょう - 私はこの結論にどのように到達することができますか? –

答えて

0

、お時間をいただき、ありがとうございます、動的な列は、私の知る限りのNeo4jではサポートされていません。つまり、結果を集約して各部門/森林/ドメインごとに1つの行を取得し、その行を処理する際の後の繰り返しで質問と回答をグループ化する方法があります。ここで

は、質問と回答を収集するためにpattern comprehensionを使用して、あなたを助ける必要がありサイファーです:

match (dept:Department)<--(d1:Domain)<--(d2:Domain) 
with dept, d1, d2, 
[(d2)<--(a:TestAnswer)-->(q:SurveyQuestion) | {Question:q.QuestionDesc, Answer:a.Result}] as answeredQuestions 
return dept.ABBR as Department, d1.DomainName as Forest, d2.DomainName as Domain, answeredQuestions 
ORDER BY Department 
関連する問題