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

Python Gremlin多列分组查询:排查开发者重复项目分配问题

问题1:统计同一起始日期分配多项目的开发者

错误原因

之前两种写法报错的核心原因是Gremlin的by()步骤单次仅支持传入一个键生成规则,不支持同时传入多个字段作为分组键。原始查询的逻辑也存在分组层级错误,导致无法同时保留开发者信息、重复日期和计数三个维度的结果。

正确查询语句

g.V().hasLabel('developer').as('dev')
  .outE('works_in').as('edge')
  .groupCount()
    .by(
      project('devId','devName','startDate')
        .by(select('dev').id())
        .by(select('dev').values('name'))
        .by(select('edge').values('start_date'))
    )
  .unfold()
  .filter(select(values).is(gt(1)))
  .project('devId','devName','startDate','count')
    .by(select(keys).select('devId'))
    .by(select(keys).select('devName'))
    .by(select(keys).select('startDate'))
    .by(select(values))
  .toList()

返回结果说明

运行后会直接返回符合要求格式的结果,对应你的样本数据会输出两条记录:001 Akash 2021-06-01 2、003 Bruno 2021-07-01 2。


问题2:查询异常重复分配的边

Gremlin完全支持该场景的查询,核心逻辑是先筛选出同一开发者同一起始日期的多条边,再匹配后续项目的开始日期判断是否存在断档。

正确查询语句

g.V().hasLabel('developer').as('dev')
  .outE('works_in').as('e')
  // 按开发者分组收集所有关联边
  .group().by(select('dev').id())
  .unfold().select(values)
  // 单开发者维度按开始日期升序、结束日期降序排序
  .order(local).by('start_date').by('end_date', desc)
  .flatMap(
    unfold().as('current')
    // 匹配同一起始日期的其他边
    .sibling().as('sibling')
    .where(eq('current')).by('start_date')
    // 筛选出结束日期更早的短边作为候选异常边
    .where(select('current').values('end_date').lt(select('sibling').values('end_date')))
    // 校验该边结束后与下一个项目的间隔是否超过1天
    .filter(
      select('current').as('abnormal_e')
      .select('dev').outE('works_in')
      .values('start_date').is(gt(select('abnormal_e').values('end_date')))
      .min().is(gt(select('abnormal_e').values('end_date').plus(1)))
    )
    .select('current')
  )
  // 输出边的完整属性,包含id、label和所有自定义属性
  .valueMap(true)
  .toList()

返回结果说明

针对你的样本数据,查询会精准返回{"id":"003_P003","label":"works_in","start_date":"2021-07-01","end_date":"2021-07-05"}这条异常边。


Gremlin学习资源推荐(非官方文档类)
  • Gremlin实战 中文图书:覆盖基础语法、复杂查询、性能优化全场景,配套大量可落地的示例代码,适合国内开发者入门到进阶
  • 主流云厂商图数据库官方最佳实践:包含大量生产环境验证过的查询模板和优化方案,贴合实际业务场景
  • 开源Gremlin Recipes集合:收录了常见业务场景的标准查询实现,可直接参考复用
  • 国内技术社区的实战分享:知乎、B站等平台有大量开发者结合实际项目输出的Gremlin教程,更适配国内使用习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:04