BI领军者之一Tableau试用浅谈

下图是最新的Gartner BI Magic Quadrant,其中领军者之一的Tableau表现的异常突出,执行力象限上直接甩开其它产品一条街,前瞻性象限上略微超越了MSBI,怀着无比的好奇心,特意去Tableau官网下载了Desktop试用版体验一把,从种种细节中能够感受到浓浓的情怀,产品的确极具人性化,甚至官网的教学视频都是略带播音腔的中文语音,但为了客观分析这款产品的用户体验,我没有跟着视频去系统学习Tableau,只是浅尝辄止的拿自己项目中经常要用到的分析案例做些试验,毕竟不是Tableau开发专家,所以有说的不对的地方还请行家指正。

打开Tableau Desktop客户端,首先需要连接到数据源,支持的数据源非常全面,这里选择SQL Server做个ROLAP玩玩,看到,这不就是工匠情怀的体现嘛 :)

我连接的数据源是本地的AW数据库,需要指定几个待分析的表,我拖过去的是DimProduct, DimCustomer, FactInternetSales三张表,因为数据源有完善的主外键关系,所以这里也被正确的识别出表关系,另外,为Tableau随处可见的模糊查询输入框点个赞

看一下工作薄左侧数据源区域,Tableau并不是按物理表来区分维度和事实,而是默认根据表里的字段类型来做区分,用于聚合汇总的数字类型都被认为是事实度量值,其它类型如文本,日期以及主外键关键字都被认为是维度,也有一些字段本身既可做度量亦可作维度,例如UnitPrice单价,这时候是可以把UnitPrice从度量区域拖放到维度区域的。吐槽下数据源树状菜单没有找到"折叠全部"的功能,要定位到具体的字段比较麻烦,只能用查找字段的模糊输入框,还得敲键盘(还能更懒点吗?)。

工作薄中间的内容区域就很像数据透视表了,行上我拖放一个ProductKey, 列上我拖放一个Gender

用Profiler捕捉到执行的查询脚本如下,就是个简单的Group By

这时候在Tableau上做个一键行转列,或者把ProductKey和Gender维度都放在行区域上,观察到Tabular并没有去数据源刷新数据,而是客户端处理完成,也就是说Tableau客户端缓存了结果集,而Excel客户端是不会对结果集进行缓存的,所以Excel做类似的交互操作都必须得去数据源刷新数据,除非手动指定延迟布局更新。

Tableau这种做法有利有弊,利在于节省了重复加载数据的开销,而弊端在于如果数据源数据发生了变化,是无法通知Tableau客户端进行缓存过期,我做了个试验,执行下面脚本更新下数据源,然后再Tableau上进行上述的交互操作,发现Tableau客户端呈现的数据未做相应变更,Profiler也没有捕捉到任何查询命令,直到我在行区域再追加了一个维度,才得到正确的数据,Profilter也证实了数据刷新。那么Tableau至少应该有个手动触发刷新的功能吧,没找到这个功能。。。难道说只能部署到Tableau Server以后才能在页面上触发刷新?

update FactInternetSales set SalesAmount=SalesAmount+1

切换图表类型,这个在Tableau和Excel上都不会去数据源刷新,excel的图表的确不如tableau多样、美观,但tableau貌似是直接把透视表变成了透视图,而不像excel能够同时显示透视图表,并且图表还能互相联动

对ProductKey添加筛选器,还是得肉眼检索,或逐个录入,excel原生功能也是只能如此,而通常BU会希望能一把贴进去一堆sku key(以换行符或逗号间隔),excel可以定制功能来完善这个用户体验,详见XPivot用户手册里的Filter功能http://www.cnblogs.com/xpivot/p/4317706.html,Tabular似乎不具备这样的扩展性

但还是发现一处亮点,按公式指定条件来定义一些复杂逻辑,我假定一个需求是:汇总购买过sku 214或者购买过sku217的会员销售情况, 注意筛选器务必选择CustomerKey维度

生成的脚本有点复杂,这是ROLAP难以避免的问题,工具组织出来的SQL就不要指望性能多优越了,甚至这种脚本表达方式都没多少优化空间,除非in memory rolap,否则应对稍大点的数据量就会非常吃力。建议阅读下这个脚本,以充分理解rolap的工作原理

注意这里的"汇总购买过sku 214或者购买过sku217的会员销售情况"这个需求,不等同于sku 214和217的销售情况,主语不同(前者是分析人,后者是分析sku),分析的结果也完全不同,下图是后者的筛选器设置以及查询结果,注意筛选器换成了ProductKey

我们再来定义个需求,汇总购买过sku 214并且购买过sku217的会员销售情况,脚本和截图如下,筛选器用的还是CustomerKey,可以看到数据查询结果和前两个需求不一样了

max(iif([ProductKey]=214,1,0))+max(iif([ProductKey]=217,1,0))=2

上面的几个示例强调的是筛选器的选择需要格外注意,稍不留神就会用错,例如同样的需求,如果在Gender这个筛选器里设置公式,会发现也能顺利执行,但数据完全不对

追溯到脚本才发现原来是使用了Gender作为子查询关联字段了,BU当然没有这个能力去查看核对脚本,如果不注意是非常容易犯错误的

我又尝试用Tableau访问SSAS MOLAP数据源,Tableau对多维数据库的支持程度不足以实现以上几个典型的需求分析,可能还是受限于MDX的表达方式,工具难以把可视化设置简单无误的翻译成MDX脚本逻辑,显然这个难度是远远大于翻译成SQL的(PS: 对SSAS ROLAP的支持程度理论上来说应该会好过MOLAP吧,这个没做测试)。

由上可见,Tableau的可视化功能足够强大,至少上面这几个需求案例在excel里本身是无法实现的,我在excel BI解决方案里也是通过扩展插件功能来实现类似功能,但不像Tableau这种需要编码的条件组织方式,因为这种编码方式不但门槛略高,而且很容易用错,不适合给BU使用。另外,一些用户体验细节不如excel,找一个功能相对比较费劲,excel通常会把同样的功能做成各种快捷入口,以满足不同操作习惯的用户,不过话说回来,如果excel后续版本也能支持Tableau这种按公式定义筛选器的功能,还是很让人欢欣鼓舞的,至少IT角色的BI工作人员会非常喜欢。

这次试用主要是想体验下筛选器的灵活性,的确有值得称赞的设计,以后有机会的话再体验下传说中强大的计算引擎是怎么个工作原理,会不会是类似PowerPivot的Vertipaq引擎呢?始终认为这类东西就好比傻瓜相机和单反的区别,特定场合的确能够发挥优势,但涉及到针对性的调优就很无力,不如RDBMS的调优空间大,数据从RDBMS到MOLAP引擎就已经丧失了很多调优能力,再放到其它引擎能不能有足够的渠道用于灵活解决性能问题呢?BI产品在做宣传时,总能听到夸大其辞的宣称能够做到真正的BU-Driven秒出报表,故意忽略几个前提条件,其一就是得有一个干净的数据源,事实上绝大多数的业务生产库都不具备这样的前提条件,如果BU真的去业务生产库上做即时查询,别说秒出了,能够做到查询逻辑毫无破绽都是非常困难的事情。至于性能,是否都能做到秒出,取决于硬件和数据源调优,in-memory rolap性能足以媲美molap,如果公司硬通货缺乏的时候也能补充些软实力,可以先把rdbms的调优做好,再结合molap,使两者各擅所长的处理业务问题

时间: 2024-08-29 11:19:12

BI领军者之一Tableau试用浅谈的相关文章

python浅谈正则的常用方法

python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去找内容,因为容易理解也方便,),而是正则用好用精通的很难(看过正则表的应该都知道,里面符号对应的方法规则有很多,很灵活),对于接触编程不久的朋友们来说很可能在编程的过程上浪费很多时间,今天我把经常会用到正则简单介绍下,如果不是很特殊基本都覆盖使用. 1.正则的简单介绍 首先你得导入正则方法 impo

【转载】浅谈深度学习(Deep Learning)的基本思想和方法

浅谈深度学习(Deep Learning)的基本思想和方法 分类: 机器学习 信息抽取 Deep Learning2013-01-07 22:18 25010人阅读 评论(11) 收藏 举报 深度学习(Deep Learning),又叫Unsupervised Feature Learning或者Feature Learning,是目前非常热的一个研究主题. 本文将主要介绍Deep Learning的基本思想和常用的方法. 一. 什么是Deep Learning? 实际生活中,人们为了解决一个问

浅谈群红包的实现

前言: 红包是支付的方式, 也是社交的延伸.群红包在这两块领域串联得很好, 表现尤为的浓墨重彩. 承接上两篇技术浅谈: 1). 浅谈接龙红包的技术实现. 2). 浅谈微信红包摇一摇的技术实现. 这一次, 让我们谈谈群红包的技术实现. 一为是红包的分配算法, 二为竞抢的技术实现. 分配算法: 最初玩群红包的时候, 并没有意识到分配算法的难度. 下意识的觉得, 不就是个随机算法嘛? so easy! 后来在知乎上看到很多人在讨论, 才意识到该算法或许并不简单. 好的东西, 往往让人觉得简单, 而其背

蚂蚁变大象:浅谈常规网站是如何从小变大的(一)(转)

add by zhj:非常完整的介绍了一个网站从小到大,后台的设计及服务器的部署的演进过程,太牛了. 原文:http://blog.sina.com.cn/zgwangbo001 话说今天是清明节假期第一天,早上早早的和朋友开车逃离了帝都.现在正在G104上缓慢的爬行. 言归正传,计划了很久写这篇文章,不过心里还是比较忐忑,担心自己在技术上的深度和沉淀还是不够.不过,最后想起某老师说的:follow my heart! 想想,人生就这么些年,想做啥就做啥吧,不用想的太多. ―――――――――――

【转】 浅谈Radius协议

浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报  分类: Radius协议分析(6)  从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下,从RADIUS协议谈谈对身份认证的认识,也总结一下自己. 一.RADIUS协议原理 RADIUS(Remote Authentication Dial In User Service) 用户远程拨入认证服务,它主要针对的远程登录类型有:SLIP.PPP.telnet和rlogin等.RADIUS协议

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架 前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCore框架主要是用来实现iOS与H5的交互.当然了,最早我曾经写过iOS浅谈webView的JS一种用法.(去掉web显示页的广告),这种算得上最简单的iOS与H5的交互了.现在混合编程越来越多,H5的相对讲多,所以研究J

转:浅谈程序员的英语学习

转自:http://www.cnblogs.com/haoyifei/p/5687235.html 浅谈程序员的英语学习 作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部采用英文教学,工作时也经常会遇到外国人,和他们谈笑风生,自认为自己的英语水平比园子的平均水平高一点.下面我就根据自己的经验来说说英语的学习方法. 为什么要学习英语 学好英语你可以直

【算法微解读】浅谈01分数规划

浅谈01分数规划 所谓01分数规划,看到这个名字,可能会想到01背包,其实长得差不多. 这个算法就是要求"性价比"最高的解.sum(v)/sum(w)最高的解. 定义 我们给定两个数组,a[i]表示选取i的收益,b[i]表示选取i的代价.如果选取i,定义x[i]=1否则x[i]=0.每个物品只有选和不选的两种方案,求一个选择的方案使得R=sigma(a[i]x[i])/sigma(b[i]x[i]),也就是选择物品的总收益/总代价最大或者最小. 01分数规划问题主要包含以下几个问题:

浅谈贪心策略——相邻交换

浅谈贪心策略——相邻交换 题解主要写贪心的考虑方法:相邻交换法. 我们在平时的贪心题几乎都可以正确的贪心方法. 主要思想 设交换前对答案的贡献为x,交换后对答案的贡献为y l  若x>y则不交换 l  若x<y则需交换 l  若x==y则不交换(交换反而增加时间复杂度) 作为题目,需要建立数学模型设置未知数表示x和y得到不等式从而得出排序的关键字. 例题:皇后游戏(Luogu OJ P2123) 网址: https://www.luogu.org/problemnew/show/P2123 题