外观
SQL高级数据源
约 732 字大约 2 分钟
2025-02-17
创建SQL高级数据源路径:头像 -> 高级数据源 -> 新增 -> 新增SQL数据流
注意
如果点头像,发现菜单栏没有「高级数据源」,或者点新增没有「新增SQL数据流」,请联系客服进行开通。


SQL查询的超时时间
目前氚云在定义SQL页面的【校验查询】,和在仪表盘中引用SQL高级数据源查询的超时时间是相同的,都是11秒。
在使用该功能时请注意不要执行耗时过长的SQL查询,若业务逻辑确实需要,可以考虑新建一个表单作为中间表,由定时器(4小时执行一次,每次有20分钟执行时间)来生成中间表数据,然后仪表盘中直接查询中间表数据。
动态参数
SQL高级数据源支持动态参数,做法是在SQL语句中通过 {字段名} 来占位,例如下面SQL中的 {Name} 占位,就表示用 Name 字段来作为筛选条件:
SELECT ObjectId AS `userId`, Name AS `userName`, State AS `state` FROM H_User WHERE State = 0 AND {Name}在SQL中加入 {字段名} 占位符后,右边动态参数设置会自动出现该参数:

动态参数的参数类型、逻辑关系会影响最终SQL语句的生成,例如:
- 如果参数类型是
单行文本,逻辑关系是等于,那么生成的SQL语句就是字段 = '值'; - 如果参数类型是
数字,逻辑关系是范围,那么生成的SQL语句就是字段 BETWEEN 最小值 AND 最大值; - 如果参数类型是
日期,逻辑关系是大于,那么生成的SQL语句就是字段 > 值;
保存后,在仪表盘中选择我们编写SQL高级数据源,动态参数会自动出现在仪表盘的筛选条件中:

常见问题
- SQL高级数据源查询出来的数据,怎么控制数据权限?
由于使用SQL查询数据,已经脱离系统数据权限的控制,直接访问了数据库,所以需要通过SQL语句来控制数据权限。
例如再加一个拥有者 OwnerId 参数来控制数据权限:
SELECT ObjectId AS `dataId`, Name AS `dataName` FROM i_表单编码 WHERE Status = 1 AND {Name} AND {OwnerId}或者加一个所属部门 OwnerDeptId 参数来控制数据权限:
SELECT ObjectId AS `dataId`, Name AS `dataName` FROM i_表单编码 WHERE Status = 1 AND {Name} AND {OwnerDeptId}- 可否在高级数据源中执行
INSERT、UPDATE、DELETE语句?
不支持,如有执行这些语句的需求,请使用后端代码去执行后端执行SQL。
