Appearance
数据源-来自数据库视图
概述
来自视图的数据源通过设置一个SQL查询语句
来查询其它数据表的数据,在SQL语句中可以使用聚合函数等数据库提供的数据处理功能。 织信会自动将查询语句创建为数据库视图
。 查询语句返回的列应该和数据表的字段
的标识符一一对应,并且需要额外返回一个名为id
的varchar
类型的唯一标识符。
视图可以很方便来实现数据统计等功能,需要注意的是如果查询的过程耗时比较久,可以开始数据源的 保存为物化视图
功能,开启后,织信将创建物化视图。
虽然对物化视图中存储的数据的访问常常要快于直接访问底层表或通过一个视图访问,但是数据并不总是最新的。如果需要更新物化视图的数据,需要主动调用informat.table.refreshDataSource()
方法
简单查询例子
假设系统中有一张数据表人员信息
(标识符为 userInfo)结构如下
字段 | 名称 |
---|---|
id | 主键 |
name | 姓名 |
countryName | 国家 |
现在我们需要显示每个国家人数的汇总情况,那么应该创建一张数据表 标识符为countryStat,字段应该配置如下
字段标识符 | 名称 | 类型 |
---|---|---|
countryName | 国家名称 | 单行文本 |
count | 人数 | 整数 |
查询语句如下
sql
select
count(name) as count,
country_name
from user_info
group by country_name;
注意事项
表名
需要遵循下划线法命名法,即将数据表标识符大写字母转化为下划线
字段名
需要遵循下划线法命名法,即将字段标识符大写字母转化为下划线
关联列表字段查询例子:
假设系统中有一张数据表国家信息
(标识符为 countryInfo)结构如下
字段 | 名称 |
---|---|
id | 主键 |
name | 国家名称 |
上面例子中的人员信息
表新增了一个字段旅游过的国家列表
,类型是关联列表
,关联到国家信息
表
字段 | 名称 |
---|---|
id | 主键 |
name | 姓名 |
countryName | 国家 |
traveledCountryList | 旅游过的国家列表 |
现在我们需要显示每个国家按照旅游人数的的汇总情况,那么应该创建一张数据表 标识符为countryTraveledStat,字段应该配置如下
字段标识符 | 名称 | 类型 |
---|---|---|
countryName | 国家名称 | 单行文本 |
count | 旅游人数 | 整数 |
查询语句如下
sql
select
b.name as country_name,
count(1) as count
from user_info$traveled_country_list a
inner join country_info b on a. relation_id=b.id
group by b.name;
使用说明
user_info$traveled_country_list表是人员信息
表关联列表字段traveledCountryList
的邻接表 邻接表的查询的格式:数据表标识符$字段标识符(同样需要把大写字母转化为下划线)
邻接表的结构如下
字段 | 类型 | 说明 |
---|---|---|
id | int | 主表记录ID |
relation_id | varchar | 子表记录ID |
index | int | 排序 |
create_time | date | 创建时间 |
注意事项
查询SQL返回的列中必须包含所有的在数据表字段设置
中定义的字段。当视图中依赖的源数据表被删除或者字段发生变更时,需要将视图定义SQL中的引用先删除,再修改源数据表定义。否则会导致应用发布失败。