筛选(QueryType)
QueryType 描述 Logicform 的过滤条件,语法与 MongoDB 查询基本一致,可同时出现在根节点(影响整条查询)或 PredItemType.query(仅作用于某个指标)。同一套结构也会复用于 having,但 having 的字段名基于结果列别名,而不是原始 schema 字段。
值类型
QueryType 的值不只可以是普通标量,还可以是:
- 标量:
string、number、boolean、null - 数组:常用于
$in/$nin - 时间值:绝对时间、结构化时间、相对时间、
MTD/YTD/QTD/WTD - 子查询:完整的
LogicformType或LogicformType[]
基本语法
上述结构等价于 SQL WHERE 渠道='自营' AND 地区 IN (...) AND GMV >= 1000000。
query 的 key 也可以写成带下划线的跨表字段路径,例如 门店_地理位置、物料_品牌_品类。这类路径的规则见 基础结构 中的“跨表字段路径”。
支持的操作符
常用组合写法如
{ 销售额: { "$gt": 100, "$lte": 1000 } }。
逻辑组合示例
子查询
某些条件需要通过子查询才能表达,此时应把完整的 LogicformType 嵌入值中,而不是只写 operator/pred 片段。
标量子查询
可理解为:GMV = (SELECT MAX(amount) FROM sales)。
集合子查询
可理解为:客户ID IN (SELECT 客户ID FROM orders WHERE 日期 ... )。
时间筛选
标准范围写法
结构化时间
你可以混用粒度,例如只指定 year/month/day 中的一部分。
相对时间
该示例表示“去年 10 月”。支持的 offset 粒度包含 year、quarter、month、week、day、hour、minute、second。
To-date 简写
支持的 to-date 简写包括 MTD、QTD、YTD、WTD。
带 $options 的时间条件
$options 是辅助选项字段。在日期场景中,常用于补充 YTD/MTD/QTD/WTD 这类口径;在其他场景下也可能被底层执行器用于正则等高级选项。
局部时间与高级写法
此外,结构化时间值还支持 $functions 字段,用于挂载额外时间函数;具体函数名和参数由执行器或算子定义。
最佳实践
- 所有字段名均为业务建模中配置的“展示名称”,保持与业务口径一致。
- 当
query同时存在于根节点和pred中时,两处条件作用范围不同,执行时会分别下推。 - 建议在同一个 Logicform 中保持时间粒度一致,避免大模型自动补充不符合预期的时间范围。
- 需要子查询时,请传入完整的
LogicformType,不要把PredItemType误当成子查询结构。

