如何快速搭建一个数据分析平台?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 基本上,通过基于日志服务的数据采集、基于阿里云数加ODPS的数据计算和运维、QuickBI的报表制作,小规模的初创工具可以在2天左右快速的搭建完一个适合业务的、可以扩展的数据分析平台(你也可以基于这个平台搭建出一个商用的推荐系统),当然,这一切的前提是你的BOSS能知道数据分析的价值。

作者:王实

原文来源链接:https://zhuanlan.zhihu.com/p/23787228


Growth Hacking这个词在过去一两年开始迅速从硅谷传播到国内,也诞生了一系列专注于企业数据分析业务的明星初创公司,如GrowingIO,神策数据,诸葛IO等。Growth Hacking简单的来说就是用数据驱动的方式来指导产品的迭代改进,以实现用户的快速增长,可以看看上面几家数据分析公司披露的客户就知道它有多流行了:

  • GrowingIO客户:有赞,豆瓣,36Kr等
  • 神策数据客户:秒拍,AcFun,爱鲜蜂,pp租车等
  • 诸葛IO客户:Enjoy,罗辑思维等

我司的一个主要产品是面向中小诊所的运营SaaS软件,就是诊所可以通过登录网站的方式完成诊所的日常工作,如完成病历,开药以及日常的盘点等。同时产品的推广渠道比较多元化,包括地面销售团队,合作伙伴推广以及常规的搜索引擎推广。作为一个资源相对有限的创业公司,重点关注的就是不同渠道的用户转化以及产品使用情况。

因为自己之前一直在数据算法团队,对于数据收集、处理与应用的流程比较熟悉,加上公司本身规模不大,业务也相对简单,所以在和神策数据沟通后还是觉得自己可以尝试基于阿里云平台快速搭建一个公司自有的数据分析平台。

以阿里云产品体系为例,一个典型的网站架构如下:


TB1RqU8OpXXXXbXXFXXXXXXXXXX-791-359.png

图1 基于阿里云的网站典型架构


除了云服务之外,我们还购买了负载均衡SLB,云数据库RDS,云数据库Redis,云监控等服务,主要是考虑是初期没有专业的运维,而这些产品很好的解决了运维需求。

言归正传,主要还是介绍一下数据分析平台的搭建,下面是一个简单的数据流程架构图。

TB1NlxmOFXXXXX2XpXXXXXXXXXX-1270-646.png

图2 基于阿里云数加的数据分析平台


我们以常规的七日留存率为例,来说明数据分析流程构建。

七日留存率的一个简单计算公式如下:

七日留存率 = 七天前注册的当日活跃用户数 / 七天前注册的用户数

根据不同公司业务的运营策略,有时也直接将登录系统的用户等价为活跃用户,这个例子中允许定义活跃用户的关键行为(以诊所软件为例,活跃用户需要开处方、售药等)。


一、数据收集

通常来说数据包括前端日志和后端结构化数据两部分。

以计算常规的七日留存率为例,活跃用户数(必须满足指定的使用轨迹)来自于前端服务器(Apache或者 Nginx)日志的解析。

步骤一:采用埋点的技术来记录用户的访问行为:

1. URL埋点

最简单的方法就是投放到不同推广渠道的注册页在url上使用特殊的参数来标记渠道,如channel=xxx,这样解析前端访问日志时就可以通过refer字段来区分渠道。

2. 点击埋点

点击埋点是被广泛使用的技术,简单的做法是在前端页面在发送需要记录的行为时额外发送一个后端请求,如请求一个非常小的图片文件1.gif,文件本身没有任何内容,主要是用于在前端日志中产生一个记录,同样的,在这个请求会带上特殊的参数,如spm=xx.xx.xx.xx,而且参数本身可以采用类似于ip的段位来构建埋点体系,如第一段表示业务,第二段表示产品,第三段表示功能,第四段表示位置等等。如图3的淘宝网埋点示例:


TB11ptiOFXXXXXQXpXXXXXXXXXX-668-286.png
图3 淘宝网前端埋点示例

最终前端产生的日志(以apache为例)如图4所示:

TB1Y9NjOFXXXXXxXpXXXXXXXXXX-553-90.png

图4 apache日志示例


通过URL参数和点击埋点,我们可以就可以监控用户在网站上的使用轨迹,以七日留存率指标为例,我们可以定义活跃用户的行为必须包括哪些关键路径,即spm埋点必须符合哪些规则。

步骤二:自动解析并同步集群机器日志到日志数据库

1. 在所有ECS上安装阿里云logtail工具,ECS上几个命令行搞定,如图5所示:

TB1lVltOFXXXXbvXXXXXXXXXXXX-552-59.png

 图5 logtail命令行安装


Logtail会自动根据设定的时间间隔提交数据。


2. 创建日志数据库

开通日志服务后,在日志服务控制台创建Project(支持多个LogStore),Project下面创建LogStore(支持多个解析配置),创建配置(即解析规则),如图6所示。

TB1HjcEOpXXXXbAapXXXXXXXXXX-556-324.png

图6 LogStore中的解析配置

这样就完成日志数据的结构化存储,而计算七日留存所需的用户注册数据则已经以结构化的形式存储在RDS Mysql中,下一步需要做的是定时提取LogStore和Mysql中的数据进行运算。


二、数据处理

云端的数据处理就好像Evernote和有道云笔记一样,可以非常方便的实现在线多人协作。阿里大数据计算平台好像也是今年9月份左右开始对外公测,之前的名称叫做ODPS,后来改名叫做大数据计算服务(MaxCompute),虽然对于我来说都一样拗口难懂(后面我就用ODPS来统一代指这个服务)……


现在数据处理这块,阿里云其实是单独开个了产品线,命名为阿里云数加平台,对应的服务入口并没有集成到缺省的阿里云控制台目录菜单,在控制台形形色色的产品命名中并不容易定位,所以,真正用起来只能收藏夹管理入口了……

吐槽结束,数据处理包括数据同步、数据运算和运维两个核心部分, 数据同步将LogStore和RDS Mysql数据同步到ODPS, 数据运算和运维则基于ODPS实现多人协作开发数据处理任务并进行上线管理。


进入阿里云数加控制台后,进入数据开发目录,然后创建Project,创建后通过右边的Project数据开发链接进入了一个在线的IDE(有点像云笔记),就可以开始干活了。


步骤一:同步LogStore和RDS Mysql数据到ODPS数据库表

1. LogStore的数据同步

基本做法就是在IDE的数据管理模块中创建和LogStore相同结构的ODPS表,然后回到日志服务控制台相应的LogStore配置管理中配置一个投递任务,这样就可以自动同步啦。(非常有用的是,在ODPS表中可配置一个时间分区,按天同步日志,这样方便的实现后面的按天调度和计算任务,也可以提升查询效率)。

2. RDS Mysql的数据同步

这个也需要在ODPS中创建一个对应的表(字段可以比原始表少,即可以只同步部分数据),然后再IDE中配置一个同步任务就好了,如图7所示:

TB1KN38OpXXXXbBXFXXXXXXXXXX-670-257.png

图7 数据同步任务开发


步骤二:基于ODPS数据库表的定时任务开发

步骤一基本上完成了数据在ODPS平台上的准备,如每日的用户行为数据和注册数据,下面所需的就是开发定时计算任务了(如计算每天的七日留存指标),图7上可以看出,可以使用SQL或Shell脚本开发简单的任务,也可以开发复杂的MapReduce任务,甚至是机器学习任务,也可以用拖拽的方式配置任务的执行顺序。

我们使用SQL任务就可以计算出每日的活跃用户、注册用户以及留存。图8是开发SQL任务的界面,右边可以配置任务的执行周期和依赖,同时也支持多人编辑同一个任务。

TB1vFBaOFXXXXXXXFXXXXXXXXXX-1425-589.png

图8 阿里云数加DataIDE中的SQL任务编辑界面


步骤三:数据计算任务的运维

在完成开发和测试后,可以通过IDE将任务发布到线上,如图9所示,比较方便的是,运维工具支持补数据,譬如在搭建这个数据流程之前,我们的日志和数据已经积累了数月,我可以补运行任务,从而得到之前数月的统计指标。

TB1QOwWOpXXXXXTXVXXXXXXXXXX-659-287.png

图9 数据计算任务运维界面


个人觉得大数据计算平台是阿里云数加较为独特的产品,可以实现稳定的数据计算和管理。


三、数据应用

理论上经过自行设计的数据计算和运维后,企业可根据自己的业务搭建出高度个性化的应用。这里仍然以初创企业广泛使用的BI报表为例,看如何实现七日留存的数据报表应用。图10 是阿里云数加控制台中的BI报表制作示意图。

TB1zN0sOFXXXXbDXXXXXXXXXXXX-658-282.png

图10 阿里云数加Quick BI流程示意图


我们主要使用MaxCompute也就是ODPS计算任务产生的七日留存率数据表作为报表数据源,使用图形化的操作工具即可实现七日流程率的展示,这种乐高积木式的操作比较简单,就不多啰嗦了,下面是一个完成后的报表图表,官网说可以支持以接口方式将制作的报表嵌入到第三方软件(挺酷的,不过没试过)。


TB1PYdtOFXXXXbdXXXXXXXXXXXX-573-235.png

图11 阿里云数加QuickBI 七日留存率效果图


基本上,通过基于日志服务的数据采集、基于ODPS的数据计算和运维、基于Quick BI的报表制作,小规模的初创工具可以在2天左右快速的搭建完一个适合业务的、可以扩展的数据分析平台(你也可以基于这个平台搭建出一个商用的推荐系统),当然,这一切的前提是你的BOSS能知道数据分析的价值。

此外,类似于神策数据的专业服务公司其实每年的年费也不贵,对于愿意享受专业服务或相关技术人员比较缺乏的公司直接购买他们的服务也不失为一种较好的选择。



相关文章
|
6月前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
数据可视化 数据挖掘 大数据
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
|
12天前
|
SQL 存储 数据挖掘
快速入门:利用AnalyticDB构建实时数据分析平台
【10月更文挑战第22天】在大数据时代,实时数据分析成为了企业和开发者们关注的焦点。传统的数据仓库和分析工具往往无法满足实时性要求,而AnalyticDB(ADB)作为阿里巴巴推出的一款实时数据仓库服务,凭借其强大的实时处理能力和易用性,成为了众多企业的首选。作为一名数据分析师,我将在本文中分享如何快速入门AnalyticDB,帮助初学者在短时间内掌握使用AnalyticDB进行简单数据分析的能力。
23 2
|
3月前
|
Kubernetes 并行计算 数据挖掘
构建高可用的数据分析平台:Dask 集群管理与部署
【8月更文第29天】随着数据量的不断增长,传统的单机数据分析方法已无法满足大规模数据处理的需求。Dask 是一个灵活的并行计算库,它能够帮助开发者轻松地在多核 CPU 或分布式集群上运行 Python 代码。本文将详细介绍如何搭建和管理 Dask 集群,以确保数据分析流程的稳定性和可靠性。
208 3
|
3月前
|
自然语言处理 数据挖掘 BI
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
ChatGPT 等相关大模型问题之将现有的数据分析平台与大模型结合如何解决
|
3月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
|
4月前
|
存储 Java 数据挖掘
构建基于Spring Boot的数据分析平台
构建基于Spring Boot的数据分析平台
|
4月前
|
存储 NoSQL Java
使用Java实现高效的数据分析平台
使用Java实现高效的数据分析平台
|
4月前
|
存储 分布式计算 NoSQL
Java中的高效数据分析与处理平台实现
Java中的高效数据分析与处理平台实现
|
5月前
|
存储 数据可视化 Java
使用Java实现可视化数据分析平台
使用Java实现可视化数据分析平台