子句查询血缘问题请教

  • nebula 版本:3.4.1

  • 部署方式: 分布式

  • 安装方式: RPM

  • 是否上生产环境:N

  • 问题的具体描述

各位大佬,我现在这么一个场景,就是几个表有血缘关系,几个表的表分别有一些字段,字段之间也有血缘关系。我现在想在查某个表的时候,按照步长可以把相关的表和表下字段以及他们的关系带出来,例如:

现有数据:


他们有三种关系
表间关系:Table2Table
字段间关系:Column2Column
字段从属于表:Column2Table

最后图库里如图所示:


比如我现在想从某个表开始查询所有【Table2Table】关系的3步子图
我先执行了

GET SUBGRAPH 3 step FROM "MysqlTable1"  BOTH Table2Table  YIELD VERTICES AS nodes, EDGES AS relationships;

得到了

然后我还想查出他们的字段以及字段血缘 要怎么写语句?
我本来想用管道符号,但是好像GET SUBGRAPH 语句限定了yield。
求教各位大佬

我现在的想法是换go 先使用go把表节点拿出来,再将dst和src作为下个查询的go from 来查1跳的字段

go 1 to 3 steps from 'MysqlTable2'  over Table2Table BIDIRECT yield DISTINCT dst(edge) as dst,src(edge) as src, edge as s
| go 1  steps from $-.dst over Column2Table,Column2Column  BIDIRECT yield DISTINCT edge as s

现在遇到2个问题
1: 我怎么把【|】 之前查出来的数据也在第二个go from 中作为yield输出
2:第二个go from 我如果这么写 就报错了

go 1  steps from $-.dst,$-.src over ....

go from 后面不是支持<vertex_list>的吗 是需要换种写法吗?

问题1 已解决,使用$- 引用复合查询中管道符之前的语句输出结果

请问go from xxx yield dst(edge) as dst ,src(edge) as src |
go from $-.src, $-.dst yield
第二个go from 怎么引用管道符之前的两个变量?

go from 后面的引用变量不支持多个,可以将 src 和dst union 起来,然后再传给下一个go使用

GO FROM xxx OVER edge YIELD dst(edge) AS id  UNION GO FROM xxx OVER edge YIELD src(edge) AS id | GO FROM $-.id OVER xxx YIELD ...

嗯,没办法只能用union了

也可以考虑 match p=(v)-[e:Table2Table*0…]-(v2)-(v3) where id(v) = “MysqlTable1” return p

第一步是取到所有的 Table 点,因为包含了 0 跳,所以是包含了起点。
然后从起点出发,查所有的 1 跳;

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。