前言:

要使用 Orchestra Python API (下文简称 api) 查询数据,就需要使用 read 方法。

read 方法提供丰富的过滤、分组、排序功能,在用户权限范围内支持查询一切实体类型,且线程安全,可放心使用。

本节我们介绍 read 方法的分组功能。

正文:

groups 参数用于对数据分组,参数包含 column,direction 关键字,以及一个待开发的 method 关键字。

注意:给定字段需要满足在图式中 grouper 属性的 enabled 不为 false,如果为 false 则排序无效,目前 summary、lambda 及 pivot 字段不支持排序。

groups 的一般形式如下:

[{"column": 字段, "direction": 方向}]
column 关键字表示按照给定字段对查询结果排序,与 sorts 参数一致。

direction 关键字表示排序的方向,有两个可选值,分别是 asc 和 desc,与 sorts 参数一致。

未启用 groups 参数时,read 方法的返回数据结构如下:

[{"id": 1, "name": "Layout", "type": "Task"}]

启用 goups 参数后,read 方法的返回数据结构的形式会有所不同:

[{"display_name": "Group Name", "children": []}]

数组元素的 display_name 表示该组名称,children 属性表示该组包含的所有任务。

下面我们举例说明,执行以下代码:

api.read("Task", fields=["id", "name"], groups=[{"column": "entity", "direction": "asc"}])
返回数据应是如下形式:

[{"display_name": "shot_001", "children": [{"id": 1, "name": "Layout", "type": "Task"}, {"id": 2, "name": "Animation", "type": "Task"}]}]

groups 同样支持路由路径型字段,比如我们可以对 entity.Shot.code 分组:

api.read("Task", fields=["id", "name"], groups=[{"column": "entity.Shot.code", "direction": "asc"}])

注意:pages 参数会影响 children 中任务的数量。