簡體   English   中英

來自CSV的Neo4J中的層次圖

[英]Hierarchical Graph in Neo4J from csv

我有一個csv,如下所示:

City State  Country
A     WB      BAN
B     WB      BAN
C     MA      BAN
D     MA      BAN
E     RG      BAN

另一個文件具有城市銷售。 我必須根據用戶要求在python中互換計算城市,區域,州的銷售額。 我可以用Neo4j表示這些並通過python中的單個函數訪問銷售,該函數會自動根據需要獲取城市,州或地區?

城市銷售數據如下:

City  Period   Sales_Amt($)
A      May17    $5
B      May17    $10
C      May17    $15
D      May17    $5

數據的加載(例如,使用LOAD CSV)如下所示:

LOAD CSV WITH HEADERS FROM 'file:///hierarchy.csv' as line fieldterminator ','
MERGE (c:Country {id: line.countryId})
MERGE (s:State {id: line.stateId})
MERGE (ci:City {id: line.cityId})
MERGE (c)-[:HAS_STATE]->(s)
MERGE (s)-[:HAS_CITY]->(ci);

銷售數據的負載可能如下所示:

LOAD CSV WITH HEADERS FROM 'file:///sales.csv' as line fieldterminator ','
MATCH (ci:City {id: line.cityId})
CREATE (s:Sale {period: line.period, amount: toFloat(line.amount)})
MERGE(ci)-[:HAS_SALE]->(s);

現在,您將必須根據入口點(國家,州,城市)是什么來建立查詢:

MATCH (c:Country {id: "theinputforcountry})-[:HAS_STATE]->(s:State)-[:HAS_CITY]->(ci:City)-[:HAS_SALE]->(s:Sale)
RETURN c.id, sum(s.amount);

要么

MATCH (s:State {id: "theinputforstate"})-[:HAS_CITY]->(ci:City)-[:HAS_SALE]->(s:Sale)
RETURN s.id, sum(s.amount);

要么

MATCH (ci:City {id: "theinputforcity"})-[:HAS_SALE]->(s:Sale)
RETURN ci.id, sum(s.amount);

希望這可以幫助 !

問候,湯姆

PS可以走可變長度的路徑(因此不必指定整個路徑),也可以將其轉換為更一般的查詢,而該查詢在WHERE和RETURN子句上有所不同(WHERE可以將輸入的鍵作為輸入,然后將RETURN分組為輸入的級別)...但是兩種方法都使得您不清楚要完成的操作(imo :-)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM