小团队如何用开源工具搭一套能用的数据看板
很多小团队在数据上有一个共同的尴尬:业务数据散落在微信聊天、Excel 表格、后台导出和第三方平台里,想看一个“上周转化率是多少”,得先找人手动加总,花上大半天。买商业 BI 工具,动辄每年几万块,功能一大堆,实际只用到两三个图表。自己开发,又没有专职数据工程师。
过去一年,我参与过三个十人以内小团队的数据看板搭建,最终都落在同一套思路:用开源工具组合,不写复杂代码,两三天内能跑起来。下面把可复用的经验整理出来,包括选型、实操步骤和几个容易踩的坑。
先想清楚看板要回答哪三个问题
多数人一上来就研究工具,这是最容易走弯路的地方。工具是可以替换的,但看板要回答的问题必须一开始就定下来。
我通常让团队负责人先写出三个问题,要求具体到能用一个数字或一张简单图表回答。比如:
- 过去七天,每天新增注册用户是多少?趋势往上还是往下?
- 每个渠道带来的用户,第二周还在使用的比例是多少?
- 当前待处理的工单里,超过 48 小时未响应的有几条?
三个问题对应三种图表:折线图、分组柱状图、单值卡片加条件格式。绝不要把“用户画像”这种需要多维度交叉的题目放进第一版看板,那会直接卡死在一堆字段关联上。
一个实用原则:第一版看板的所有指标,必须能从一张表里算出来。数据源超过两个,就说明还不到搭看板的时候,先把数据汇总的问题解决掉。
选型:三件套搭配,够用且轻
开源数据看板方案很多,经过实际跑通并长期维护的,推荐这一组搭配:
数据存储:SQLite 或 PostgreSQL。看板数据量通常不大,SQLite 单文件足够,迁移和备份都简单。如果团队已经有用 PostgreSQL 的后台,直接复用。
数据转换:dbt Core 或简单的 Python 脚本。dbt 的优势是把每张中间表的计算逻辑用 SQL 文件管理起来,改了哪里一目了然,还能做测试。如果团队没人写 SQL,用 pandas 脚本也可以,但要把脚本放进 Git 仓库,不要留在某人的电脑里。
可视化:Metabase 或 Apache Superset。Metabase 对非技术用户更友好,五分钟能做出一个能看的图表,权限管理也简单。Superset 功能更强,适合有稍微复杂分析需求的团队,但上手成本高一些。
这一套全部可以部署在一台 2 核 4G 的云服务器上,月成本不到 100 元。不依赖任何商业授权。
有一个少有人提的细节:不要用看板工具直连业务生产库。给看板单独建一个只读副本,哪怕只是每天凌晨同步一次。这能避免有人拖拽一个大查询把线上服务拖慢,也能防止误操作改到原始数据。
搭建流程:从 CSV 到自动刷新
以下以 Metabase + SQLite 为例,描述实际搭建过程,适合没有数据工程背景的读者。
第一步,把要用的原始数据导出成 CSV 或从数据库查询后写入一张表。不要在这一步做任何加工,保留最细粒度,比如每条订单一行。
第二步,写两到三个 SQL 视图,把计算逻辑固定下来。比如“每日新增用户数”这个视图,只做聚合和日期格式化。所有视图保存为 .sql 文件,放进 Git 管理。
第三步,在 Metabase 里连接 SQLite 文件,基于视图创建问题。Metabase 会自动识别字段类型,折线图只需要把日期拖到 X 轴,数值拖到 Y 轴。
第四步,设置定时刷新。Metabase 支持按小时或按天重新查询。如果数据更新频率低,每天早八点刷新一次就够用。
第五步,把做好的几个问题放进一个 Dashboard,调整布局。给每个图表写一句说明,比如“此数据截止到昨日 24 点”,避免有人误以为是实时数据。
整个过程顺利的话,一个下午可以完成第一个版本。后续新增指标,只要在对应的 SQL 视图里加一个字段,看板自动更新。
三个反复出现的误区
第一个误区:追求实时。除了极少数场景,业务决策不需要秒级延迟。每天刷新一次能解决 90% 的需求,换来的稳定性和低成本远比实时有价值。
第二个误区:把所有指标都放上去。看板不是数据字典,指标太多等于没有重点。如果一个看板需要超过十分钟才能看完,就需要拆成两个。
第三个误区:没有数据负责人。开源工具再好,如果没人对指标口径负责,半年后就会出现三个人算出三个不同活跃用户数的情况。指定一个人管口径文档,把每个指标的计算方式写清楚,比选什么工具都重要。
维护上两个不要省的动作
第一,每周检查一次数据更新是否正常。最简单的办法是在看板首页放一个“最后更新日期”的卡片,一眼就能看到是否停更。我们有一次因为云服务器磁盘满了,SQLite 写入失败,连续五天看板显示的是旧数据,没人发现。
第二,每次改 SQL 视图,在 Git 里提交一次。不需要复杂的代码评审,但至少要能看到改动历史。有人改了活跃用户定义、没有通知其他人,结果周会上两边数据对不上,这种事发生一次就够麻烦的。
数据看板的价值不在于工具多先进,而在于团队是不是真的每天打开它、用它来讨论问题。如果做出来之后两周没人点开,问题通常不在工具,而在指标跟日常工作没关系。这时候重新回到第一步,先问清楚那三个问题。