Query DSL(Domain Specific Language) 用来描述数据查询条件,适用基于数据库实现的数据分析引擎,如 Xu
等。
数据查询的数据类型为 Object QueryDSL
,通过 select
, wheres
等字段描述查询条件,解析器将其转换为对应的 SQL语句
。
数据表 service
:
id | industries | city | score | created_at | updated_at |
---|---|---|---|---|---|
1 | "互联网" | 北京 | 99 | 2021-10-03 13:40:52 | NULL |
2 | "互联网" | 上海 | 68 | 2021-10-03 13:40:52 | NULL |
3 | "互联网" | 北京 | 92 | 2021-10-03 13:40:52 | NULL |
4 | "互联网" | 上海 | 87 | 2021-10-03 13:40:52 | NULL |
5 | "互联网" | 北京 | 71 | 2021-10-03 13:46:06 | NULL |
function Service() {var query = new Query();var data = query.Get({comment: "统计各行业最高分",select: ["industries", "city", ":MAX(score) as high_score"],from: "service",wheres: [{ ":created_at": "创建时间", ">=": "2021-01-01" },{ ":created_at": "创建时间", "<=": "2025-01-01" },{ ":updated_at": "更新时间", is: "null" },{wheres: [{ ":type": "类型", "=": 1 },{ "or:type": "或类型", "=": 2 },],},],orders: "high_score desc",limit: 100,groups: ["industries", "city"],});return data;}
解析后的 SQL语句
为 (MySQL 8):
SELECT `industries`, `city`, MAX(`score`) AS `high_score`FROM `service`WHERE `created_at` >= '2021-01-01'AND `created_at` <= '2025-01-01'AND `updated_at` is nullAND (`type` = ?)GROUP BY `industries`, `city`ORDER BY `high_score` DESC
industries | city | high_score |
---|---|---|
旅游 | 北京 | 99 |
教育 | 北京 | 99 |
旅游 | 上海 | 87 |
教育 | 上海 | 87 |
字段 | 类型 | 说明 | 必填项 |
---|---|---|---|
select | Array\<Field Expression> | 选择字段列表 文档 | 是 |
from | String | 查询数据表名称或数据模型 文档 | 否 |
wheres | Array\<Object Where> | 数据查询条件 文档 | 否 |
orders | Array\<Object Order> | 排序条件 文档 | 否 |
offset | Int | 记录开始位置 文档 | 否 |
limit | Int | 读取数据的数量 文档 | 否 |
page | Int | 分页查询当前页面页码 文档 | 否 |
pagesize | Int | 每页读取记录数量 文档 | 否 |
data-only | Bool | 设定为 true , 查询结果为 Array\<Object Record>; 默认为 false , 查询结果为 Array\<Object Paginate>, 仅在设定 page 或 pagesize 时有效。 | 否 |
groups | Array\<Object Group> | 聚合字段和统计层级设置。 文档 | 否 |
havings | Array\<Object Having> | 聚合查询结果筛选, 仅在设定 groups 时有效。文档 | 否 |
unions | Array\<Object QueryDSL> | 联合查询。多个查询将结果合并为一张表 文档 | 否 |
query | Object QueryDSL | 子查询。按 QueryDSL 描述查询逻辑,生成一张二维数据表或数值。 查看子查询文档 | 否 |
joins | Array\<Object Join> | 表连接。连接数据量较大的数据表时 不推荐使用。 文档 | 否 |
sql | Object SQL | SQL 语句。非必要,勿使用。文档 | 否 |
comment | String | 查询条件注释,用于帮助理解查询条件逻辑和在开发平台中呈现。 | 否 |
否 |
Query DSL(Domain Specific Language) 用来描述数据查询条件,适用基于数据库实现的数据分析引擎,如 Xu
等。
数据查询的数据类型为 Object QueryDSL
,通过 select
, wheres
等字段描述查询条件,解析器将其转换为对应的 SQL语句
。
数据表 service
:
id | industries | city | score | created_at | updated_at |
---|---|---|---|---|---|
1 | "互联网" | 北京 | 99 | 2021-10-03 13:40:52 | NULL |
2 | "互联网" | 上海 | 68 | 2021-10-03 13:40:52 | NULL |
3 | "互联网" | 北京 | 92 | 2021-10-03 13:40:52 | NULL |
4 | "互联网" | 上海 | 87 | 2021-10-03 13:40:52 | NULL |
5 | "互联网" | 北京 | 71 | 2021-10-03 13:46:06 | NULL |
function Service() {var query = new Query();var data = query.Get({comment: "统计各行业最高分",select: ["industries", "city", ":MAX(score) as high_score"],from: "service",wheres: [{ ":created_at": "创建时间", ">=": "2021-01-01" },{ ":created_at": "创建时间", "<=": "2025-01-01" },{ ":updated_at": "更新时间", is: "null" },{wheres: [{ ":type": "类型", "=": 1 },{ "or:type": "或类型", "=": 2 },],},],orders: "high_score desc",limit: 100,groups: ["industries", "city"],});return data;}
解析后的 SQL语句
为 (MySQL 8):
SELECT `industries`, `city`, MAX(`score`) AS `high_score`FROM `service`WHERE `created_at` >= '2021-01-01'AND `created_at` <= '2025-01-01'AND `updated_at` is nullAND (`type` = ?)GROUP BY `industries`, `city`ORDER BY `high_score` DESC
industries | city | high_score |
---|---|---|
旅游 | 北京 | 99 |
教育 | 北京 | 99 |
旅游 | 上海 | 87 |
教育 | 上海 | 87 |
字段 | 类型 | 说明 | 必填项 |
---|---|---|---|
select | Array\<Field Expression> | 选择字段列表 文档 | 是 |
from | String | 查询数据表名称或数据模型 文档 | 否 |
wheres | Array\<Object Where> | 数据查询条件 文档 | 否 |
orders | Array\<Object Order> | 排序条件 文档 | 否 |
offset | Int | 记录开始位置 文档 | 否 |
limit | Int | 读取数据的数量 文档 | 否 |
page | Int | 分页查询当前页面页码 文档 | 否 |
pagesize | Int | 每页读取记录数量 文档 | 否 |
data-only | Bool | 设定为 true , 查询结果为 Array\<Object Record>; 默认为 false , 查询结果为 Array\<Object Paginate>, 仅在设定 page 或 pagesize 时有效。 | 否 |
groups | Array\<Object Group> | 聚合字段和统计层级设置。 文档 | 否 |
havings | Array\<Object Having> | 聚合查询结果筛选, 仅在设定 groups 时有效。文档 | 否 |
unions | Array\<Object QueryDSL> | 联合查询。多个查询将结果合并为一张表 文档 | 否 |
query | Object QueryDSL | 子查询。按 QueryDSL 描述查询逻辑,生成一张二维数据表或数值。 查看子查询文档 | 否 |
joins | Array\<Object Join> | 表连接。连接数据量较大的数据表时 不推荐使用。 文档 | 否 |
sql | Object SQL | SQL 语句。非必要,勿使用。文档 | 否 |
comment | String | 查询条件注释,用于帮助理解查询条件逻辑和在开发平台中呈现。 | 否 |
否 |