X创业公司 是一家互联网教育企业。本文以它为例,为大家说明创业阶段的公司(数据量在千万/百万量级),如何从0到1高效搭建数据体系。
业务现状
好的企业,需要通过数据驱动发展。数据体系能够告诉管理者,业务出现了什么问题、有什么机会,从而纠正管理策略,或者抓住转瞬即逝的战略机会。对 X创业公司 来说也是如此,但是在系统建设之前,该的数据体系存在诸多问题:
1.大量数据无法获取:
该业务发展非常快,但是前期忽略了数据基础设施的建设,大量的精力都投入到了业务系统的建设里,导致数据基础相当不健全
- 数据没进系统:很多业务没有系统化,比如一些订单数据,仍然停留在excel里,没有进入系统,这使得系统化的分析无从入手
- 没有OLAP数据:业务系统只为了支持业务服务,没有考虑数据分析层面的存储。因此大量的过程数据被丢失,只保存了当前的最终结果数据,这使得数据的追溯变得极为困难。而且许多数据库的表埋点不全,无法支持深度分析工作
- 服务器的性能不高:当时公司采用的亚马逊云服务器,只有一个主库和一个镜像从库。镜像从库不可写,并且性能不高,导致一些复杂查询和加工无法实现
2.使用数据不方便:
由于数据基础设施不健全,因此也无法搭建合适的数据平台,这也让用户使用数据变得非常麻烦
- 权限收紧:由于数据平台尚未搭建,所以涉及到复杂的权限管理基本上不可能实现。为了确保数据安全,只能少开账号,这导致很多用户没法取数分析
- 使用不便:业务人员想要分析数据,只能零散的从业务系统里下载一些日志报表。不仅操作不够便捷,分析也不够灵活,做个数据分析非常耗时间
3.业务报表体系差:
- 指标定义不一致:因为数据不健全,所以各个部门都会用自己的方式取数分析。这导致各个部门对数据的定义不一致,而且即便是同一个指标,也因为取数源不同而存在差异。因为数据对不上,各个部门也不能有效沟通合作
- 报表体系不健全:数据基础不健全,导致报表体系也不可能完整准确。加上大家对数据的理解不同,报表就失去了原本的价值,无法找问题、定策略
明确需求:
既然问题很清楚了,那么要做的事情也很明确。为了让X创业公司具备数据驱动的能力,我们要实现以下几点:
- 我们需要建立健全的数据基础,确保所有的数据可追溯,便于分析
- 提供可用好用的数据平台,方便用户操作与快捷分析
- 搭建有效的业务报表体系,发现业务问题,及时调整策略
- 考虑实现成本,数据体系必须快速上线、成本足够低、效果足够好
整体方案设计:
上述需求决定了我们不能用特别复杂的方案,一定要立马能用、立马见效。常规的大数据架构、自研数据平台都不太合适。
经过一圈调研之后,我们决定采用以下定制化方案:
- 数据仓库基础:利用 T+1 同步的方式,将数据存到 Mysql 数据库,再基于Mysql数据库的定时任务,搭建一个4层数据仓库,做数据清洗和展示
- 数据平台产品:采用市面上成熟的 BI 产品 Metabase,让用户通过工具轻松操作数据,并利用软件自有功能完成数据报警、权限管理、可视化等工作。
- 数据报表搭建:搭建统一的数据指标体系,统一口径。把制作好的报表存放到 Metabase 上,并通过定时邮件、人工整理等方式把数据报表推送给用户
- 专题数据分析:业务部门可能对数据的加工能力和分析能力有限,通过专题分析,我们可以产出一些深度洞察,提高业务效率
下面具体说说各个环节:
1.数据仓库
整体的技术架构如图所示:

具体来说,业务数据每天凌晨1点由运维系统全量同步到 Mysql 数据库里,接下来通过我们在 Navicat 设定的定时任务,对数据进行多轮次的加工,并且增量加入到数仓各个层次的数据表中。因为数据是每天插入的,因此也就留下了数据记录,我们能够追溯某个学员在某一天的付费状态等等。
这里我们并没有建立 ETL 的多任务间依赖关系,仅仅是通过任务时间分隔进行区分。因为数据量本身不大,而且任务数量也非常少,为了快速上线,我们进行了简化处理。当然,为了确保数据同步顺利进行,我们在Metabase里设置了报警邮件,如果发现昨天同步失败,第二天会第一时间发出报警邮件。(如果任务量特别大,建议使用kettle工具)
在数据表的命名上,我们也严格遵循了ODS/DW/DM/APP等命名规范,避免理解偏差。数据表的设计,是根据我们制作业务报表的经验,抽象的一部分中间宽表,这些表大大简化了我们的sql复杂度。每个报表都有对应的开发人,他负责维护、解释这个报表,便于追责和迭代。
对于加工过程中的一些脏数据,我们在这个过程中,也就给清洗掉了。唯一没有去除干净的,是一批仿真测试用户。由于他们在系统上没有特殊标识,所以我们也没有办法排除。这也提醒我们,将来设计业务系统的时候,一定要加上这些关键标识,避免数据不准确。
我们在梳理报表的过程中,也将原有业务数据库里没有的一些字段重新埋点,补上了业务数据分析的盲点。
2.数据平台产品:
在从0到1阶段,自研BI平台显然是效率低下的做法。我们选择从网上寻找成熟的第三方工具。我们对比了大量的工具,例如 powerbi、tableau、superset、qlikview、fineBI 等等,最终发现 Metabase 是最符合需求的一款产品。
Metabase 的优点比较多:
- 开源免费,并且开发者还在持续更新升级,说明文档也很详细,不会就查。
- 界面非常友好易用,看到就会操作,可视化效果丰富,有各种常见图表
- 本地快速部署,而且因为是本地部署,我们可以控制外网访问权限
其中最吸引我们的其实还是它在产品体验层面上的优势。
Metabase 直接由运维部署到服务器上,它的功能非常强大,包括报表查询、sql撰写、下载数据、可视化展现、定时邮件、细致到文件维度的权限管理等等。我们针对不同的角色,设定了不同的看板目录和权限,用户在 Metabase 里可以通过拖拽式的方法,快速获取自己想要的数据,做出一些可视化的分析。可以说是相当成熟的一款 BI 软件了。
Metabase 上线后我们对大家进行了多轮培训,用户的接受程度还是挺不错的

但是 Metabase 也有很多固有缺陷,比如容易崩溃,难以定制化修改,不支持大数据处理等等。其中定制化和大数据处理,短期我们可以不用。但是崩溃问题确实对使用造成了很大的影响。
我们发现 Metabase 在下载大量级数据的时候,容易崩溃。而且崩溃后会导致页面完全不可用。最终,我们让运维系统每5分钟探测一次系统状况,如果崩溃随即重启。同时我们也做了大量的用户培训工作,避免用户乱操作导致崩溃。最终将这个问题解决掉了
3.数据报表搭建
好的报表体系,首先需要统一,其次需要高效率归因。
数据统一:
为了统一数据报表体系,我们做了许多工作:
- 统一报表:我们先调研了各个部门在用的数据报表,并制定了统一方案。征得了各个部门的同意后,再从上往下宣布。利用管理层会议,将新的报表公开推广
- 统一指标:我们利用石墨文档搭建了元数据管理wiki,让大家都能快速查询数据说明

- 统一来源:我们将原有的数据报表下载功能全都关闭,并且将数据出口统一为metabase,让全公司看的数据都一致无误差
统一工作里,最难的其实是报表的统一。报表其实就是业务逻辑,不同的报表逻辑意味着不同的管理思路。修改报表会涉及大量的部门协调工作,如果遇到纯逻辑层面的东西,可以通过交流沟通的方式解决,而对于一些涉及到利益分配的,则需要从高层从上往下驱动。在这方面,因为我们成功说服了老板,所以推进非常顺利。
具体为大家介绍下我们的报表体系。
对该业务来说,业务模型就是市场获取线索,然后销售电话跟进,教师进行授课,课管进行服务。一个学员的生命周期,会经历这么几个过程:
- 父母看到广告并点击留下注册资料
- 销售同事拨打电话沟通并预约体验课
- 学生上课并评价
- 销售回访学生家长,并进行多轮次销售
- 家长付费
- 学生开始定期选老师上课
- 完成学业或者投诉退费
对应的,我们的组织结构也分为4块,包括市场/销售/师资/服务,对每个部门我们都找到了对应的核心指标:
- 市场:核心考核线索量、注册预约率
- 销售:考核预约出席率和出席付费率
- 师资:考核师资占课率(老师放出来的课程被学生选择的比率)
- 服务:考核退费率、电话响应率
上述各个指标之间彼此关联,形成了公司整体的数据链条,这也是我们的数据报表结构。而后,我们通过各个指标的维度细分,又将问题归因到了具体的组、个人、功能点、运营策略上,形成了一套完整的归因体系。以下是我们的周报内容截图:

在报表时间维度上,我们提供了日报、周报、月报:
- 日报偏重于每日关键指标监控,以邮件的形式发送
- 周报侧重于问题分析和追踪,在周会的时候详细过
- 月报重点在于总结回顾,每月初发上一月的内容
其中周报是我们最关键的驱动点,我们每周三都会开周会,这个会议主要就是过数据周报,老板也会参加会议。我们在每周的周一周二,就会把周报做完,并且联合业务方一起分析出本周问题原因和对策。周会上我们就快速过结论和TO DO。一开始的时候各个部门并没有那么配合,但是通过一周一周的 PUSH,以及持续不断的分析产生的价值,让大家最终养成了这样的习惯。
通过这个会议,我们成功将大家都转移到了数据导向上,并且也统一了全公司对数据报表和指标的认知。
在报表角色维度上,我们提供了三个层次的报表,分别是老板、部门主管、组员三个层面。通过逐级拆分进行归因,也便于不同角色的人查看自己关心的数据,管理下级部门。
4.专题数据分析:
在分析层面,我们制定了几个阶段性关注的分析专题,比如用户画像、如何让用户更容易成单、X月业绩分析、自主预约的影响等等。有些是我们计划好要做的,有些是临时发起的。
通过持续不断的这些分析工作,我们帮助了各业务部门做出更加合理的决策。

在这个过程中,我们尝试了一种类似“借调”的组织管理机制,让不同的数据分析师深入到某个业务团队里,甚至坐到对方的工位边上服务。有求必应,主动帮助。经过这个操作,很多部门开始对我们另眼相看,特别愿意配合我们,甚至给我们讲一些部分内部的管理策略、面临的困难等等。形成了良好的合作机制。
总结:
通过数据仓库、数据平台、数据报表和分析的搭建工作,我们将 X创业公司 该业务完全数据化了,而且通过周报/周会,我们成功让大家有了数据意识。借助metabase,我们也让大家有了很方便的看数平台。再者,我们垂直到各个部门的数据分析师,跟业务同事建立起了深度合作关系,进一步提高了业务方使用数据的能力和效率。
在数据的加持下,X创业公司该业务,单月业绩一度接近2000万。