使用FETCH PROP ON获取边的属性时,返回为空

  • nebula 版本:2.6.1
  • 部署方式:分布式
  • 安装方式: RPM
    如下图所示,使用FETCH PROP ON获取边的属性时,返回为空,确保查询的边上是有属性存在的,在多个数据集上查询均出现此问题

使用FETCH PROP ON获取点的属性时,则不存在这个问题

Studio 啥版本的。

3.1.0版本的,应该和studio无关,因为我在命令行通过console连接nebula graph后使用FETCH PROP ON查询也是一样的情况

1 个赞

v1->v2@rank
这样写呢


直接报错

rank 的值需要自己写, 100->204 你插入这个边的时候如果没有指定rank 就 不需要写rank

指定了返回还是空 :joy:

试试 go from 100 over serve yield edge as e

我不是要这句的结果,我要的是用FETCH PROP ON获取边的属性来实现其他功能,就是我数据里一个点连接了很多边,很多要查询的边只能通过起始点和终点来指定 :joy:

上条语句是交叉验证一下,边上是否存在属性

1 个赞

属性确定是存在的,就是用FETCH PROP ON方式获取总是空的

试试 FETCH PROP ON serve 100->204@7

这种方法是有结果的,但是当我用复合查询的时候,将前面语句的结果作为FETCH PROP ON的查询对象,我怎么能获取每天边的rank值,例如用下面这种语句查询的情况:
GO FROM 100 OVER serve YIELD dst(edge) AS id |
GO FROM $-.id OVER serve YIELD src(edge) AS s, dst(edge) AS d |
FETCH PROP ON serve $-.s → $-.d YIELD properties(edge).start_year;

GO FROM 100 OVER serve YIELD dst(edge) AS id |
GO FROM $-.id OVER serve YIELD src(edge) AS s, dst(edge) AS d, rank(edge) as r |
FETCH PROP ON serve $-.s → $-.d@$-.r YIELD properties(edge).start_year;

这样可以了,非常感谢!
提到rank我又想到了使用中遇到的一个问题,就是当我有些边的起点和终点一致,有的时候边上的属性也会有一致的情况下,添加数据的时候,即使rank不一样,属性值相同的只能写入一条边,这个怎么解决,比如边上的属性值代表交易额,出现交易双方一样,交易额一样的情况,只能添加一次,添加多次也无效

1 个赞

<起点, 终点, 边类型, rank> 唯一确定一条边, 和属性没关系,所以只要确定 前面四元组唯一就行

现在的问题是如果跑louvain算法要带权计算的话,权值只能放在rank上才能作为权值带入计算,放到其它属性上无法作为权值带入计算,这个之前在这个帖子里提到过:跑louvain算法时hasweight参数选择true时(即边上有权值)计算结果有问题 - #7,来自 nicole
那么就不可避免会出现多条起始点一样,rank一样的边的情况了

@caton-hpg 帮忙看一下使用 louvain 算法 的问题, 为什么权重值 要作为rank 计算

边属性可以作为权重列,用于跑louvain算法,我用的2.6.1刚试了

2 个赞

我原来用的也是2.6.1,问题就在于hasweight参数设置为true时,用属性值作为权重跑louvain算法出来的结果两列是完全一模一样的,就是把所有点都单独划分为一个社区了,你这边出来的结果会吗?根据之前你们工作人员Nicole的反馈,把权值放在rank,出来的结果就正常了,可以参考我当时反馈问题的帖子:跑louvain算法时hasweight参数选择true时(即边上有权值)计算结果有问题 - #7,来自 nicole

1 个赞