没有合适的资源?快使用搜索试试~ 我知道了~
首页Business Objects 以及reporting service报表点滴
资源详情
资源评论
资源推荐

Ver20091111
BO
BO 入门及笔记
主要包括用 designer 构建 universe,在 webi ( Web Intelligence Rich Client )中使用 universe 构
建报表。
目前使用的版本是 BusinessObjects XI 3.1 -- BusinessObjects Edge Series 。
主要与 Universe 相关
关于 measure
在 object 的属性定义中有个 qualification 属性的设置,可以设置为 dimension , measure ,
detail 中的某一项。这里需要对 measure 提一点的是,紧跟着会有一个”choose how this
measure will be projected when aggregated”的设置,这个设置的用途目前发现是在 webi 的报
表中,如果对 query 取出来的数据再进行聚集计算,这个设置是默认的聚集计算方式。
对于 measure 的再认识,是可以用来且一般是用来作计算的,而不必非要去做聚集计算 …
…
对于 measure 的再再认识,主要是 BO 中比如 webi 的图表中的一些字段指定要用 measure
类型,其它诸如 dimension 的还不能拖到指定 measure 的位置使用。其实这个分类的设计挺
蹩脚的,因为有时一个列可以具有多个 BO 中的类别,比如像日期类型即可做维度又可作
计量。…….
Measure 的建议用法,(A)一般是数值类型的列或普通计算列应该设置为 measure 类型并
且不要默认聚集函数,(B)而那种已经调用聚集计算函数得到的列默认就是 measure 类型
但不要默认聚集函数。(C)要进一步做聚集计算可以在 webi 中调相应函数来做。(A)
是由于 webi 中的图表等处必须要 measure 类型,(B)是防止使用隐藏列(由于 BO 在显示
的维度少于取出的维度时会找默认聚集函数做计算),目前 BO 的隐藏列的做法很不正规。
这里会费点事的地方是会改 Universe 对 object 的默认设置。省事的是不必设置隐藏列,而
且如果有无默认聚集计算函数的 measure 类型的 object 和有默认聚集计算函数的的 object 在
同一个表格里时,BO 也就不会做聚集计算了,从而有一定的容错性,可以防止部分列的
默认聚集计算函数被误改之后还能保持报表显示正确。
原则是,尽量显式去实现计算,防止对 BO 工具不熟看不到一些隐式信息而看不懂报表是
如何实现的或做了什么样的默认计算。
(另外,想利用 measure 的默认计算函数省点事的,还不太可能,比如在图表中需要显示

measure 列的标题时,基本还得定义一个 variable 以利用其名称作为标题,此时再给此
variable 显式定义计算方式并不多费时间。)
由于 BO 中一些特殊性。从本义上看,Measure 是表示维度的度量特性,而一般是数值类型
的列都是用于度量的,这些列从理论上来说应该设置为 measure 类型。在实际使用中,在
Universe 中把数值列拖为对象时,默认是 dimension 类型,虽然用于表格不出什么问题,但
图表上及其它某些地方一定要求是 measure 类型,从而必须改默认类型。另一方面,为了
避免 BO 在显示的维度少于取出的维度时默认做聚集计算,而不能直接显示明细行,虽然
可以加隐藏列避免,但是还是把默认的聚集函数设置为无比较好,要想进一步做任何聚集
计算可以在 webi 上调用聚集计算函数实现。
关于 lov ( list of values )
看 来 每 个( dimension 和 detail 类 型 的) object 都 有 自己默认 的 lov , 在 object 的 位 于
properties 选项卡的属性页上,点击 associate a list of values 框中的 edit 按钮,可以从弹出的
query panel 右上的 result objects 框中的内容可以看到。也可以在这里编辑。
使用 object 的 lov 目前知道是在@prompt (不管是在 Universe 中定义还是在 webi 中定义)
函数中使用,使用写代码的方式可以参考@prompt 函数的定义,在 webi 中可以有界面编辑
的方式。在 webi 中 run query 时可以在弹出的 prompts 界面上看到最终使用界面。
一个应用是从 id 与 name 的列表清单中根据 name 选择,再使用相应的 id 的值。这时需要:
先在 Universe 设计中对这个 id object 的 lov 进行设置,找到 lov 的编辑界面,默认只在右上
的 result objects 框中有本 id object,然后拖一个 name object 过去(必要时还可设置下面的
条件过滤),注意需要拖到 id object 的右边,保存并 export 这个 Universe。然后在 webi 报
表中对这个 id object 作 prompt 过滤即可看到。下面有两个截图可以参考。

关于 cascade lov
创建与使用:在(designer 编辑)Universe 中,从 ToolsList of Values…create cascading
lists of values 菜单项进去。然后把左边的一些有层次结构的 object 弄到右边来,最后点
Generate LOVs 的按 钮生成 。而 点击 完按 钮也 就生 成好 了, 点击 菜单 项 “ Edit a list of
values…”进入编辑界面其实很难看到已经生成的有层次结构的 cascade lov,很不直观,选
中编辑界面中某个曾设置过 cascade lov 的 object,点 Edit 按钮,可以在弹出的 query panel
界面的右下部看到多了一个条件。这个编辑界面也可以从 object 属性的编辑 lov 的界面进入。

使用时像普通 lov 那样在 webi 报表中对层次结构中的某 object 作 prompt 过滤,在 run query
时即可看到有层次结构的数据供选择。
几点说明:如果选择的有层次结构的 objects 中有已定义的 lov 的话,则这些 lov 会被
cascade lov 覆盖。然后可以在普通编辑 lov 的界面上再补上定义。
还要注意一点,生成 cascade lov 后在下层 object 的 lov 的编辑界面上能够看到在 conditions
中有一个条件,但是如果不做生成 cascade lov 而直接添加条件,是不能被当作 cascade lov
处理的。
如果选择的有层次结构的 objects 都只是 id 的话,没作特殊处理只能看到一些 id,要显示
name 需要在普通编辑 lov 的界面上把 name object 拖上去。这样可以避免 name 的 objects 来
作层次结构而导致可能的重名问题。
一些相关截图如下:

Lov 与 Prompt
在 prompt 小节介绍。
Lov 的相关问题
如果一个 object,删掉了 select 中的东西,默认的 lov 也有问题,需要重新拖拉一下。
Derived Tables
Derived Tables 是自写 select sql 的方式,应该是最灵活的了。不过还有一些问题,比如里面
不能有 order by 语句,不能预排序。从而对多列先排序,再取 top 行的效果目前没法支持。
另外,一个 Derived Table 还可以被另一个 Derived Table 使用。
剩余27页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论8