<?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%E8%BD%AC%E6%8D%A2/</link>
    <description>Recent content in 数据转换 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E6%95%B0%E6%8D%AE%E8%BD%AC%E6%8D%A2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SQL 在 ETL 中的应用</title>
      <link>/posts/2026/04/etl-sql/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-sql/</guid>
      <description>SQL 在 ETL 中的角色 很多人一提到 ETL 就想到 Python 或 Spark，但 SQL 才是 ETL 领域最基础也最强大的工具。无论你用什么框架，最终的数据操作大多会落到 SQL 上。dbt 用 SQL 做转换，Spark SQL 用 SQL 做分析，甚至 Pandas 的 DataFrame 操作在概念上也和 SQL 的 SELECT、GROUP BY、JOIN 一一对应。&#xA;SQL 的优势在于声明式：你告诉数据库&amp;quot;要什么&amp;quot;，而不是&amp;quot;怎么做&amp;quot;。数据库优化器会帮你决定最佳的执行路径。对于数据量在千万级以下的 ETL 任务，纯 SQL 方案往往比 Python 方案更简洁、更高效。&#xA;CTE：构建可读的 ETL 管道 公用表表达式（CTE）是 SQL ETL 中最有用的语法之一。它让你能把复杂的转换拆成多个逻辑步骤，每个步骤清晰独立，就像管道中的一个个节点。&#xA;`sql &amp;ndash; 一个典型的 ETL 管道，用 CTE 分步实现 WITH &amp;ndash; 步骤 1：抽取原始数据 raw_orders AS ( SELECT * FROM orders WHERE order_date &amp;gt;= &amp;lsquo;2026-01-01&amp;rsquo; ),</description>
    </item>
    <item>
      <title>数据转换（Transform）：清洗与加工</title>
      <link>/posts/2026/04/etl-transform/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/04/etl-transform/</guid>
      <description>Transform：ETL 的核心环节 如果说抽取是&amp;quot;采购食材&amp;quot;，加载是&amp;quot;摆盘上桌&amp;quot;，那么转换就是整个 ETL 流程中的&amp;quot;烹饪&amp;quot;环节。这也是数据工程师投入精力最多、代码量最大的部分。&#xA;原始数据通常充满了各种问题：字段缺失、格式不统一、存在重复记录、数值异常等等。转换环节的目标就是把这些&amp;quot;脏数据&amp;quot;变成干净、一致、可分析的高质量数据。毫不夸张地说，一个 ETL 流程的质量高低，几乎完全取决于转换环节做得怎么样。&#xA;常见的数据质量问题 在实际项目中，我们经常遇到以下几类数据质量问题：&#xA;缺失值 数据集中某些字段为空，这是最常见的问题。缺失的原因可能是源系统没有采集到、传输过程中丢失、或者该字段本身就不适用。&#xA;重复记录 同一行数据在数据集中出现了多次，通常是因为源系统没有正确的唯一约束、多次导入未去重、或者数据合并时出现了重复。&#xA;异常值 数据值明显超出正常范围。例如，年龄字段出现 200 岁、订单金额为负数、温度字段出现 9999 等。异常值可能是录入错误，也可能是正常但罕见的业务场景。&#xA;格式不一致 同一类型的数据使用了不同的表示方式。例如日期字段有的用&amp;quot;2026-04-05&amp;quot;，有的用&amp;quot;2026/04/05&amp;quot;，还有的用&amp;quot;05/04/2026&amp;quot;；电话号码有的带国家区号，有的不带。&#xA;问题类型 示例 原因 影响 缺失值 email 列为 NULL 未采集、未必填 统计分析偏差 重复记录 同一订单出现 2 次 重复导入 汇总数据翻倍 异常值 年龄=500 录入错误 平均值失真 格式不一致 日期格式混杂 多源合并 解析失败 逻辑矛盾 下单日期 &amp;gt; 发货日期 业务约束违反 数据不可信 使用 Pandas 进行数据清洗 Pandas 是 Python 生态中最强大的数据处理库，也是 ETL 转换环节的首选工具。&#xA;缺失值处理 import pandas as pd import numpy as np # 加载原始数据 df = pd.</description>
    </item>
  </channel>
</rss>
