You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nebula Graph中独立YIELD语句与GROUP结合YIELD子句的差异

在Nebula Graph中,独立YIELD语句与GROUP BY结合YIELD子句的差异

问题背景

以下是两段Nebula Graph查询语句:

FETCH PROP ON person "..." YIELD properties(person).name as name, properties(vertex).age as age
| GROUP BY $-.name YIELD $-.name, max($-.age) as max_age

FETCH PROP ON person "..." YIELD properties(person).name as name, properties(vertex).age as age
| YIELD $-.name, max($-.age) as max_age

二者的核心差异如下:

1. 聚合逻辑本质不同

  • GROUP BY + YIELD:先按$-.name对上游返回的所有数据做分组,再针对每个分组内的age字段计算最大值。最终返回的是每个分组的唯一结果,实现的是分组聚合的效果。
  • 独立YIELD:不会对数据做任何分组,直接对上游所有age数据计算全局最大值,同时原样返回每条原始数据的name字段。这种写法的聚合逻辑完全不符合"按name取最大age"的预期。

2. 结果集形态差异

假设上游返回的原始数据为:

nameage
Alice25
Alice30
Bob28
  • GROUP BY版本的结果:
namemax_age
Alice30
Bob28
  • 独立YIELD版本的结果:
namemax_age
Alice30
Alice30
Bob30

3. 执行效率与资源开销差异

  • GROUP BY版本:需要对数据做分组排序,计算阶段的CPU开销相对较高,但最终返回的结果行数少,网络传输开销低。
  • 独立YIELD版本:无需分组操作,但会保留所有原始数据行并附加全局聚合值,当上游数据量较大时,结果集的存储和传输开销会显著增加,且逻辑不符合业务需求,属于错误写法。

内容的提问来源于stack exchange,提问作者foesa Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:20:42