Python 与 SQL
pandas 直觉、SQL 查询、衔接 sql-essentials。
35 分钟
Python 与 SQL
数据工程日常是 SQL 写转换逻辑,Python 写胶水与探索。pandas 帮你快速验证数据形状;生产管道里 SQL(dbt/Spark SQL)往往占更大比重。
学习目标
- 用 pandas 建立 DataFrame 与列操作的直觉
- 把常见分析需求翻译成 SQL
- 衔接 sql-essentials 系统学习
Python + pandas 直觉
import pandas as pd
tracks = pd.read_csv("tracks.csv")
active = tracks[tracks["status"] == "published"]
summary = active.groupby("category")["id"].count()
print(summary)
| pandas | SQL 近似 |
|---|---|
df[df.col > 0] | WHERE col > 0 |
groupby().agg() | GROUP BY + 聚合 |
merge() | JOIN |
fillna() | COALESCE |
探索阶段用 Jupyter;上线阶段把验证过的逻辑 下沉为 SQL 或 dbt model。
SQL 是核心技能
数据工程师的 SQL 比应用开发更广:
- 多表 JOIN、子查询、窗口函数
- 增量加载:
WHERE updated_at > '{{ last_run }}' - DDL:建 staging / mart 表
系统学习见 /tracks/sql-essentials:
| 课时 | 与本课衔接 |
|---|---|
| sql-filter | WHERE 与过滤 |
| sql-join | 维度关联 |
| sql-aggregate | 指标汇总 |
CodeRoadMap 示例 SQL
-- 每门课程课时数(分析向)
SELECT t.slug, t.title, COUNT(l.id) AS lesson_count
FROM cf_track t
LEFT JOIN cf_lesson l ON l.track_id = t.id
GROUP BY t.id, t.slug, t.title
ORDER BY lesson_count DESC;
此类查询应在 分析库或只读副本 执行,避免拖慢生产 OLTP。
探查用 pandas,上线用 SQL/dbt;超大规模见 de-bigdata。
与路线图的关系
- — Python & SQL 节点