我想在产品层次结构中汇总发票量。但是,层次结构对于所有产品而言并没有相同数量的级别。例如,以下是两个产品的层次结构:
Prod1 (SKU) <- Hierarchy Level (HL) 5 <- HL 4 <- HL 3 <- HL 2 <- HL 1
Prod2 (SKU) <- HL 3 <- HL 2 <- HL 1
所有产品均具有3级及更高级别,但可能在3级和sku之间具有多个级别(层次结构(包括sku)最多可以有8个级别)。
发票的当前数据库模型如下:
Customer <-IsBilled-- Invoice --containsProd-> product <- IsParentOf-- product
以下查询可以很好地进行聚合,但是它依赖于固定数量的边缘跃点
for v,e,p in 1..4 INBOUND 'customer/A'
IsBilled, OUTBOUND containsProd, isParentOf
filter p.edges[0]._from == 'invoice/541280' //limit data to a single invoice
collect vname = p.vertices[4].name, vlevel = p.vertices[4].hierarchyLevel
AGGREGATE qtySum = sum( p.edges[1].quantity ) //aggregates two levels up in the product hierarchy (hops 1 and 2 get from customer to invoice to product)
filter vname != null. //remove vertices that are not products
return { Product: vname, hierarchyLevel: vlevel, qty:qtySum}
上面的语句获取的数据如下:
Product hierarchyLevel qty
PrdA HL 4 20
PrdB HL 2 30
是否可以将所有产品的数据都获取为3级(因为这是通用级别)?我猜想需要对聚合逻辑进行更改,但不确定如何更改。