[英]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.