lookup on edge时能否在管道中传递边的rank值,或者有无其他查询在返回的字段中对rank进行引用?或查找时根据rank值进行过滤或排序?

  • nebula 版本:v2.0.0beata
  • 部署方式(分布式 / 单机 / Docker / DBaaS): docker
  • 硬件信息
    • 磁盘( 必须为 SSD ,不支持 HDD)500G ssd
    • CPU、内存信息:40c 128G
  • 问题的具体描述
    想要对边的rank值进行引用和传递,但是没查到具体的语法,不知道是否支持?
    尝试了以下几个方式,都不能达到目的:
  lookup up on edge_a where edge_a.c_time > 1601234567 yield edge_a._ranking
  lookup up on edge_a where edge_a.c_time > 1601234567 yield edge_a._rank
  lookup up on edge_a where edge_a.c_time > 1601234567 yield edge_a.rank

上述语句yield后面可以接edge_a自身的属性
btw. lookup的2.0版本的实例中有一个接了管道的例子:

LOOKUP ON follow WHERE follow.degree == 60 YIELD follow.degree AS Degree | \
GO FROM $-.DstVID OVER serve YIELD $-.DstVID, serve.start_year, serve.end_year, $$.team.name;

我这边尝试按照上面的方法接管道的时候就提示没有DstVID 这个属性:

SemanticError: $-.DstVID', not exist prop DstVID’

问一下,是我用的版本尚未包含传递起始节点vid和ranking值的这个特性?还是我用错了?还是文档写错了?

第一个问题是现在lookup还没有支持内置的属性,这个后续会加上的。
第二个问题是beta版本还不支持,现在master上的代码已经支持了。

1 个赞

关于按照rank值进行过滤或者排序,在哪个版本有支持吗?具体语法是?

  1. lookup … | go from $-.Ranking …

要用nigthly版本

使用了最新版本的容器镜像,可以引用lookup返回的各个值了,包括SrcVID、DstVID、Ranking.

还有一个问题,查询中如何根据边的ranking值进行过滤或者排序?

| group by $-.Ranking