根据图关系作汇总计算

环境信息

  • nebula 版本:2.0.0-rc1
  • 部署方式:物理集群(metad*1, graphd*1, storaged*3)

问题的具体描述:计算某个节点上游所有节点某个属性的 sum 值,作为该节点的属性值

示例:

# create space
CREATE SPACE `testing` (partition_num = 10, replica_factor = 1, charset = utf8, collate = utf8_bin, vid_type = FIXED_STRING(8))

# create tags & edges
CREATE TAG tagC(idInt int, name string, weight double); 

CREATE TAG tagA(idInt int, name string, total_weight double default 0.0);
CREATE TAG INDEX index_tagA_name on tagA(name(16));

CREATE EDGE edgeAC();

# insert vertex & edge
insert vertex tagA(idInt, name) values "A":(1,"A")
insert vertex tagA(idInt, name) values "AA":(2,"AA")
insert vertex tagA(idInt, name) values "AAA":(3,"AAA")
insert vertex tagC(idInt, name, weight) values "1":(1,"v1", 1.11)
insert vertex tagC(idInt, name, weight) values "2":(2,"v1", 1.11)

insert edge edgeAC() values "A"->"1":()
insert edge edgeAC() values "1"->"AA":()
insert edge edgeAC() values "AA"->"2":()
insert edge edgeAC() values "2"->"AAA":()

如上所述,构建了关系图:A → 1 → AA → 2 → AAA

目标:将 “1”, “2” 结点 tagC 的 weight 属性作 sum,作为 “AAA” 结点 tagA 的 total_weight 属性的值


请教:

  1. 如何将上游节点的 sum 值计算出来?尝试了利用 sumreduce 函数,没有得到预期结果;

  2. 查询出 sum 值后,如何直接更新到对应结点的属性值中,以上述为例:更新到 “AAA” 结点的 tagA 的 total_weight 属性值中?

  1. rc1 不支持return agg(),可以用v2-nightly
  2. 目前只能你拿到结果在用update语句更新

是否还有其他查询方法返回 sum 值?

请问 match (v:tagA{name: "AAA"})<-[e:edgeAC*1..4]-(v2:tagC) return reduce(totalWeight=0, n in v2 | totalWeight + n.weight) as total_weight 为什么会报语法错误?

match 查询返回的应该是一个 list 吧?如下图

@Shylock-Hg 直接输入文档的例子,竟也无法查询:

最新的版本可以运行,可以更新一下版本

@jmq2020 求 v2 nightly 的 ubuntu 1604 deb 包

我们采用物理机部署集群的方式,目前 github 上只有 2.0.0-rc1 的包。

@RandomJoe Joe,这个功能是支持了吗?如果是没有发布的功能,:thinking: 建议注释下呢

代码一直在改,不会为RC1提供对应的文档。
代码GA之后才会cut一个对应的文档branch。