DeepQL查询语句支持查询变量即传参,目前主要在查询器中使用。通过$
标识变量,变量声明语法
如<str>$var,其中<str>为声明类型,var为变量名,变量var必填
如<optional str>$var,optional表示变量var非必填
DeepModel各属性类型对应DeepQL变量类型
DeepModel属性类型 |
DeepQL变量类型 |
---|---|
文本 |
<str>$var |
多语言文本 |
<json>$var |
布尔值 |
<bool>$var |
整数 |
<int64>$var |
小数 |
<decimal>$var |
日期时间 |
<cal::local_datetime>$var |
枚举值 |
<str>$var |
文件 |
<json>$var |
UUID |
<uuid>$var |
变量值按JSON键值对中的值格式,各变量类型对应变量值例子
DeepQL变量类型 |
变量值例子 |
---|---|
<str>$var |
“REQ_202306_3” |
<json>$var |
{“en”: “DeepModel”, “zh-cn”: “DeepModel”} |
<bool>$var |
true/false |
<int64>$var |
123 |
<decimal>$var |
1.23 |
<cal::local_datetime>$var |
“2023-10-01 12:00:00” |
<uuid>$var |
“ea5fd52e-666f-11ee-9f32-db6d929ef47d” |
查询变量例子
查询指定需求的相关信息,包括:需求的ID、名称、状态,需求负责人的名字、邮箱,组件的名称,以及关联的功能数量
with req_id := <str>$req_id
select Requirement {
req_id,
req_name,
req_status,
req_owner_name := .req_owner.person_name,
req_owner_email := .req_owner.system_user.email,
component_name := .component.name,
feature_count := count(.<requirement[is Feature])
}
filter .req_id = req_id
查询变量 - 非必填例子
基于查询变量例子,查询指定组件(可为空)的需求信息,即查询变量声明为非必填
注:等于/不等于使用=/!=
时,无法对比空值,即操作符两边任一操作数为空时对比结果为空集;使用?=/?!=
时可以对比
with comp_code := <optional str>$comp_code
select Requirement {
req_id,
req_name,
req_status,
req_owner_name := .req_owner.person_name,
req_owner_email := .req_owner.system_user.email,
component_name := .component.name,
feature_count := count(.<requirement[is Feature])
}
filter .component.code ?= comp_code
查询变量 - 数组例子
支持查询变量值为多值,例如基于查询变量例子,查询指定需求(可多选)的相关信息,即查询变量值设置为数组如:[“REQ_202306_3”, “REQ_202306_8”]
with req_ids := <str>json_array_unpack(<json>$req_ids)
select Requirement {
req_id,
req_name,
req_status,
req_owner_name := .req_owner.person_name,
req_owner_email := .req_owner.system_user.email,
component_name := .component.name,
feature_count := count(.<requirement[is Feature])
}
filter .req_id in req_ids
查询变量 - 日期区间例子
日期区间可以看做一个包含日期最小/大值的数组,例如基于查询变量例子,查询指定日期区间内需求的相关信息,即查询变量值设置为数组如:[“2023-07-01 00:00:00”, “2023-07-08 00:00:00”]
with date_range := <json>$date_range,
min_date := <cal::local_datetime>date_range[0],
max_date := <cal::local_datetime>date_range[1]
select Requirement {
req_id,
req_name,
req_status,
created_time
}
filter .created_time >= min_date and .created_time <= max_date
回到顶部
咨询热线