<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>数据工程 on 老张开工了</title>
    <link>/%E6%95%B0%E6%8D%AE%E5%B7%A5%E7%A8%8B/</link>
    <description>Recent content in 数据工程 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 01 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E6%95%B0%E6%8D%AE%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ETL 概述与数据工程基础</title>
      <link>/posts/2026/04/etl-overview/</link>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-overview/</guid>
      <description>什么是 ETL？ ETL 是 Extract（抽取）、Transform（转换）、Load（加载）三个英文单词的首字母缩写。它描述了一个经典的数据集成过程：从源系统中抽取数据，经过清洗和转换，最终加载到目标存储系统中。&#xA;用一个简单的类比来理解：假设你要把散落在几个仓库里的书籍搬到一个新图书馆。你需要先去各个仓库把书搬出来（Extract），按照图书馆的分类体系给书贴上标签、整理排序（Transform），最后摆放到对应的书架上（Load）。ETL 做的就是这件事，只不过处理的对象是数据。&#xA;ETL 的三个核心步骤 抽取（Extract）：从各类数据源读取数据。数据源可以是关系型数据库、文件（CSV、JSON、Parquet）、API 接口、消息队列等。这一步的关键是高效地获取数据，尽可能减少对源系统的压力。&#xA;转换（Transform）：对原始数据进行清洗、加工和重组。这是 ETL 流程中最复杂、最核心的环节。具体操作包括：处理缺失值和异常值、统一数据格式、执行业务规则计算、数据聚合和关联等。&#xA;加载（Load）：将处理后的数据写入目标系统。目标通常是数据仓库、数据湖或者分析型数据库。加载策略分为全量加载和增量加载，选择哪种方案取决于业务需求和数据量级。&#xA;ETL 的起源与演进 数据仓库时代（1990s） ETL 概念最早在 1990 年代随着数据仓库的兴起而出现。当时企业开始意识到，将分散在各个业务系统中的数据汇集到一个统一的分析平台，能够带来巨大的商业价值。&#xA;Bill Inmon 和 Ralph Kimball 两位数据仓库大师分别提出了不同的数据仓库方法论，但两者的实现都离不开 ETL 这一核心流程。早期的 ETL 工具以商业软件为主，如 Informatica PowerCenter、IBM DataStage、Oracle Data Integrator 等。&#xA;Hadoop 时代（2000s-2010s） Hadoop 的出现打破了传统数据仓库的格局。分布式存储和计算框架使得处理海量数据成为可能，ETL 的概念也发生了变化。在这个阶段，Sqoop 用于在 Hadoop 和关系型数据库之间传输数据，Hive 和 Pig 用于数据转换，Flume 用于日志采集。&#xA;云原生时代（2010s 至今） 云计算的普及彻底改变了 ETL 的面貌。现代数据栈（Modern Data Stack）的兴起带来了几个重要变化：&#xA;ELT 模式成为主流：先把原始数据加载到数据湖，再利用目标系统（如 Snowflake、BigQuery）的强大计算能力进行转换 工具链更加丰富：dbt、Airbyte、Fivetran、Stitch 等新一代工具大幅降低了 ETL 的开发门槛 实时化趋势：从批处理向流处理演进，Kafka、Flink 等工具使得准实时和实时 ETL 成为可能 下面这张表格展示了 ETL 工具在三个时代的典型代表：</description>
    </item>
    <item>
      <title>数据管道与自动化</title>
      <link>/posts/2025/01/data-pipeline/</link>
      <pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/01/data-pipeline/</guid>
      <description>为什么要构建数据管道？ 在前两篇文章中，我们手动加载数据、做清洗、分析、可视化。但如果这个过程需要每天重复做一次呢？比如每天早上都要给业务团队发一份昨天的销售报告。&#xA;手动做几件事很麻烦：&#xA;每天从不同系统导出数据 重复执行相同的清洗和分析代码 把结果发给不同的人 一旦某个环节出错，整个流程中断 数据管道（Data Pipeline）就是为了解决这些问题。它把数据处理流程自动化、标准化、可重复化。&#xA;ETL 与 ELT 架构 在构建数据管道前，需要了解两种主流架构。&#xA;ETL（Extract, Transform, Load） 数据先提取到中间层做转换，再加载到目标系统。&#xA;数据源 → 提取 → 转换 → 加载 → 数据仓库 适合场景：&#xA;目标系统对数据格式有严格要求 需要在加载前清洗和标准化数据 传统数据仓库场景 ELT（Extract, Load, Transform） 数据先原始加载到目标系统，在目标系统内做转换。&#xA;数据源 → 提取 → 加载 → 数据湖/仓库 → 按需转换 适合场景：&#xA;目标系统计算能力强（如云数据仓库） 需要保留原始数据以备后续重新处理 分析需求经常变化 # ETL 示例：提取 → 转换 → 加载 # Extract def extract_from_csv(filepath): return pd.read_csv(filepath) def extract_from_api(api_url, api_key): import requests headers = {&amp;#39;Authorization&amp;#39;: f&amp;#39;Bearer {api_key}&amp;#39;} response = requests.</description>
    </item>
  </channel>
</rss>
