arangodb AQL中具有不规则产品层次结构的总量

时间:2018-11-08 22:47:22

标签: arangodb aql

我想在产品层次结构中汇总发票量。但是,层次结构对于所有产品而言并没有相同数量的级别。例如,以下是两个产品的层次结构:

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级(因为这是通用级别)?我猜想需要对聚合逻辑进行更改,但不确定如何更改。

0 个答案:

没有答案