筛选(QueryType)

QueryType 描述 Logicform 的过滤条件,语法与 MongoDB 查询基本一致,可同时出现在根节点(影响整条查询)或 PredItemType.query(仅作用于某个指标)。

基本语法

{
  "query": {
    "渠道": "自营",
    "地区": { "$in": ["华东", "华北"] },
    "GMV": { "$gte": 1000000 }
  }
}

上述结构等价于 SQL WHERE 渠道='自营' AND 地区 IN (...) AND GMV >= 1000000

支持的操作符

操作符说明
$eq / $ne等于 / 不等于
$gt / $gte / $lt / $lte比较运算
$in / $nin包含 / 不包含
$regex正则匹配(与底层数据源实现相关)

常用组合写法如 { 销售额: { "$gt": 100, "$lte": 1000 } }

嵌套 Logicform

某些条件需要通过子查询才能表达,可以把完整的 Logicform 嵌入值中。例如:

{
  "query": {
    "GMV": {
      "schema": "sales",
      "operator": "$max",
      "pred": "amount"
    }
  }
}

会被翻译成 GMV = (SELECT MAX(amount) FROM sales)

时间筛选

标准范围写法

{
  "日期": {
    "$gte": "2024-01-01 00:00:00",
    "$lte": "2024-01-31 23:59:59"
  }
}

简写(结构化时间)

{
  "日期": {
    "year": 2024,
    "month": 1
  }
}

你可以混用两种写法,例如只指定起始日期的年/月/日。

相对时间

{
  "日期": {
    "$offset": { "year": -1 },
    "month": 10
  }
}

该示例表示“去年 10 月”。支持的 offset 粒度包含 yearquartermonthweekdayhourminutesecond

最佳实践

  1. 所有字段名均为业务建模中配置的“展示名称”,保持与业务口径一致。
  2. query 同时存在于根节点和 pred 中时,执行时会把两处条件分别下推到 SQL,互不影响。
  3. 建议在同一个 Logicform 中保持时间粒度一致,避免大模型自动补充不符合预期的时间范围。