Dashboard Design 4.0(Xcelsius)数据直接绑定功能:瑕瑜互见
本文原发表于http://bobj.sapbiblog.com/2012/02/20/the-good-the-bad-and-the-ugly-of-direct-binding-in-dashboard-designer-4-0-xcelsius/ 是由Decision First的咨询部经理Jonathan所著。讨论了在BI 4.0 FeaturePack3引入的Dashboard直接绑定Universe进行数据建模的功能。
诚然,文中的一些观点是客观并有价值的,尤其是这种新连接的不足,但是我们也要看到这是一个很好的尝试,使得BusinesObjects前端工具都有能力连接到同样的语义层Universe。至于文中提到的利用BIWS等方式自然有其优势,但是我们也不能避而不谈其劣势,比如我们必须创建WebI,而对于那些可能并不是可以重用webi的设计仪表盘的用户来说,此选择的开发成本是显而易见的。除此以外,引入的层次越多,那么在解决问题时联机调试的难度就越高,同时,引入的层次越多,那么被每个层次的产品bug所干扰的程度就越高。而至于QaaWS,乍一看似乎跟直接绑定没什么区别。但是QaaWS只能整体作为一个web service对外服务,而对于直接绑定,我们可以建立一个"baggy" universe,从中选择我们需要的对象建立查询。而如果你体验过FP3提供的快速建立查询过滤器的功能,你一定会感叹于它的便捷性。
Dashboard Design 4.0(Xcelsius)数据直接绑定功能:瑕瑜互见
伴随着SAP BusinessObjects 4.0的发布,SAP决定重新命名Xcelsius并全新升级。SAP现在将Xcelsius 2008称为Dashboard Designer 4.0.除了新名字以外,SAP也对数据交互的方式做了一些升级。它让开发人员可以直接绑定一些组件到通用语义层(CSL)Universe,避免了与微软Excel电子表格交互来绑定模型。乍一看,这好像是十分需要的增强,但是有一些关于性能和功能的考虑需要讨论。接下来我讲概述直接绑定的过程,这么做的好处以及不足。
在Dashboard Designer 4.0中直接绑定使开发者可以直接创建可充用的查询。在Dashboard Designer里有一个你必须激活的面板叫做“查询浏览器”。这个面板让开发者可以定义一个或者多个查询,被用于电子表格或者组件。查询的结果可以直接绑定到“一些组件”。例如,当你使用饼图定义种类,你可以映射那个种类到一个measure或者dimension而不必映射到Excel。
具有创建查询绑定数据数据的功能相较于Xcelsius 2008访问在线数据的过程是一个进步。之前的Xcelsius版本需要你创建对外部数据的连接然后将数据映射到Xcelxius的电子表格模型。具有在designer里直接创建查询的功能会让开发变得稍微快速一些。Decision First的高级商务智能顾问Chris Hickman对于这个增强有如下表述:
“直接查询绑定的执行对于你的dashboard的性能优化是至关重要的。设计者越少的依赖于Excel来保存和提供数据,dashboard会执行得越快。直接绑定将让设计者保持dashboard数据连接特征的同时减少或者避免单元格绑定的需要。”
你会发现绑定到查询的组件能够直接预览数据而不必渲染后预览dashboard.swf文件。
Dashboard Designer的另一个增强是“query prompt selector”组件。这个组件将自动绑定到LOV和查询的一个查询过滤器。从这个组件选择的值将自动过滤查询的数据。这与以前必须映射数据和LOV到Excel和组件然后设置一个触发器来强制刷新的过程比更简便。
最后的一个改进集中在开发工具的性能和Dashboard文件导出到repository的方式。开发工具好像有了一些代码的改进使得工作区对绑定和编程的请求反应更快。在以前的Xcelsius版本当更改模型时可能假死几秒甚至几分钟。Dashboard Designer减少了这种停顿因为不需要那么多绑定数据和组件到Excel。你也会看到文件导出到SAP BusinessObjects Enterprise的增强。当你导出4.0版本的dashboard时,其实你导出了2个文件。你可以通过查询CMS数据库看到这点。第一个文件是渲染过的.swf,第二个是.xlf。.swf是终端用于实际查看的文件,.xlf包含开发者用来更新dashboard的模型。这个增强使得保存、保护和管理Dashboard更加容易了。在以前的版本,很容易变更和导出.swf后忘记保存.xlf模型文件。你也可能由于两个文件单独管理而错误替换.xlf文件。Chris对此有如下表述:
“我们的一个SAP BOBJ XI 3.1客户有一个很漂亮的dashboard并要求我改变设计。他们有编译的swf但是不能找到xlf源文件了。新的Dashboard Design对通过将源文件和编译后的dashboard存储于同一位置修复了这个问题。”
以上列出的可用性增强将使Dashboard Designer对开发者更友好,但是在性能方面几乎没有改进。基本上,与QaaWS或者BIWS相比,直接绑定查询对性能并没有什么改进。当你刷新直接绑定查询时你仍然是利用web service访问SAP BOE JAVA应用服务器。利用Fiddler2做一个简单的trace会发现当Dashboard Designer刷新时http://;/dswsbobje/*上下文被访问了。这好像听起来不是个问题,下面一个简要的技术探讨可能会就为什么这个很重要作出解释。
当用户查看一个xcelsius swf文件时,TA的浏览器的flash播放器插件被用来渲染组件和数据。播放器通过http或者https连接到配置到的web service并抽取数据。如果你的dashboard只有一个查询连接,性能很可能是可以接受的。但是如果你的dashboard有多个查询,每个都将被串行处理。此外,数据以XML形式传输。这个XML之后被flash播放器解析然后在组件内渲染。当你通盘考虑到连接被串行处理和解析XML数据的事实后,你会明白一个多查询的dashboard将可能变慢。这很重要,因为大部分dashboard都有5到10个查询连接连满足业务需求以及因为dashboard designer缺乏聚合引擎所做出的折中方案。
Dashboard Designer是一个可视化工具。它生成抢眼的交互仪表盘但是它不具有真正的聚合或者分析引擎内嵌在其组件里。为了支持这个评判,让我们讨论下直接绑定查询是如何工作的。如果我定义了了一个有两个dimension和三个measure的查询,那个查询的粒度是基于两个dimension。例如,如果查询被定义为YEAR,MONTH,TOTAL_SALES,TOTAL_QUANTITY,MARGIN,结果将是:
YEAR |
Month |
SALES |
QTY |
MARGIN |
2009 |
January |
25000 |
125 |
1000 |
2009 |
February |
32000 |
219 |
1250 |
2009 |
March |
28000 |
189 |
45 |
2010 |
January |
27000 |
135 |
236 |
2010 |
February |
31000 |
204 |
256 |
2010 |
March |
45000 |
254 |
456 |
如果我绑定YEAR和TOTAL_SALES到一个柱状图,结果将是:
注意YEAR和TOTAL_SALES每6个月重复一次。这是因为Dashboard Designer缺乏聚合引擎。绑定到组件上的查询只在数据库层面聚合一次,之后就在模型里保持查询(YEAR MONTH)的粒度。如果我的需求是有两个图,一个按照YEAR另一个按照YEAR和MONTH,我将不得不丁一两个查询然后将他们绑定到适当的组件。如果你有过满足实际需求开发xcelsius dashboard的经验,就很容易理解缺乏聚合引擎是如何导致多个查询的。如Chris Hickman所说,这是一个真正需要应付的问题。
“Dashboard Designer缺乏聚合引擎导致查询犯懒。最佳实践宣称查询应该是联合的并将数量降到最少,但是如果如果单一查询无法适当地提供聚合数据,那么就必须使用多个。开发者只好使用越来越多的查询或者调查像XSIS这样的第三方工具来有效地在运行时聚合数据。”
我也会提出与QaaWS或者BIWS相比直接绑定会导致导致更多的查询。使用QaaWS或者BIWS我可以使用subtotals VLOOKUP INDEX和其它Excel公式来在某种程度上聚合数据。使用数据绑定,我不得不创建多个查询,因为我绕过了Excel模型。在最近的一个Dashboard Designer项目中,这个问题变得很明显,而我们恢复使用BIWS来帮助减少查询的数目并提高性能。值得注意的是在Dashboard Designer里定义的查询可以使其数据绑定到Excel模型而不是直接绑定到模型。一旦数据在Excel里,你可以设计出一种模型来帮助聚合数据,但是与利用WEBI并能解决很多以上问题的BIWS相比,我没有看到这种方式体现的任何实际价值。查阅我在ASUG 2011会议上关于BIWS的演讲来获得更多细节。
直接绑定的另一个问题是是对于利用可控的缓存查询数据,它没有提供任何解决方案。BI 4.0和XI 3.1 SP3平台包含了一个新的Xcelsius cache server,动态地缓存数据并降低并发用户请求对数据库的压力。尽管如此,这与利用计划报表的实例来提供数据并不一样,后者绕过数据库并利用保存的数据。使用直接绑定,除非查询结果能够由Cache server提供否则将查询数据库。简而言之,如果你的数据库性能不佳,那么你的交互dashboard也慢。
希望在越多了这篇文章后,你能够看到Dashboard Designer 4.0里直接数据绑定的长处与短处。尽管如此,不想只留下一个坏消息,因为有一个选择可以消除所有直接绑定具有的问题与此同时保留它的长处。这是Dashboard Designer的一个插件,叫做Antivia XWIS,它彻底改进了Dahsboard的功能。关于本文提到的,Antivia XWIS提供了一个聚合引擎,直接绑定的替代方案,使用报表实例的功能和很多其他好处。如果你还没有实际体验过XWIS,我建议你看一看。你可以访问Antivia XWIS advantage页面获得更多细节。
Dashboard Design 4.0(Xcelsius)数据直接绑定功能:瑕瑜互见相关推荐
- vue2.0,vue3.0 v-model数据双向绑定
vue2.0,vue3.0 v-model数据双向绑定 vue.2.0 vue2.0 vue-property-decorator vue3.0 vue.2.0 <base-checkbox v ...
- Vue是怎么实现数据双向绑定的
vue数据双向绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,那么vue是如果进行数据劫持的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象是个什么 ...
- Ant Design 4.0 进行时!
引言 Ant Design 于 17 年 12 月发布 3.0 以来,已经经历了 16 个月的时间.在此期间,我们修复了海量 Bug.以及增加大量新功能(更新日志).提交了 4289 个 commit ...
- antd vue form 手动校验_Ant Design 4.0 的一些杂事儿 - Form 篇
上一篇:Ant Design 4.0 的一些杂事儿 - Table 篇 是的,趁着手热,于是又开了一篇新的文章,用来讲讲我们在开发 Ant Design 4.0 的 Form 时遇到的一些杂事儿.当然 ...
- EngJS(超轻量) 中数据双向绑定如何使用
Eng github 所有支持数据双向绑定的js工具 ,触发双向关系的基本方式无外乎 wather关系 和 事件关系 两种 . 前者操作数据时 ,后者触发事件时. 下面简单 的介绍Eng 中 的 w ...
- 小猿圈解析vue数据双向绑定的缺点
vue是当今前端很流行的一种框架,但是vue也是有一定的缺陷的,你有过了解吗?下面小猿圈web前端老师就为你解析一下vue数据双向绑定的缺陷,希望对你有所帮助,下面我们一起了解一下吧. 1.vue 实 ...
- 深入ASP.NET数据绑定(中)——数据双向绑定机理
转载自 阿不 http://hjf1223.cnblogs.com/ 在上一篇<深入ASP.NET数据绑定(上)>中,我们分析了在.NET中的数据绑定语法的一些内部机理.简单说来就是ASP ...
- reportviewer控件mysql_如何将数据表绑定到ReportViewer运行时
小编典典 我找到了如何将数据表绑定到reportviewer的答案,我将在这里分享可能对其他人有用. 加入形成 clsTables类 , Report1.rdlc文件 , reportViewer1 ...
- 西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分
最近我参加了一次来自西安的电话面试(第二轮,技术面),是大厂还是小作坊我在这里按下不表,先来说说这次电面给我留下印象较深的几道面试题,这次先来谈谈Vue的数据双向绑定原理. 情景再现: 当我手机铃声响 ...
- 利用ASP.NET MVC 的默认类型绑定器---将Jquery datatables中的数据强类型绑定到实体类中
背景描述: 本文参考资料:https://blog.csdn.net/honantic/article/details/45913403 阅读了上述博文后对我产生了启发,在ASP.NET MVC 5中 ...
最新文章
- python一个字母红了_Python练习:最后一个字母/第一个字母
- 前台页面进行图片上传判断
- 网络安全 — 安全架构
- SAP创建Web Service以及用ABAP调用
- SpringMVC常见面试题(5个最常见面试题,回答超详细)
- 前端程序员容易忽视的一些基础知识
- MyBatis整合Spring的实现(13)
- 对接SAP人事档完成AD账号的自动授权
- 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作...
- 全网最全AE中英文界面对照表分享
- JDK和JRE和JVM的区别
- 计网实验(一):IP子网划分
- MongoDB 主从复制(Master-Slaver)实验
- 格林尼治时间(GMT)格式化
- 关于TopoJSON以及制作方法
- 中兴换头;任正非表态中美差距还有 50 年;Google 回应隐私丑闻 | CSDN 极客头条...
- 为什么这么优秀的女生要找男程序员做老公?
- python实现食品推荐_通过Python语言实现美团美食商家数据抓取
- 编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。
- python信用卡违约预测分析_Python作业集:信用卡还款违约预测
热门文章
- Qt解决资源文件中无法显示图片的问题
- ACD_把dwg像控件一样放到界面
- CROSSFORMER: A VERSATILE VISION TRANSFORMER BASED ON CROSS-SCALE ATTENTION
- mysql my.cnf 字符集_my.cnf 中字符集设置
- 业余草尚硅谷Java视频教程_SpringBoot视频教程免费下载
- linux的ip是什么,Linux-IP地址后边加个/8(16,24,32)是什么意思?
- Contrastive Search Decoding——一种对比搜索解码文本生成算法
- .Net Framework 中设置Web Proxy 的方法
- 【控制篇 / 策略】(5.4) ❀ 03. Explicit Web Proxy 显式web代理 ❀ FortiGate 防火墙
- C++综合练习——身份证