热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

互联网_实操分享应用Tableau和ApacheKylin实现互联网理财用户持仓监控仪表板

本文由编程笔记#小编为大家整理,主要介绍了实操分享应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了实操分享应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板相关的知识,希望对你有一定的参考价值。









越来越多的互联网企业采用 Apache Kylin 作为超大规模数据查询的解决方案,很多公司分享了基于 Kylin 的数据平台架构案例。其实作为最重要的应用者 —— 数据分析师,他们的工作侧重于衔接技术与业务,因此更多的关注如何理解业务需求,使用 Kylin 建立数据模型,构建并优化 Cube ,最终在 BI 工具上实现数据可视化或进行数据探索。



【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板



















本文作者从互联网金融平台数据分析师的视角入手,着重介绍如何通过 Kylin 和 Tableau Server 的相互配合,制作互联网理财用户持仓监控仪表板, 实现 “理财用户持仓情况” 的可视化,并针对 “理财平台的综合收益率” 进行了有益的数据探索。






1




Kylin 与 Tableau 的强强联手






Apache Kylin 有大数据分析界“神兽”之称,提供 Hadoop 之上的 SQL 查询接口及多维分析( OLAP )能力,能够在亚秒内查询巨大的 Hive 表,在同样的数据集上提供比 Hive  更好的性能。 Kylin 能够与 BI 工具的无缝整合,如 Tableau 。


Tableau 作为一款领先的可视化分析软件在中国的普及率越来越高,其市场地位从全球最大的 IT 行业分析和咨询服务企业 2017 年 2 月发布的 Gartner 报告中可见一斑。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


本文采用 Kylin 1.5.4 版本和 Tableau 10.1 版,一个是大数据多维分析引擎领导者,一个是数据可视化软件领导者,二者结合,希望能产生如虎添翼的效果。







2




虚拟互联网理财平台产品结构的搭建






以上工具介绍完之后,下面我们来虚拟一个综合型互联网理财平台的产品结构

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板



  • 该平台有四大类理财产品:活期,固收,基金,其他


  • 共有 13 种理财产品:活期 A B ,固收 A - G ,基金 A B ,其他  A B


  • 各大类产品数比例:活期:固收:基金:其他= 2 : 7 : 2 : 2


 

活期作为引流产品不易过多,防止活期产品之间用户低效流动;互联网理财用户大多为风险厌恶型,追求稳定收益及本金安全,所以平台上的不同收益率及期限的固收类产品较为丰富,满足大多数用户的资产保值及流动性需求;少量的基金和其他创新型产品用来满足占比较小的风险偏好者对高收益的追求。综上,此虚拟平台基本符合现实市场情况。







3




将业务需求量化为可落地方案






业务方需求:“我们想看一下持仓。每天有多少人清仓,还有持仓的产品比例。”

 

数据分析师的工作其实跟翻译差不多,需要将业务方模糊的、方向性的、语言表达的需求转化成明确的、量化的、用数据结构表达的可落地方案。“给人一瓢水,首先你要有一桶水”,在满足基本需求的前提下,分析师加入自己的对业务的理解,从而扩展出更多的分析思路才是一名合格的老司机。那么上面简单的一句需求结合平台产品结构,分析师应该形成以下思路:

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

其他指标,如用户持有的产品小类/大类数,持有的产品 SKU 数,可以衡量用户对平台的渗透情况,对不同形态产品的跨业务线申购体现了用户对平台的信任。在这里,需要考虑交付时间和实现的复杂程度,可先实现导图中的指标,更多分析指标可在以后迭代实现,“先完成,再完美”,切忌一蹴而就,完美主义害死人。







4




实现流程








  • 数据清洗 



我们首先在数据仓库中找到一张持仓虚拟表(如下图):

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


该表设计是为了满足各种持仓需求,但对于目前需求来说,有一些字段是冗余的,我们希望把数据处理的干干净净并且简化后再放入 Kylin ,不要把数据清洗工作由 Kylin 和 Tableau 来做。所以有必要作以下调整:

 



  • 产品小类的产品编号防重: cancat_ws('_','fin',biz_type,prod_code) asFIN_PROD_CODE


  • 用户编号 user_pin 非空


  • 产品小类 biz_type 剔除“对公产品”,只要 to C 产品


  • 持仓类型 hold_type 选择“持有中”


 

清洗后的表结构

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板




  • 在HIVE中构造适用于 Kylin 的星型模型



我们现在要解决的需求,主要有两个维度:日期和产品类型,对于持仓来说,本身每天的持仓金额就是个该时点累计值的概念,统计“第n周每天持仓金额总和”的业务意义不大,因此没有必要制作日期维表,使用事实表中的日期即可。


产品类型由于需要从产品小类上卷到产品大类,故有必要制作产品类型维表。


制作出的适用于 Kylin 的星型模型如下

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

产品类型的维表不要写死,建议依赖产品信息表汇总产生,防止新出现的产品线不会自动更新到产品类型的维表,造成持仓记录没有对应的产品大类。







5




应用 Tableau 制作理财用户持仓仪表板











01




 Kylin 中的准备工作



我们在 Kylin 中建立项目 Project:FIN_POSITION_PROJ ,并根据业务需求构建两个  CUBE 。( Kylin 基本流程:建 Project →加载 HIVE 数据→建 Model →设计 Cube →构建 Cube )

 







02




制作 Tableau 仪表板






 Tableau 与 Kylin 连接需要安装 ODBC 驱动, Kylin 官网可下载 1.6 版本。

安装好后我们可以从 Tableau 的连接界面选择其他数据库 ODBC 


选择安装好的驱动

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

填好相关信息,并选择项目 FIN_POSITION_PROJ

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

连接好后,我们选择 Kylin 中的事实表和维表,并在 Tableau 中设置关联条件,这里的关联条件必须与 Kylin Model 中的保持一致,事实表的 BIZ_TYPE =维度表的 BIZ_TYPE 。


值得注意的是,现在连接到 Kylin 的两张表,虽然与 HIVE 中的两张表名称、结构完全一致,但实际上已经包含了我们需要的所有维度计算的结果集,通过 Kylin 的预计算来大幅提升查询的效率。经过测试,查询每天产品大类的持仓金额, HIVE 中查询用时 95.65  秒, Kylin 用时 0.09 秒。


 Tableau 的数据连接方式有实时和数据提取两种,数据提取会把数据从数据源系统提取到  Tableau 本地形成数据提取文件( TDE ),查询的时候从提取文件中获取数据,适用于数据源系统较差的场景,通过数据提取实现查询性能的提升;实时连接则是在查询时发送查询命令到数据源系统,适用于数据源性能良好的应用场景。在本文中, Kylin 作为高性能查询引擎,能够实现优异的查询性能,因此在 Tableau 端选择实时连接。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


接下来进行简单的字段整理:

为了便于业务方使用,英文字段名转中文。

 【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

将产品大小类的数字枚举值改成对应中文产品类型名称( 0 →活期 A )。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

由于底层数据的原因需要引入一个 Tableau Server 上的数据源,与 Kylin 的数据源用日期关联,取其中的每日累计用户数来计算持仓及清仓人数占比

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

 Tableau 仪表板设计,笔者一般会遵循以下两个原则:




  1. 表、图结合:有人喜欢看表,看到精确的数字;有人喜欢看图,直观感性的了解全局。表,图结合兼顾两种需求;


  2. 大道至简,保持仪表板简洁,尽量将信息放在“工具提示”。


 

下面制作第一块仪表板——“持仓概览”,设计思路如下图

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


仪表板制作顺序是先分别制作 ABCD 四个区的工作表,然后组装到一个仪表板。


首先需要增加计算字段:

 Tableau 中计算字段所用的聚合一定是 Kylin CUBE 包含的,假如 CUBE 中没有 COUNT DISTINCT USER_PIN ,那么在 Tableau 中计算 COUNTD ([用户编号])会显示通信错误,因为 CUBE 的预计算中不含此值。


持仓用户数,如下

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


持仓人数占比=当日持仓人数/累计用户数* 100 %   

这里分母的累计用户数是从 Tableau Server 的数据源中获取。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


清仓人数占比= 1 - 持仓人数占比

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


 ABCD 四个区域的工作表设计如下:

 A 区

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


 B 区

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


 C 区

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


这里我们将大部分信息设置在“工具提示”中,只有鼠标移动至某点才会显示,以保持图表简洁。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

同理制作 D 区


最后将 ABCD 四个区的工作表组装到仪表板,将 A 区的日期筛选应用到所有工作表,作为全局日期筛选器。

仪表板-持仓概览的最终效果动图如下

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


篇幅原因,第二块仪表板仅展示设计思路和效果动图,设计思路如下

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


将筛选器产品大类放置到标题,可以令标题随筛选器变化而变化(红字部分)。

实现效果动图如下

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

以上满足业务需求的仪表板就制作完成了,我们可以体验到基于 Kylin 高性能查询带来的愉悦。但是 Kylin+Tableau 能实现的不止于此。


假设这样一个场景,用户有 2000 万,理财产品有 13 类,每类产品又有 100 个 SKU ,我们保守的估计每个用户持有 2 类产品,每类产品申购过 5 个 SKU ,这样按照我们虚拟的持仓表结构,每天约有 2 亿条的持仓增量记录。


这时某一个决策会上业务领导突然要看理财平台的综合收益率,我们该怎么办?


对业务再熟悉的数据分析师,完成以上分析再加可视化,起码要用半天的时间。


下面我们基于以上已完成的 Kylin CUBE 和 Tableau ,进行一些用户粒度的数据探索,通过拖拽计算理财平台的综合收益率,分分钟出结果。








03




数据探索 —— 综合收益率



我们首先研究 2016 年 10 月 10 日固收类产品的综合收益率:

收益率=收益金额/持仓金额,我们先分别将持仓和收益金额拖拽至列和行,将用户编号拖拽到详细信息作为最细粒度,将呈现下方的散点图。


我们可以看到一部分持仓金额较少,收益金额较高的一小部分高收益人群;

固收类产品的预期年化收益率是固定的,因此大部分用户集中在对角线方向。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


如何量化大部分用户的综合收益率呢?我们选择添加一条趋势线

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

可以看到下图一元线性回归方程,显示收益与持仓金额的相关关系


判定系数 R² 来判断回归方程的拟合程度,表示拟合直线能多大程度上反映收益金额的波动, R² 越接近 1 表示拟合的越好,此处 R² = 0.89 。


系数可以理解为当日的综合收益率,假设此系数为 0.0001783 ,如果以该日的综合收益率,日复利下的年化收益率为( 1 + 0.0001783 ) 365 = 106.7 %  固收类综合年化收益率 6.7 % 。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板

那么深入思考一下,固收类产品出于安全性的考虑,会在一个合理的收益区间内,而且整个平台的固收类产品收益率应该差异不大,是否是这样的呢?


我们选择四个日期,如下图。正如我们按业务逻辑推断的,这四个日期的趋势线斜率,即日收益率基本一致。

但我们发现一批收益为负的固收用户,结合目前固收产品基本都是刚性兑付的现实,收益为负是不可能的。有必要探索是脏数据导致的,还是系统问题导致的。在此不继续展开。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


同理,我们来探索一下基金类产品的收益率。

基金不同于固收类产品,除货币型、债券型之外的产品收益均有波动。我们按照同样的思路拖拽出某日的基金综合收益率,如下图。

我们可以清楚的看到 0 以上为当日盈利的用户, 0 一下为当日亏损的用户。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


我们希望将当日盈利、亏损、持平的用户区分开,并分开计算一元回归方程来统计收益率,那么需要构造一个计算字段作为区分以上用户的属性,如下图

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


我们将计算字段“盈亏”拖拽至颜色,并调出趋势线,可以清晰的看到盈亏和亏损两批用户的收益率,但基金收益的波动及产品类型的多样性造成持仓金额和收益金额的非线性关系,这里可以看到判断系数 R² 并不高,故此处收益率参考价值不大。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


但我们可以用盈亏人数比例来衡量整个平台盈亏情况,相比语义分析等方法,当日的盈亏情况更加能体现理财用户群的情绪。假设这样一个场景,某一天的基金赎回人数激增,我们可以通过以上的数据探索来查看近几日的亏损用户数比例,是否由于亏损过多及时止损导致赎回激增。

【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


免责声明:







  • 本文涉及内容均属个人观点,与笔者所属公司立场无关;


  • 无论是否有特殊注明,本文内容(包括但不限于图表、文字)涉及的数据绝对值或呈现的趋势、占比均为虚拟,与笔者所属公司无关;


  • 本文涉及的理财平台产品结构、数据探索形成的平台综合收益率均为虚拟,与笔者所属公司无关;













2017 Tableau 可视化分析峰会报名通道





  • 轻松报名,长按识别下图中的二维码,登录峰会网站,在 “报名参会” 栏目中进行报名;




【实操分享】应用 Tableau 和 Apache Kylin 实现互联网理财用户持仓监控仪表板


温馨提示:

如果您在报名过程中遇到任何问题,欢迎致电 

010-52899167 或发送邮件至     




轻松下载 Tableau 学习资料!















推荐阅读(*点击标题查看原文)



















免费试用 Tableau 10.2








点击下方阅读原文即可免费试用最新版本 Tableau 10.2 。下载 Tableau 工作簿,你也可以用数据讲故事!




Tableau 中国官方微信定期为您推送最新行业趋势、热点资讯、精彩活动等信息。立即订阅,官方信息一手掌控,更多精彩,更多新鲜,敬请期待!





推荐阅读
author-avatar
用户geafr1kx8g
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有