资源描述
第17章
在数据库应用系统中,数据查询始终是应用基本和核心。数据运用和挖掘惯用方式就是从数据库中获取顾客所需业务数据,按照顾客预定义格式,普通以业务报表形式提供应顾客进行浏览、分析、记录、打印及转换,还可作进一步解决。由于查询需求多样性,不也许穷举所有顾客查询,固然也不能规定普通顾客去直接拼写SQL语句,因而需要提供一种工具让顾客可以自己进行查询设计和定制。
17.6查询引擎
查询引擎是面向高档实行人员和专业开发人员查询建模工具,可以全面支持复杂查询设计和个性化报表呈现。查询引擎由两个功能点构成:查询引擎管理和查询引擎权限控制。
17.6.0 查询引擎基本概念及案例
17.6.0.1 基本概念
数据表、暂时表、报表:
数据表是数据库里物理存在表;
报表是符合顾客规定一种界面呈现,它普通是一种二维数据表格;
有时咱们仅仅通过数据表无法直接查出报表规定数据成果,这时也许需要通过数据表查询建立某些具备过渡性质中间表,然后再通过这些中间表查出最后成果,这种起到过渡作用表称为暂时表。
数据字典:
数据字典提供数据库对象逻辑属性,有助于提高查询定义直观性和易用性。
内连接与外连接:
这是多表查询中不同连接方式,其中外连接重要涉及左连接(left out join)和右连接(right out join)两种。
左连接取出左侧关系中所有与右侧关系任一元组都不匹配元组,用空值填充所有来自右侧关系属性,再把产生元组加到内连接成果上。右连接与左连接完全对称,“表A左连接表B”与“表B右连接表A”效果是同样。
如下述表A和表B为例,它们以字段K作为键值进行不同连接后会得到不同成果集。
K
V2
01
100
03
300
05
500
表B
K
V1
01
10
02
20
03
30
表A
内连接(select A.K,A.V1,B.K,B.V2 from A inner join B on A.K=B.K)成果是:
A.K
A.V1
B.K
B.V2
01
10
01
100
03
30
03
300
左连接(select A.K,A.V1,B.V2 from A left join B on A.K=B.K)成果是:
A.K
A.V1
B.K
B.V2
01
10
01
100
02
20
03
30
03
300
右连接(select A.K,A.V1,B.V2 from A right join B on A.K=B.K)成果是:
A.K
A.V1
B.K
B.V2
01
10
01
100
03
30
03
300
05
500
普通查询(简朴查询)与复合查询:
复合查询和普通查询关系如图所示。两者查询成果都可以当作是暂时表,其差别在于:普通查询是基于数据表定义查询,复合查询是基于已经定义好查询来定义查询。
参数定义:
通惯用于查询定义中SQL向导设计工具中where条件表达式中,存在字符型和数值型(浏览时可直接录入)、字符枚举和数值枚举型参数(浏览时可下拉框录入),参照型参数(浏览时可参照录入)等
穿透:
当明细表与汇总表一起浮现时,某种内在联系可从汇总数据联查明细数据,称穿透或钻取
分级汇总:
按分级列(具备一定级次编码规则),对汇总列(数值型)进行各级汇总,并在各级末尾添加分级汇总列。
交叉:
按一定交叉规则进行旋转交叉或投影交叉
1)旋转交叉:行列不固定
存在一定交叉规则(指定交叉行、交叉列、交叉值字段)之后,报表全动态地实现数据交叉。惯用多层列表头辅助体现交叉维度,且交叉规则可以在运营态重新设定。
合用于无法预先拟定交叉后列构造报表;
2)投影类交叉:行列固定;每行、每列均相应一种筛选条件,而单元格第i行第j列内容依照SQL语句“select 记录函数(字段) from 表 where (行条件i) and (列条件j)”查出,且是个唯一值
交叉砝码:
交叉设立界面中交叉砝码作用是,描述交叉值字段相应列出当前交叉列展开后哪个层次上。
退化:
在投影交叉查询中筛选条件中设立为退化项;用于在运营态(浏览态)进行再次投影交叉时,其成果集中需显示备用行或备用列。在第一次投影交叉查询成果中,退化项则既不出当前行头上,也不出当前列头上。
行间占比:
行间占比:指先按分组排序列进行分组排序,然后计算单元格与其所在分组小计值比,或者为单元格与其所在列总共计值比
列间占比:
列间占比:指比例=本列数值/多列总和
合并查询:
报表某些区域由查询成果填充、某些区域由手工填入,此类报表可通过“合并查询”模式完毕。
17.6.0.2典型报表案例:
报表是由数据和格式构成整体。
报表中取数规则离不开SELECT查询语句
查询模型中核心功能“SQL向导设计”实际是SELECT查询语句可视化工具。
如汇总表中SELECT查询语句:
SELECT 年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)
FROM 凭证表
INNER JOIN 凭证分录表 ON凭证表. 凭证主键=凭证分录表. 凭证主键
INNER JOIN 公司目录表 ON凭证表. 公司编码=凭证分录表. 公司主键
INNER JOIN 科目表 ON凭证分录表. 科目主键=科目表. 科目主键
WHERE 公司=corp
GROUPBY年度,公司编码,公司名称,科目
ORDERBY 年度,公司编码,公司名称 ASC
如下“SQL向导设计”工具(如下图)中:
“连接表”页签相应FROM…..某些
“连接条件”页签相应INNER JOIN …….ON某些
“连接字段” 页签相应SELECT……某些
“筛选条件”页签相应WHERE……某些
“排序字段” 页签相应ORDERBY……
系统自动对不含聚合函数字段作GROUPBY解决。
(一)汇总表:
年度
公司编码
公司名称
科目
借方发生额
贷方发生额
01
A
1001
100
01
A
100
02
B
1002
200
02
B
200
03
C
1003
700
03
C
700
用sql语言表达:
SELECT 年度,公司编码,公司名称,科目,sum(借方发生额),sum(贷方发生额)
FROM 凭证表,凭证分录表,公司目录表,科目表
INNER IN…..ON……
GROUPBY年度,公司编码,公司名称,科目
ORDERBY 年度,公司编码,公司名称
(可通过“SQL向导设计”功能完毕。)
(二)明细表:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
贷方发生额
01
A
1
/9/1
1001
100
01
A
1
/9/1
100
02
B
2
/8/1
1002
200
02
B
2
/8/1
200
03
C
3
/8/1
1003
300
03
C
3
/8/1
300
03
C
4
/10/1
1003
400
03
C
4
/10/1
400
用sql语言表达:
SELECT 年度,公司编码,公司名称,科目,借方发生额,贷方发生额
FROM 凭证表,凭证分录表,公司目录表,科目表
INNER IN…..ON……
ORDERBY 年度,公司编码,公司名称
(可通过“SQL向导设计”完毕。)
(三)旋转交叉:
如对上述明细表进行旋转交叉
(1)交叉列为1列时
交叉行:凭证号、科目
交叉列:年度
交叉值:借方发生额
交叉砝码(借方发生额):在列头第2层
复合维度:为Y时
年度
凭证号、科目
借方发生额
借方发生额
借方发生额
1
1001
100
2
1002
200
3
1003
300
1
2
3
交叉行:凭证号、科目
交叉列:年度
交叉值:借方发生额
交叉砝码(借方发生额):在列头第1层
年度
凭证号、科目
借方发生额
借方发生额
借方发生额
1
1001
100
2
1002
200
3
1003
300
1
2
3
(2)交叉列为多列时
交叉行:凭证号、科目
交叉列:年度、公司名称
交叉值:借方发生额、贷方发生额
交叉砝码(借方发生额、贷方发生额):在列头第3层
列复合维度:为Y时
年度、
公司名称
凭证号、科目
A
B
C
借方发生额
贷方发生额
借方发生额
贷方发生额
借方发生额
贷方发生额
1
1001
100
1
100
2
1002
200
2
200
3
1003
300
3
300
4
1003
400
4
400
交叉行:凭证号、科目
交叉列:年度、公司名称
交叉值:借方发生额、贷方发生额
交叉砝码(借方发生额、贷方发生额):在列头第3层
列复合维度:为N时
年度、
公司名称
凭证号、科目
A
B
C
A
B
C
A
B
C
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
借方发生额
贷方发生
额
1
1001
100
1
100
2
1002
200
2
200
3
1003
300
3
300
4
1003
400
4
400
(可通过“SQL向导设计”完毕。)
(四)投影交叉:
部门
姓名
性别
财务开发部
Sbq
男
财务开发部
sy
男
供应链开发部
ghl
女
财务开发部
fll
女
性别
部门
男
女
财务开发部
2
1
供应链开发部
2
用SQL语言表达:
select count(性别) from 人事视图 where 部门=’ 财务开发部’ and 性别=’ 男’
(可通过“SQL向导设计”完毕。)
(五)穿透:
(1)对旋转交叉成果穿透:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
贷方发生额
01
A
1
/9/1
1001
100
01
A
1
/9/1
100
02
B
2
/8/1
1002
200
02
B
2
/8/1
200
03
C
3
/8/1
1003
300
03
C
3
/8/1
300
03
C
4
/10/1
1003
400
03
C
4
/10/1
400
03
C
5
/4/1
1003
500
按单列(科目=1003)穿透成果:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
贷方发生额
03
C
3
/8/1
1003
300
03
C
4
/10/1
1003
400
03
C
5
/4/1
1003
500
按多列(科目=1003和年度=)穿透成果:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
贷方发生额
03
C
3
/8/1
1003
300
03
C
4
/10/1
1003
400
(可通过“SQL向导设计”及“穿透规则”中‘查询间穿透’来共同完毕。)
(2)对投影交叉成果穿透:
性别
部门
男
女
财务开发部
2
1
供应链开发部
2
按单元格穿透:
部门
姓名
性别
财务开发部
Sbq
男
财务开发部
sy
男
(可通过“SQL向导设计”及“穿透规则”中‘投影交叉穿透’功能来共同完毕。)
(六)行间占比
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
借方占比
01
A
1
/9/1
1001
100
01
A
1
/9/1
100
02
B
2
/8/1
1002
200
02
B
2
/8/1
200
03
C
3
/8/1
1003
300
03
C
3
/8/1
400
如按公司编码对借方发生额进行汇总:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
01
A
1
/9/1
1001
100
01
A
1
/9/1
100
小计
200
02
B
2
/8/1
1002
200
02
B
2
/8/1
200
小计
400
03
C
3
/8/1
1003
300
03
C
3
/8/1
400
小计
700
共计
1300
行间占比成果:
年度
公司编码
公司名称
凭证号
制单日期
科目
借方发生额
借方占比1(借方发生额/分组小计)
借方占比2(借方发生额/共计)
01
A
1
/9/1
1001
100
0.5
0.0769
01
A
1
/9/1
100
0.5
0.0769
02
B
2
/8/1
1002
200
0.5
0.1538
02
B
2
/8/1
200
0.5
0.1538
03
C
3
/8/1
1003
300
0.4286
0.2308
03
C
3
/8/1
400
0.5714
0.3077
(可通过“SQL向导设计”及“数据加工”中内置‘分组记录’、‘行间占比’算法来共同完毕。)
(七)列向分支记录型
corp
name
sex
A公司
韩千穗
女
A公司
智银圣
男
A公司
金晓光
女
A公司
王丽娜
女
B公司
金贤成
男
B公司
姜希灿
女
通过SELECT corp,(CASE sex WHEN '男' THEN 1 ELSE 0 END) AS male,
(CASE sex WHEN '女' THEN 1 ELSE 0 END) AS female
FROM T
将获得如下成果:
corp
male
female
A公司
0
1
A公司
1
0
A公司
0
1
A公司
0
1
B公司
1
0
B公司
0
1
SELECT corp,SUM(CASE sex WHEN '男' THEN 1 ELSE 0 END) AS male,
SUM(CASE sex WHEN '女' THEN 1 ELSE 0 END) AS female
FROM TEM_CASE
GROUP BY corp
则将查出如下成果:
corp
male
female
A公司
1
3
B公司
1
1
(可通过“SQL向导设计”功能来完毕。)
(八)合并查询(半录入半嵌入型)
部门
汉族
满族
蒙古族
1、直属部门状况
财务部
<人数>
<人数>
<人数>
行政部
<人数>
<人数>
<人数>
2、开发部门状况
HR产品开发部
<人数>
<人数>
<人数>
HR产品市场部
<人数>
<人数>
<人数>
(可通过“合并查询”功能来完毕,上述表格中某些区域通过手工录入,某些区域通过嵌入查询完毕)
17.6.1查询引擎管理操作办法
在主菜单中单击〖客户化〗-〖自定义查询〗-〖查询管理中心〗子菜单〖查询引擎管理〗,系统将弹出“查询引擎”浏览窗口。查询引擎管理涉及查询/界面对象树管理、查询模型设计、界面模型设计等重要功能。
17.6.1.1查询/界面对象树管理
图17-6所示查询引擎主界面左侧为一棵对象树,树上挂有代表查询对象和界面对象节点,右侧为显示当前选中对象基本属性属性框。
图17-6查询引擎主界面
文献夹管理:
l 增长/删除/修改:在根节点或目录节点之下可以增长目录,删除目录时会删除目录下所有对象。目录可修改属性为目录名称。同一目录下目录和对象不能重名。
l 复制/剪切/粘贴:在查询子树或格式子树下,可以将一种目录及其下属内容从某位置拷贝或移动到另一种位置。
对象管理:
l 增长/删除/修改:在根节点或目录节点之下可以增长查询对象或者界面对象。前者属性为编码、名称和数据源,后者属性为编码和名称,其中编码一经使用,就不再建议作任何修改,由于此编码也许被其他对象引用。
l 复制/剪切/粘贴:在查询或格式子树下,可以将一种对象从某位置拷贝或移动到另一种位置。
l 导入/导出:选中某个对象,可将其导出为XML文献,该文献可被导入到此外目录下。此功能可用于对象跨数据库复制。在导出查询对象或界面对象时,需将其引用查询对象一并导出才故意义。选中某目录时,导入功能可用。
切换定义数据源:
(当查询引擎不支持多数据源,只支持单数据源时此功能置灰)
查询引擎支持多数据源运作机制模式—NC业务在数据源A下运营,查询引擎定义放在数据源B,通过引擎定义查询可以到数据源C去执行。
图17-7切换定义数据源
定义数据源(上面说B)是指查询引擎自身系统表所在数据源,执行切换功能后,主界面上对象树内容会作相应变化。
图17-8切换定义数据源效果
修改执行数据源:
当需修改执行数据源时,选取左侧查询设计下目录,按“辅助设立”—>“批量修改执行数据源”,选取数据源下拉框数据进行保存。
17.6.1.2查询模型设计
查询模型设计涉及参数定义、SQL设计(含交叉定义)、SQL整顿、数据加工、穿透规则等几某些,其中穿透规则描述是本查询与外部查询通信关系,别的某些都用于描述查询内部属性。查询设计态和运营态基本流程如下图所示:
图17-9查询模型流程
(1) 参数控制
参数是查询模型中代表动态信息元素。在SQL设计、SQL整顿和数据加工中,均可以依照参数不同,对查询定义和执行进行调节。如果创立某个参数作用是依照其取值不同变化WHERE条件设立,则此类参数成为过滤型参数,这是最惯用参数功能。
参数定义:用于定义本查询内部引用所有参数,其中参数名要保证互不相似。数据类型涉及自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“@”分隔枚举值,或者是一种单字段查询SQL;当类型为参照时,枚举项为基本参照名,或者是用尖括号括起自定义参照类名。
图17-10参数定义
参数引用:参数可在SQL设计筛选条件页签引用,也可在SQL整顿或数据加工嵌入代码中运用编码向导引用。
图17-11参数引用
参数设立:运营态规定顾客一方面对参数进行设立,这与查询模板使用类似。当报表引用了各种查询时,参数将通过多页签设立,每个页签代表一种查询。
图17-12参数设立
(2) SQL设计
SQL设计涉及向导设计和手工设计两种方式。无论采用哪种,在完毕设计时系统均会对SQL进行合法性校验,如未通过校验则不能保存设计。作为向导设计一种重要构成环节,有必要先简介一下数据字典。
u 数据字典
前面已经提到,查询对象属性中包括数据源信息,在设计查询时候需要加载相应数据源数据字典。NC数据库以DDC作为数据字典,但非NC数据库则没有DDC。系统会依照执行数据源是NC、IUFO或其他数据库三种状况分别加载不同数据字典,并且这一机制已经预留了扩展接口,从而可以面向各种类型数据库执行取数功能。
关于数据字典生成有各种做法,可以参照DDC专门文档。查询引擎中用到数据字典都以一棵对象树形式存在,树节点涉及目录、表、视图、字段、外键等信息,通过双击对象节点可以协助录入SQL语句成分。
u 向导设计
向导设计参照典型SQL构成规则,充分运用数据字典功能,引导顾客一步步完毕SQL设计,因而是推荐使用方式。它由如下六个环节构成,其中最后一步“交叉属性”超过了SQL涵义,在背面章节中进行专门简介。
l 表定义:即SQL语句中from某些,可以运用数据字典选取库里数据表,也可以选取查询对象,从而实现查询集成(基于查询成果定义新查询)。
图17-13表定义
图17-14数据表与暂时表
l 连接定义:即SQL语句中join某些(表间连接关系),支持单键连接和多键连接两种模式。
图17-15连接定义
l 字段定义:即SQL语句中select某些,可以定义任何SQLSERVER语法支持查询表达式,但要保证字段别名不重复且使用规范名称(以字母开头、由字母、数字、下划线构成字符串,且不能使用SQL保存字)。如果使用了汇集函数,则由系统自动完毕group by某些。
图17-16字段定义
图17-16表达式生成器
l 字段表达式定义:
下面作些特殊函数用法阐明。
如其他函数:CASE WHEN用法
如某查询定义中,当科目表中字段“余额方向”为1时,需将查询中字段“余额方向名称”(如字段别名为name)值显示为”借”,否则为”贷”。
则字段表达式为case when bd_accsubj.balanorient=1 then '借' else '贷' end
操作办法:双击“其他函数”中CASE WHEN,则在字段表达式中生成:
case when then else end,然后在字段表达式编辑框中继续手工编辑成完整表达式:case when bd_accsubj.balanorient=1 then '借' else '贷' end,然后按“拟定”。
图17-17 CASE WHEN用法1
图17-17 CASE WHEN用法2
l 筛选条件定义:即SQL语句中where某些,可定义拟定条件和待定条件,后者可以通过双击右操作数编辑框弹出参数界面并作引用。
图17-18筛选条件定义
l 排序字段定义:即SQL语句中order by某些。
图17-17排序字段定义
l 数据交叉属性:交叉是一种惯用多维数据分析手段,详见后文。
u 手工设计
手工设计是支持自由SQL方式,由于复杂SQL在解析、适配、执行等方面不稳定性较大,因而不推荐普通顾客使用。手工设计涉及:
l SQL录入:顾客可以在数据字典辅助下录入SQL语句,规定遵循SQLSERVER语法。
图17-20 SQL录入
l 字段显示名设立:系统通过对顾客录入SQL解析获得字段信息,并向顾客提供输入字段显示名机会,显示名默认值与查询字段物理名相似。
图17-21字段显示名设立
(3)数据交叉
数据交叉涉及第一类(投影)交叉和第二类(旋转)交叉两种类型。两类交叉差别在于:第一类交叉属于查询行为,合用于行列设立都已在表样中固定报表,其交叉成果严格遵循表样格式,其行列构造不会受查询数据影响;第二类交叉属于数据加工行为,其交叉后行列构造在查询出数据之前不可预料,多用于完全真实地对原始数据进行动态解决。
u 第一类(投影)交叉
假定有一种查询SQL,其查询成果是单行单列汇总值,此外尚有两组WHERE条件序列,分别为横向序列(WhereX1、WhereX2、……、WhereXn)和纵向序列(WhereY1、WhereY2、……、WhereYn),则数据矩阵A(aij)相应成果集成为投影交叉,aij是WhereXi和WhereYj同步作用在上述SQL上获得成果。
例如,某查询用于查出公司和部门下人数,原始SQL为:
select bd_invbasdoc.invcode ,bd_invbasdoc.invname,bd_invcl.invclasscode,bd_invcl.invclassname,ic_general_b.ninnum from ic_general_b left outer join bd_invbasdoc on ic_general_b.cinvbasid = bd_invbasdoc.pk_invbasdoc left outer join bd_invcl on bd_invbasdoc.pk_invcl = bd_invcl.pk_invcl group by bd_invbasdoc.invcode,bd_invbasdoc.invname,bd_invcl.invclasscode,bd_invcl.invclassname
查出成果如下图所示:
图17-22原始数据(无交叉)
当前把查询字段中只保存实收数ic_general_b.ninnum一项,然后进行如下投影交叉设立:
图17-23投影交叉设立
则交叉后成果如下图所示:
图17-24投影交叉成果
u 第二类(旋转)交叉
旋转交叉用于显示表中某几种字段(称为交叉值字段)记录值,并将其分组放置在查询成果中,一组列在数据表左侧(称为交叉行字段),一组列(称为交叉列字段)旋转到数据表上部成为列表头,记录值则放在相应交叉单元。
关于旋转交叉更细节内容,请参照《交叉表使用阐明》。
对于投影交叉中例子,假定进行如下旋转交叉设立(其中交叉砝码表达交叉值字段位置,它只能出当前交叉行字段或交叉列字段当中):
图17-25旋转交叉设立
则交叉后成果如下图所示:
图17-26旋转交叉成果
(4)代码嵌入
代码嵌入涉及SQL整顿、数据加工、数据穿透等三种查询对象使用方式。
u SQL整顿
SQL整顿是指在SQL查询之前,对SQL所作调节。普通会依照参数不同,对查询表、字段或条件等信息进行增补或修改。SQL整顿详细内容由内嵌代码片段描述(这与背面将简介数据加工和穿透规则同样),代码录入可通过编码向导协助完毕,尽管如此,这几种功能依然推荐由高档实行人员或程序员使用。
图17-27 SQL整顿代码
在图示SQL整顿代码中,当参数“detail”取值为“Y”时,引擎会在本查询对象已完毕SQL设计基本上多查询一张表(bd_defdoc)和两个字段(档案编码、档案名称),从而获得更明细查询信息;如果该参数取值不为“Y”,则依然按照SQL设计定义去执行查询。
如下简朴简介几种SQL整顿算法编码向导用法:
l 追加查询表:参数为待追加表物理名。
图17-28追加表向导
l 追加连接条件:与追加表同步使用,参数为连接模式、追加表物理名和追加表间连接条件。
图17-29追加连接条件向导
l 追加查询字段:与追加表同步使用,参数为追加字段表达式、显示名和别名。
图17-30追加字段向导
l 按参数追加条件:依照参数取值不同追加不同筛选条件,参数为参数名和筛选字段。
图17-31按参数追加条件向导
u 数据加工
数据加工是指某个(或某几种)查询成果集在通过一系列加工算法变换后得到另一种成果集,而后者普通是业务上规定呈现成果。有关算法又称为加工滤镜,滤镜普通支持输入各种成果集和输出一种成果集,并可以嵌套使用。
数据加工与SQL整顿区别在于:前者在SQL查询之后进行,作用对象是成果集;后者在查询之迈进行,作用对象是SQL定义。
在数据加工编码向导中,提供了各种实用加工滤镜。图示数据加工代码把主键分别为“user1”和“user2”两个成果集按照pk_corp字段为键进行了左外连接,并在连接成果中保存了“user_name1”、“pk_corp”、“user_name2”三列。
图17-32数据加工代码
如下简朴简介几种数据加工算法编码向导用法:
由查询获得成果集:依照查询ID和参数获得查询成果集,如果没有参数或不需要设立参数,则参数变量可取null。
图17-33获得成果集向导
公式设立:参数为公式列名、返回值数据类型和公式,如果公式列名不存在则新增一列,否则将该列内容更新为公式返回值。
图17-34公式编辑
图17-35公式定义
成果集连接:指定两个成果集连接字段、连接方式和连接后保存字段,得到连接后成果集。
图17-36成果集连接向导
成果集联合:指定两个列构造相兼容成果集,得到联合(union)后成果。
图17-37成果集联合向导
u 数据穿透
数据穿透:假定报表R1上存在某个区域A1,A1内部有若干业务数据,如果以A1为出发点可以切换到另一张报表R2上区域A2,并且A1和A2内部数据存在着某种内在联系,则称可以从R1穿透到R2。当这种穿透行为传递下去,就可以理解某张报表数据明细,甚至追溯到它数据来源。普通会把上述区域选为一种表格行或者一种表单元,而上述内在联系就称为穿透规则。
一种查询上可以定义各种穿透规则,每个规则需要指定穿透目的查询,同步目的查询上要创立一种过滤型参数,用于接受穿透区域取值。下图所示穿透规则表达了这样一种穿透意愿:当顾客选中了当前查询成果某行时,容许她按照“psncode”字段在选中行取值穿透到另一种查询(即目的查询,其ID为“rygzay”),而目的查询接受参数为“psncode”。
一种查询可以设立多条穿透规则,由本查询可穿透到目的查询需要创立一种(或各种)过滤型参数,用于接受穿透值。下图所示穿透规则表达了如下穿透意愿:如果顾客选中了当前查询成果某行时,容许顾客依照选中行psncode字段取值穿透到另一种查询(即目的查询,其ID为“rygzan”),而目的查询接受参数为psncode
图17-38穿透规则定义向导
图17-39穿透规则代码
下图显示了一种由存货库存存量信息穿透到存货信息再穿透到存货分类信息用例,其中第一步穿透是非等值穿透(相称于“存货名称like ‘芯片%’“),第二步是等值穿透(相称于“存货分类=’产成品’”)。
按以“芯片“打头存货名称由库存实收数量登记表穿透到存货信息
按存货分类为“产成品“从存货信息表穿透到存货分类信息
图17-40穿透效果示意
(5)查询浏览
u 查询执行与呈现
在建立好查询模型之后,系统提供预览查询执行成果功能。顾客一方面输入执行查询所需要参数取值(如果有参数话),查询引擎会依照该查询对象数据源去相应数据库执行查询,在通过查询成果集评估(对于查询记录数过大状况容许顾客优化或放弃查询)之后,把成果集呈现给顾客。在呈现之后,顾客可以继续进行穿透、交叉和仪表测试等工作。
图17-41查询预览
u 数据导出
导出功能支持将预览数据导出为纯文本文献,并可进而用EXCEL打开。随着产品发展,数据导出格式会逐渐丰富。
u 创立物化表
查询引擎可以依照预览数据直接到数据库创立物化表,同步将物化表构造注册到DDC中,后来SQL设计就可以基于新创立物化表进行,从而扩充了查询集成范畴。至于如何保证物化表数据同步刷新,可以参看抽取任务一节。
图17-42创立物化表
17.6.1.3格式模型设计
界面模型节点新建和管理参见前面章节。可以设计新界面模型,也可以对已有界面模型进行修改。界面模型设计涉及引用查询,界面可视化设计,绑定数据集,数据预解决等某些。界面模型设计态和运营态基本流程如下图所示(设计态操作并没有严格意义上顺序限制):
图17-45界面模型流程
(1)引用查询
引用查询是指将界面模型所要呈现查询成果集相应查询定义引用到模型中来。由于同一查询定义依照不同参数设立也可以得到不同成果集,所觉得了区别这种绑定基于同一查询定义不同成果集时,对每一种查询成果集起一种单一别名来标志。
图17-46查询引用界面
对于查询成果集之间存在某种一对多关系,还可以依照需要建立主从关系(即主从表):
图17-47主子连接设立界面
(2)格式设计
界面模型格式设计涉及了控件管理、行列格式设计以及数据预解决等三某些。分别简介如下。
表
控件
图表
图17-48界面模型设计界面
u 控件管理
界面模型设计工具提供了最惯用控件,如图17-48中控件栏中所示,分别是按钮、复选框、组合框、标签、列表、单选框、多页签、表、文本域、文本框、树、面板、分割栏、主子表和图表,其中最重量级控件是表和图表,绝大某些数据集呈现工作是这两个控件完毕。
初始时,界面上只有一种面板,处在选中状态,布局是默认BorderLayout。接下来工作就是要在这个面板上定制界面,这个过程和普通可视化设计大同小异,在此不再赘述。
图17-49界面模型
双击界面上控件就可以打开属性编辑器,可以编辑控件有关属性。属性编辑器上边是当前界面控件列表,下面列出了当前选中控件属性列表。可以从控件列表中选中控件,也可以在界面上双击控件来选中控件进行属性编辑。
图17-50属性编辑器
所有控件均有背景色,前景色,字体和首选大小等普通属性。另一方面,控件具备某些自己特有属性,如面板具备布局属性,分割栏有分栏方向,分栏位置等特有属性。下面简介一下几种重要控件。
呈现数据集最重要
展开阅读全文