分组(GroupbyItemType)
groupby 指定结果的维度分组,对应 SQL 的 GROUP BY 子句。接口结构如下:
标准写法
Logicform 支持多维分组,因此 groupby 通常是一个数组:
理解要点:
_id填写语义层中定义的维度名称。level控制时间或地域维度的粒度,例如year/month/day、省市/城市/区县。name可覆盖结果中的列名,常用于英文项目。schema用于跨模型下钻;系统会根据语义层映射自动补齐 JOIN。order手动指定枚举维度的排序顺序,避免依赖默认字典序。
简写方式
- 当仅有一个分组维度时可以去掉数组:
- 如果只有
_id,可以直接写字符串:
与算子结合
分组字段也可以包含算子,例如 $piecewise、$bin 等,此时需要写成完整对象:
系统会根据语义建模自动转换为 SQL CASE WHEN 或其他表达式。
自定义排序(order)
对于枚举类型维度(如星期、季度、评价等级等),使用 order 字段指定自定义顺序:
没有 order 时,系统会按照默认字典序排列,可能导致"周五"排在"周一"之前。指定 order 后,排序和显示都会遵循数组顺序。
常见使用场景:
注意事项
- Logicform 不直接提供
LEFT JOIN的显式语法,语义层会按照字段的“引用关系”自动生成 LEFT JOIN,确保维度缺失时仍能返回NULL。 - 依赖时间层级时请确保语义层中已开启对应粒度,否则
level会被忽略。 - 当与
having、sort配合使用时,建议为每个分组维度设置稳定的name,以免多语言场景下出现列名冲突。

