DeepQL查询语句的基本语法如上图,类似其他查询语言,包含以下部分
select:查询内容,即查询的对象、属性/链接
filter:查询条件,即针对查询对象的过滤条件,是一个布尔表达式
order by:排序字段,按排序字段升序asc或降序desc(不指定默认为升序)对查询结果进行排序,可通过then设置多个排序字段
limit:限制数量,即限制查询结果的数量
基本语法例子
查询最近创建的10个高优先级功能需求的相关信息,包括:需求的ID、名称、状态、负责人和组件
注:查询时默认查询当前应用对应模块中的对象,如需查询非当前应用模块对象,即当前空间对应模块或当前空间其他应用对应模块中的对象,则需加上{所属模块}::
前缀,例如:select spacezauoyn::SystemUser
select Requirement {
req_id,
req_name,
req_status,
req_owner,
component
}
filter .req_type = 'func' and .priority = 'high'
order by .created_time desc
limit 10
基本语法 - 嵌套形式例子
查询链接即查询链接的目标对象,查询结果中默认包含目标对象的属性id,可通过嵌套形式指定查询目标对象的属性/链接。例如基于基本语法例子,查询需求负责人的名字、邮箱,以及组件的名称
select Requirement {
req_id,
req_name,
req_status,
req_owner: {person_name, system_user: {email}},
component: {name}
}
filter .req_type = 'func' and .priority = 'high'
order by .created_time desc
limit 10
基本语法 - with区块例子
可在查询语句最前加入with区块,用于定义变量,包括传参、子查询等通用信息或中间计算结果,通过操作符:=
进行变量赋值。可定义多个变量,通过逗号,分隔。例如:查询指定组件的需求信息,包括:需求的ID、名称、关联功能数量、已完成功能数量、已完成功能占比(即已完成功能数量 / 关联功能数量)
# 定义传参:指定组件
with comp_code := <str>$comp_code,
# 定义查询:计算指定组件需求的关联功能数量、已完成功能数量
ReqInfo := (select Requirement {
req_id,
req_name,
feature_count := count(.<requirement[is Feature]),
f_feature_count := count(.<requirement[is Feature] filter .feature_status = 'stat_5')
}
filter .component.code = comp_code)
# 基于查询结果计算:已完成功能占比 = 已完成功能数量 / 关联功能数量
select ReqInfo {
req_id,
req_name,
feature_count,
f_feature_count,
ratio := .f_feature_count / .feature_count if .feature_count != 0 else 0
}
回到顶部
咨询热线