Skip to content

DSL 查询 API

本文档介绍 Foggy Dataset Model 的 HTTP 查询接口。完整的 DSL 语法请参阅 JSON 查询 DSL

1. 概述

1.1 基础信息

  • Base URL: /jdbc-model/query-model
  • Content-Type: application/json
  • 响应格式: JSON

1.2 接口列表

方法路径说明
POST/v2/{model}查询模型数据(推荐)
POST/queryKpiKPI 汇总查询

2. 查询模型数据

2.1 接口地址

POST /jdbc-model/query-model/v2/{model}

2.2 路径参数

参数类型必填说明
modelstring查询模型名称,如 FactOrderQueryModel

2.3 请求体结构

json
{
    "page": 1,
    "pageSize": 20,
    "param": {
        "columns": ["orderId", "customer$caption", "totalAmount"],
        "slice": [
            { "field": "orderStatus", "op": "=", "value": "COMPLETED" }
        ],
        "groupBy": [
            { "field": "customer$customerType" }
        ],
        "orderBy": [
            { "field": "totalAmount", "order": "desc" }
        ],
        "calculatedFields": [...],
        "returnTotal": true
    }
}

2.4 分页参数

参数类型必填默认值说明
pageinteger1页码,从 1 开始
pageSizeinteger10每页条数
startinteger0起始记录数(与 page 二选一)
limitinteger10返回条数(与 pageSize 二选一)

2.5 param 参数

参数类型必填说明
columnsstring[]查询列,空则返回所有有权限的列。详见 字段引用格式
exColumnsstring[]排除列
sliceSliceRequestDef[]过滤条件。详见 过滤条件
groupByGroupRequestDef[]分组字段。详见 分组
orderByOrderRequestDef[]排序字段。详见 排序
calculatedFieldsCalculatedFieldDef[]动态计算字段。详见 计算字段
returnTotalboolean是否返回总数及汇总数据

3. KPI 汇总查询

快捷获取度量汇总值,无需分页。

3.1 接口地址

POST /jdbc-model/query-model/queryKpi

3.2 请求体结构

json
{
    "queryModel": "FactSalesQueryModel",
    "columns": ["salesQuantity", "salesAmount", "profitAmount"],
    "slice": [
        { "field": "salesDate$caption", "op": "[)", "value": ["2024-01-01", "2024-07-01"] },
        { "field": "product$category", "op": "=", "value": "数码电器" }
    ]
}

3.3 请求参数

参数类型必填说明
queryModelstring查询模型名称
columnsstring[]要汇总的度量字段
sliceSliceRequestDef[]过滤条件

3.4 响应示例

json
{
    "code": 0,
    "data": {
        "salesQuantity": 15000,
        "salesAmount": 8990000.00,
        "profitAmount": 1798000.00
    }
}

4. 响应结构

4.1 响应体

json
{
    "code": 0,
    "data": {
        "items": [
            {
                "orderId": "ORD202401010001",
                "orderStatus": "COMPLETED",
                "customer$caption": "客户A",
                "totalAmount": 1299.00
            }
        ],
        "total": 100,
        "totalData": {
            "total": 100,
            "totalAmount": 129900.00
        }
    },
    "msg": "success"
}

4.2 响应字段

字段类型说明
codeinteger状态码,0 表示成功
data.itemsarray明细数据列表(分页后的数据)
data.totalinteger符合条件的总记录数
data.totalDataobject汇总数据(仅当 returnTotal=true 时返回)
msgstring消息

4.3 totalData 说明

  • 包含 columns 中指定的度量字段的聚合值
  • 是对所有符合条件的数据进行聚合,不受分页影响
  • 只有设置 returnTotal=true 时才返回

5. 错误处理

5.1 错误码

错误码说明
0成功
400请求参数错误
403无权限访问
404查询模型不存在
500服务器内部错误

5.2 错误响应示例

json
{
    "code": 404,
    "msg": "Query model 'InvalidModel' not found",
    "data": null
}

6. 快速示例

6.1 明细查询

json
POST /jdbc-model/query-model/v2/FactOrderQueryModel

{
    "page": 1,
    "pageSize": 20,
    "param": {
        "columns": ["orderId", "orderStatus", "customer$caption", "totalAmount"],
        "slice": [
            { "field": "orderStatus", "op": "in", "value": ["COMPLETED", "SHIPPED"] }
        ],
        "orderBy": [
            { "field": "totalAmount", "order": "desc" }
        ],
        "returnTotal": true
    }
}

6.2 分组汇总

json
POST /jdbc-model/query-model/v2/FactOrderQueryModel

{
    "page": 1,
    "pageSize": 100,
    "param": {
        "columns": ["customer$customerType", "totalQuantity", "totalAmount"],
        "groupBy": [
            { "field": "customer$customerType" }
        ],
        "orderBy": [
            { "field": "totalAmount", "order": "desc" }
        ]
    }
}

更多示例请参阅 JSON 查询 DSL - 完整示例


下一步