前提条件:4个软件的安装
1个BO服务端(装在服务器)、1个BO客户端(装在自己电脑)、1个oracle服务端(服务器,BO服务端的依赖项)、1个oracle客户端(装在自己电脑,是BO客户端的依赖项)
辅助工具:sqldeveloper,或者PL/SQL Developer(作用:查询数据库,验证数据基础)
资源库资源 -> 插入会话 -> 填写系统(SAP BO服务端地址)、用户名和密码(管理员分配的) -> 确定
文件 -> 新建 -> 项目 -> 填写项目名称,项目位置可更改 -> Finish
右键刚刚新建的项目 -> 新建 -> 关系连接 -> 填写资源名,点“下一步” -> Oracle–Oracle 11–Oralce Client,点“下一步” -> 填写要连接的数据库的用户名和密码以及服务(TNSNAME,连接串),点“测试连接”按钮测试是否连接成功,若是,则“完成”。 也可点击下一步修改参数,不过一般默认就好。
右键刚建立的关系连接 -> 将连接发布到资源库 -> Next -> Finish -> 点“是”,发布之后在本地项目会有一个.cns连接快捷方式生成,同时,在资源库资源的“连接”文件夹下可以看到该连接。
右键项目BO_test -> 新建 -> 数据基础 -> 填写资源名,点“下一步” -> 点“下一步” -> 选中发布到资源库的安全连接,后缀为.cns的,点“完成”,则成功建立一个数据基础。注意这里不能选本地连接,不然将导致之后的Universe不能发布到资源库。
数据基础工作主面板如下,中间的表可以拖到右边的主面板进行数据基础的构建
现演示以下查询的数据基础的构建:
首先找到gfods用户的三张表product_netvalue,mdm_product和sys_time,将其拖到主面板中
--月末资产净值报表
select a.netvaluedate as "日期",b.internalcode as "基金代码",
b.productfaname as "基金名称",sum(a.productvalue) as "规模"
from gfods.product_netvalue a
inner join gfods.mdm_product b
on a.bk_product=b.bk_product
inner join gfods.sys_time c
on a.netvaluedate=c.sk_date
where a.bk_product in &bk_product
and c.sk_date between 19990101 and 20161231
and c.monthendflag ='Y'
group by a.netvaluedate,b.internalcode,b.productfaname
order by b.internalcode,a.netvaluedate;
其次,根据查询的SQL语句将三个表的关联字段连起来。用鼠标直接连接两个表相应的字段,双击连线设置属性,根据表值选择基数,若为inner join,则直接点ok;若为left join,则勾选左边表的“外部连接”。
(因一个表中存在大量字段,很多字段对本次查询没有用,可以双击表头,选取我们需要的字段)
连好关系后,应根据需求设置过滤条件。若想要让模板更灵活,在此数据基础阶段可以先不过滤或只设置将来不会改变的过滤条件,以使得使用此Univese的人可根据自己的需要添加过滤条件、灵活查询自己想查的内容,但此模板效率也会相应较低 ;若在数据基础添加太多过滤条件,则该模板灵活性就减弱了,因为发布出来的语义层(Universe)只能查过滤后的数据。
回到本例,可以看到where过滤条件有三个,
1) a.bk_product in &bk_product ,需要用户输入参数,可在这里添加参数,如下,点击“参数和值列表”,填写名称、提示文本,因这里可以选取多个值,因此勾选允许多个值,还可设置默认值:此查询默认查bk_product in (‘275086’,’275842’,’275864’,’275863’)的内容。
接下来点“数据基础” -> 右键BK_PRODUCT –> 插入过滤器 -> 编辑语句,验证 ,关闭 -> OK :
2) c.sk_date between 19990101 and 20161231,这个我们可以先不在这里过滤。这里是从数据库中取数据,是最全的数据,若过滤掉了,则之后语义层就查不到19990101 and 20161231之外(如2017年)的数据了,灵活性不强。这个条件可在Web Intelligence工具生成报表的时候再设置。
3) c.monthendflag =’Y’,若我们认为之后的查询都要设置这个过滤条件,不会再查询c.monthendflag =’N’的内容,则可以直接在这里添加过滤条件。
在左栏项目中,右键.dfx数据基础 -> 新建业务层 -> 完成
因查询的字段有一个sum函数,可在在业务层新建该变量(或者也可在Webi里使用它的sum函数)。
如下,单击“月末资产净值报表” -> “+” -> 度量 -> 更改名称、写SELECT语句,若要用到某变量,可直接从左边拖过来,又或者可以点击SQL助理编辑,完成后点击绿色“√”按钮验证表达式。
保存业务层后发布到资源库,便完成业务层(Universe)的制作。
右键.blx业务层文件 -> 发布 -> 到资源库 -> 全部选中 -> 检查完整性 -> Next -> Finish. 最后一幅图为在中央管理控制台上查看发布的Universe,可见Universe发布成功