//
应用Apache Kylin+Tableau制作 互联网理财用户持仓监控仪表板的案例(1)
http://mp.weixin.qq.com/s?__biz=MzI2MDU5ODY2Mg==&mid=2247483898&idx=1&sn=7c84d2351f9641e9014e700a8f8cf523&chksm=ea667f13dd11f605c93341f51271588b06f063a84266386eae7b859b19841e838cede0516d2c&mpshare=1&scene=1&srcid=0224HqDXoz8WGX2R48sq21kp#rd
导读
越来越多的互联网企业采用Apache Kylin作为超大规模数据查询的解决方案,很多公司分享了基于Kylin的数据平台架构案例。其实作为最重要的应用者——数据分析师,他们的工作侧重于衔接技术与业务,因此更多的关注如何理解业务需求,使用Kylin建立数据模型,构建并优化Cube,最终在BI工具上实现数据可视化或进行数据探索。基于此,本文从互联网金融平台一位数据分析师的角度,在已搭建好的Kylin+Tableau Server平台上实现“理财用户持仓情况”的可视化,并针对“理财平台的综合收益率”进行了有益的数据探索。
由于本人理论水平和技术水平有限,文中错漏之处在所难免,敬请同行批评指正。
建议横屏观看图片,效果更佳。
欢迎转载,转载请注明出处。
目录
- Kylin和Tableau简介
- 虚拟互联网理财平台产品结构
- 需求是什么?
- 实现流程
数据清洗
构造适用于Kylin的星型模型
创建Project及Model
设计并构建CUBE
制作Tableau仪表板
数据探索
正文
1. ****Kylin****和Tableau简介
Apache Kylin有大数据分析界“神兽”之称,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力,能够在亚秒内查询巨大的Hive表,在同样的数据集上提供比Hive更好的性能。Kylin能够与BI工具的无缝整合,如Tableau。Kylin资料很多,在此不赘述。
Tableau作为一款领先的可视化分析软件在中国的普及率越来越高,其市场地位从全球最大的IT行业分析和咨询服务企业Gartner 2017年2月发布的报告可见一斑。
《Magic Quadrant for BusinessIntelligence and Analytics Platforms》
本文采用Kylin 1.5.4版本和Tableau 10.1版,一个是大数据多维分析引擎领导者,一个是数据可视化软件领导者,二者结合,希望能产生如虎添翼的效果。
2. ****虚拟互联网理财平台产品结构
以上工具介绍完之后,下面我们来虚拟一个综合型互联网理财平台的产品结构
该平台有四大类理财产品:活期,固收,基金,其他
共有13种理财产品:活期A\B,固收A-G,基金A\B,其他A\B
各大类产品数比例:
活期:固收:基金:其他=2:7:2:2
活期作为引流产品不易过多,防止活期产品之间用户低效流动;互联网理财用户大多为风险厌恶型,追求稳定收益及本金安全,所以平台上的不同收益率及期限的固收类产品较为丰富,满足大多数用户的资产保值及流动性需求;少量的基金和其他创新型产品用来满足占比较小的风险偏好者对高收益的追求。综上,此虚拟平台基本符合现实市场情况。
3. ****需求是什么?
业务方需求:“我们想看一下持仓。每天有多少人清仓,还有持仓的产品比例。”
数据分析师的工作其实跟翻译差不多,需要将业务方模糊的、方向性的、语言表达的需求转化成明确的、量化的、用数据结构表达的可落地方案。“给人一瓢水,首先你要有一桶水”,在满足基本需求的前提下,分析师加入自己的对业务的理解,从而扩展出更多的分析思路才是一名合格的老司机。那么上面简单的一句需求结合平台产品结构,分析师应该形成以下思路:
其他指标,如用户持有的产品小类/大类数,持有的产品SKU数,可以衡量用户对平台的渗透情况,对不同形态产品的跨业务线申购体现了用户对平台的信任。
考虑交付时间和实现的复杂程度,可先实现导图中的指标,更多分析指标可在以后迭代实现,“先完成,再完美”,切忌一蹴而就,完美主义害死人。
4. ****实现流程
数据清洗
我们首先在数据仓库中找到这样一张持仓表(虚拟表结构):
该表设计是为了满足各种持仓需求,但对于目前需求来说,有一些字段是冗余的,我们希望把数据处理的干干净净并且简化后再放入Kylin,不要把数据清洗工作由Kylin和Tableau来做。所以有必要作以下调整:
产品小类的产品编号防重:
cancat_ws('_','fin',biz_type,prod_code) asFIN_PROD_CODE
用户编号user_pin非空
产品小类biz_type剔除“对公产品”,只要to C产品
持仓类型hold_type选择“持有中”
清洗后的表结构
构造适用于Kylin的星型模型
目前Kylin只支持星型模型,因此有必要对星型模型和雪花模型进行简单的介绍。
星型模型:当所有维表都直接连接到事实表上时,整个图解就像星星一样,故将该模型称为星型模型,如下图。星型结构每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。
雪花模型:当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的层次区域,这些被分解的表都连接到主维度表而不是事实表。如下图,将地域维表又分解为国家,省份,城市等维表。它的优点是 : 通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。
我们现在要解决的需求,主要有两个维度:日期和产品类型,对于持仓来说,本身每天的持仓金额就是个该时点累计值的概念,统计“第n周每天持仓金额总和”的业务意义不大,因此没有必要制作日期维表,使用事实表中的日期即可。
产品类型由于需要从产品小类上卷到产品大类,故有必要制作产品类型维表。
那么我们制作的适用于Kylin的星型模型如下
产品类型的维表不要写死,建议依赖产品信息表汇总产生,防止新出现的产品线不会自动更新到产品类型的维表,造成持仓记录没有对应的产品大类。
下一篇连载之二将先介绍Tableau如何基于Kylin构造持仓监控仪表板,并通过简单拖拽计算理财平台的综合收益率,敬请关注。
由于本人理论水平和技术水平有限,文中错漏之处在所难免,敬请同行批评指正。对文中涉及方法有兴趣讨论的同行可加笔者微信:qq188070983。