TapCub 正式上线:统计、分析、客服一个平台免费用
数据分析

什么是数据管道?阶段、类型和一个统计实例

数据管道把数据从产生的地方搬到使用的地方。讲清六个阶段以及各自怎么出错、批处理和流处理、ETL 和 ELT,并用一个事件管道的例子演示重复、迟到数据和能抓住它们的监控。

陈屿 发布于 2026 年 11 月 5 日 5 分钟阅读 数据分析
什么是数据管道?阶段、类型和一个统计实例示例数据

用你自己的数据试一下

这篇文章里出现的报表免费版全都有。一段代码,网站和 App 都能接,最多 10 个站点。

免费开始

每一个统计数字都走过一条管道:采集、校验、清洗、补充、存储、查询。本文逐个讲六个阶段以及它们怎么出问题,比较批处理和流处理,并估算一条事件管道:重试、迟到的移动事件和丢失的脚本先后让看板失真,直到四条简单的监控把它们抓出来。

读完你会知道

  • 管道分采集、接入、处理、存储和使用几个阶段
  • 大多数看板错误都能追到管道的某一段
  • 混合管道用流处理做实时,用批处理补迟到数据
  • 业务事件按订单号这类唯一编号去重
  • 监控新鲜度、数据量、拒收和结构,不只监控业务指标

什么是数据管道?

数据管道(Data Pipeline)是把数据从产生的地方搬到使用的地方、并在途中加工的一组自动化步骤。在数据分析里,管道接收网站、App 和服务端发来的原始事件,校验并清洗,补充信息(渠道、设备、地区),存储起来,再变成看板、告警和导出背后的那些表。

看板上的数看起来不对时,原因几乎总在管道的某一段:某个事件没到、重复了、一批数据晚到、某个属性改了名。弄清各个阶段,是排查统计问题最快的办法。

数据管道的各个阶段

阶段发生什么统计里的例子典型故障
数据源 / 采集数据产生并发送浏览器脚本、移动 SDK、服务端事件、CRM广告拦截、用户同意、脚本没加载
接入接收、校验、排队采集端点接受或拒收请求限流、请求格式不对、域名不符
处理 / 转换清洗、去重、补充、关联机器人过滤、UTM 解析、拼会话、身份合并重复、时区错误、字段结构漂移
存储写入数据库或数仓事件表、每日汇总、用户档案保留期限制、分区错误
使用被报表、接口、导出、模型查询看板、告警、SQL、原始数据导出缓存过期、查询太慢
编排和监控调度、重试、对管道本身告警每日任务、新鲜度检查、量的异常告警没人发现的静默故障
阶段例子典型故障
采集网页脚本、SDK、服务端事件脚本被拦或缺失
接入采集服务校验请求限流、请求格式错误
处理机器人、UTM、会话、身份重复、结构漂移
存储事件表、汇总表保留期、分区
使用报表、SQL、导出缓存过期

要监控管道本身:采集坏了,看起来就像流量下跌。

批处理和流处理

批处理流处理
怎么跑按计划(每小时、每天)处理一批数据持续地逐条或按微批处理
延迟几分钟到几小时几秒
适合日报、计费、导出、复杂关联实时看板、告警、风控、客服分配
复杂度较低,容易重跑较高,要处理顺序、迟到事件、恰好一次
常见工具Airflow、dbt、定时任务 + SQLKafka、Kinesis、Flink、Redis Streams

大多数分析产品是混合的:事件以流的方式进来,供实时视图使用;批处理任务再生成每日汇总、补上迟到的数据。这就是「今天」的数字隔夜会小幅变化的原因。

ETL 和 ELT

两种经典模式的区别在于在哪里做转换:

  • ETL(抽取、转换、加载): 先清洗整理,再装进数仓。存储更小更整齐,重新处理历史数据较难。
  • ELT(抽取、加载、转换): 先把原始数据装进去,再在数仓里用 SQL 转换。保留了原始数据,口径变了可以重建表。现代云数仓常用这种方式。

计算示例:估算并检查一条事件管道

某 SaaS 产品每天从网页和 App 发送约 12 万个事件(示例数字)。

数据量。 原始 JSON 事件每条约 0.8 KB,一天 96 MB,一个月约 2.9 GB,一年约 35 GB(未压缩)。JSON 事件数据用 gzip 通常能压缩 8–12 倍,一年的导出也就几 GB。这个规模的网站,数据量很少是问题,正确性才是。

重复。 网络断了,移动 SDK 会重试。有一周 0.6% 的购买事件到了两次。没有去重键,收入就多算了 0.6%。每个购买事件带上订单号、按订单号去重,重复就消失了。

迟到数据。 1.8% 的 App 事件迟到了一小时以上(离线设备恢复联网后同步)。凌晨 00:30 跑一次、之后不再处理的每日任务,就把昨天少算了这么多。几小时后把前一天的汇总再跑一次,问题就解决了。

新鲜度和数据量检查。 团队给管道本身加了几条监控:

检查规则抓到了什么
新鲜度工作时间内 20 分钟没有事件就告警一次部署弄坏了采集地址
数据量当天事件比过去 4 周同一星期几的平均低 25% 以上就告警标签管理器的改动让定价页丢了脚本
拒收被拒收的请求超过当天的 1% 就告警新版 SDK 发了类型不对的属性
结构出现埋点方案里没有的事件名或属性就告警signup_compelted 这类拼写错误

这些正是数据可观测性工具自动做的事:新鲜度、数据量、结构、分布和血缘。

app.tapcub.com/analytics/data-quality

管道监控

最近 30 天
  • freshness工作时间 20 分钟没有事件1 次告警采集地址坏了
  • volume当天事件 < 过去 4 周同一星期几平均 −25%1 次告警/pricing 缺脚本
  • rejects拒收请求 > 当天 1%2 次告警属性类型不对
  • schema事件不在埋点方案里4 个事件signup_compelted
  • duplicates共用一个订单号的购买0.6% → 0按订单号去重
示例数据

数据管道的实践要点

  1. 先定义事件再采集。 埋点方案和数据字典能挡住大部分结构问题。
  2. 每一步都可以安全重跑。 同一天的任务重跑一次,结果应该一样,而不是翻倍。
  3. 业务事件带唯一编号(订单号、发票号),并按它去重。
  4. 时间戳用 UTC 存,查询时再换成报表时区。
  5. 原始数据保留一段明确的时间,这样能重建派生表。
  6. 注意基数。 有几百万个不同取值的属性(带会话 ID 的完整网址、自由文本)会撑大存储、拖慢查询。
  7. 监控管道本身,不只监控业务指标。 流量下跌和采集坏了,在看板上看起来一模一样。
  8. 尽早把个人数据挡在外面。 在采集时就去掉邮箱和令牌,后面再清就难多了。

TapCub 的数据管道

  • 采集: 网页脚本、移动和小程序 SDK、服务端事件,也可以导入服务器日志。
  • 接入: 采集服务校验每个请求。拒收发生在存储之前,数据质量页按原因和日期列出:域名不符、排除规则、月度额度、限流、请求格式错误和机器人。
  • 处理: 机器人识别、渠道和 UTM 解析、会话、身份合并。
  • 存储: 事件表和每日用户汇总。默认保留期:事件 365 日,自动采集 90 天,用户档案和同意记录各 730 天。
  • 使用: 报表、SQL 查询、监控,以及 gzip 压缩的 JSONL 原始数据导出(每个任务最多 365 日,文件保留 48 小时),可以装进你自己的数仓。

购买事件要带上订单号,这样重试不会多出一笔订单。

另见:湖仓一体和数仓、数据血缘。

参考资料

  • Kleppmann, M. (2017). Designing Data-Intensive Applications. O'Reilly, chapters 10–11.
  • Google Cloud. What is a data pipeline?
  • Reis, J. and Housley, M. (2022). Fundamentals of Data Engineering. O'Reilly.

这篇文章对你有帮助吗?

我们会根据反馈修改和补充这篇内容。

陈屿

技术工程师

专注统计代码、SDK 与接口集成文档,从接入验证到问题排查,帮助开发者更顺畅地完成实施。

把原始事件带到任何地方

用 SQL 查询事件,或把 gzip 压缩的 JSONL 导出到你自己的数仓。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie