Neo4j 用于计算层次结构中每个组件的总成本百分比的cypher查询
我有一份材料清单Neo4j 用于计算层次结构中每个组件的总成本百分比的cypher查询,neo4j,cypher,Neo4j,Cypher,我有一份材料清单 *data model* (:part) -part_num -cost [:component_of] -quantity 以下查询将正确创建完整的BOM表层次结构 MATCH path=(p:part)-[r:component_of*0..]->(fg:part) WHERE fg.part_num = 'D100' RETURN path 为了支持成本可视化,我试图计算每个组成部分归于成品(fg
*data model*
(:part)
-part_num
-cost
[:component_of]
-quantity
以下查询将正确创建完整的BOM表层次结构
MATCH path=(p:part)-[r:component_of*0..]->(fg:part)
WHERE fg.part_num = 'D100'
RETURN path
为了支持成本可视化,我试图计算每个组成部分归于成品(fg:part)的成本百分比。我想要实现的逻辑如下
示例路径:
(a:部分)-[:组件的]->(b:部分)-[:组件的]->(fg:部分)
这是可以在密码查询中完成的吗?从何处开始?尝试
减少功能:
MATCH path=(p:part)-[r:component_of*0..]->(fg:part)
WHERE fg.part_num = 'D100'
WITH path,
NODES(path) AS nds,
RELATIONSHIPS(path) AS rls
RETURN path,
REDUCE(acc=1.0, i IN RANGE(0, LENGTH(path)-1) |
0.0001 * acc * nds[i].cost*rls[i].quantity / nds[i+1].cost
) AS epc
这可能比您提供的2个步骤更复杂。一般来说,任何零件(例如螺钉)都可以包含在多个子组件中。因此,您必须能够为层次结构中出现在多个位置的任何零件生成正确的百分比。是的,这是正确的。