数据质量是自助分析平台中不可或缺的一个环节,如何保证数据准确性和及时性大多数时候都是开发需要考虑的一个重要问题。
大部分公司选择Tableau作为可视化分析工具,原因都是基于其优秀的交互、快速的可视化分析,相比起传统的BI系统,它的短平快更得互联网时代的数据分析师青睐。但经过一段时间的使用及功能探究,我们发现tableau其实并不局限于“分析师工具”应用,只要完善了其中的权限功能,tableau大有成为企业级报表应用的潜力。
一、产品架构&流程设计
一开始公司购买的tableau软件的初衷是服务于运营和数据分析人员,因此客户端账号的80%都直接分发给运营部门使用;技术部主要基于tableauserver服务器的稳定性、权限管控等方面进行简单的二次开发,而二次开发也仅仅只是把报表页面嵌入到系统当中,通过菜单访问控制、url传参等方式实现权限控制。
产品架构图如下:
数据层主要是大数据平台+部门数仓,通过大量基础数据落地+数据权限隔离,让业务部门能够更高效的获取基础数据进行分析;
逻辑层是tableau+presto,主要是提供报表制作的服务和高性能数据引擎;
展现层是tableau可视化报表+可视化的检索页面,检索页面服务于分析师——快速获取数据并进行分析;tableau可视化报表服务于业务人员——分析师将分析结果落地到tableau报表中,供运营人员日常分析。
业务流程如下:
二、权限方案
确定了产品设计方案和流程之后,重点需要攻克的是权限问题。
由于tableau自身比较封闭,几乎没有二次开发的可能,因此在实现行级数据权限的过程中完全依赖于Tableau现有功能进行挖掘。
经过一段时间的使用研究,我们总结了几套在tableau中可用的行级数据权限方案。
第一种方案:通过url传参,将需要控制的权限类型作为参数带入可视化报表url参数中
1. 在嵌入可视化报表的系统中开发一个小功能,实现报表发布时传入指定参数,如:配置网站权限,则参数会传入website_id_p=XXX。
2. 报表开发过程中需要用到事实表中的网站website_id字段,由于用来传参的字段不能在工作表的筛选器中直接用,传参和筛选用同一个字段会有冲突,因此会copy一个website_id生成website_id_p的字段用于传参。
3. 显示筛选器,并将筛选器设置为“仅相关值”。
4. 发布到server后就可以在server端试验数据权限是否生效。
以上这种方案实现起来最简单,也是官方推荐的方案,并且数据可以进行正常提取。但是也存在一个很致命的问题:因为是通过url传参,因此能够传入的参数是受浏览器限制的,市面上主流的浏览器支持传入的url长度都不超过3000个字符,比如谷歌浏览器。但是业务现状是,超过3000字符的权限类型有很多,该方案并不能支撑所有业务场景。
第二种方案:将用户ID作为参数传到url中,关联权限表进行控制
编写自定义SQL创建事实表、权限表(这里举的例子使用了两个权限类型,因此创建了两个权限表1和2),并使用内关联;
2. 创建一个名为user_id的参数,分别在两个权限表中作为参数插入(该参数是作为URL传用户ID时进行权限过滤的依据);
3. 利用这个数据源开发可视化报表并发布;
用户ID传参的方案可以完美实现多维度,多数据权限类型的可视化报表开发,并且可以与第一种URL传参的方式共存(如:url中既传user_id,又传website_id),基本可以实现业务部门对于行级数据权限控制的所有要求。方案也有缺陷,由于是在数据源中就写入参数,因此无法做数据提取(提取的结果为空),可视化报表的查询效率完全取决于直连数据库的查询效率。
注:作为运营、数据分析师的可视化分析工具,tableau的分析效率高、学习成本低,也是目前市场上大部分数据分析师必备的分析工具,因此引入该工具进来之后业务部门的推广应用比想象中的要快,这也是当初选择tableau的主要原因。在解决了行级数据权限的问题之后,tableau甚至可以成为企业级可视化报表应用。
对于数据产品经理来说,这样一款优秀的第三方工具可以作为公司在数据信息化建设过程中的选择之一,而不一定要重复造轮子。
三、关于自助分析产品体系的其他建议
1. 关于大数据量检索分析的优化
在海量数据(特别是埋点数据)的查询的时候,如果让用户使用HUE直接连hive进行查询,查询效率往往让业务人员崩溃,最终选择弃用我们的产品。因此,如何让分析师快速地进行数据检索,从而提高数据分析效率是一定要考虑的。
技术人员在进行高性能数据库选型的时候考虑了很多技术方案:Impala、presto、spark等等……这
些技术方案本身并不重要,产品经理在这其中的角色是针对整体的产品体系建设提出要求,例如:
1. 高性能数据库在做XXX复杂查询的时候要控制在多少秒内;
2. 要支持tableau直连到这个高性能数据库上;
2. 关于数据质量
数据质量是自助分析平台中不可或缺的一个环节,如何保证数据准确性和及时性大多数时候都是开发需要考虑的问题,但是在产品设计过程中如何给业务“承诺”数据质量也是一个很重要的命题。
我们的自助分析平台在需求设计中就采用了最简单粗暴的方式,用部门数仓跟大数据平台的数据条数进行核对,并增加异常告警。虽然这个方案还有很大的优化空间,但减少了部分排查问题的难度、也增加了分析师对数据质量的信心。