关于 data-engineering
用于设计数据管道、转换、流处理系统、仓库架构和数据质量检查的数据工程技能。介绍 Airflow、Dagster、dbt、Kafka 和 Great Expectations 等工具相关模式与示例。
主要功能
- 01ETL 与 ELT 架构模式
- 02Airflow 和 Dagster 编排
- 03dbt 转换示例
- 04Kafka 流处理
- 05仓库架构与质量实践
- 06增量及幂等管道模式
适用场景
- 01选择 ETL 或 ELT 方案
- 02规划编排式数据管道
- 03设计仓库表与质量检查
- 04制定增量处理和回填策略
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ travisjneuman/ .claude --skill data-engineering安装后在 Claude Code 中输入/data-engineering确认已加载。
详细介绍
数据工程
流水线架构
ETL 与 ELT
| 模式 | 适用场景 | 工具 |
|---|---|---|
| ETL | 加载前进行转换,数据质量至关重要 | Airflow + 自定义工具、Spark |
| ELT | 原始数据 → 数据仓库 → 原地转换 | Fivetran + dbt、Airbyte + dbt |
编排
Apache Airflow:
from airflow.decorators import dag, task
from datetime import datetime
@dag(schedule="@daily", start_date=datetime(2024, 1, 1), catchup=False)
def my_pipeline():
@task()
def extract() -> dict:
return {"data": "extracted"}
@task()
def transform(data: dict) -> dict:
return {"transformed": True}
@task()
def load(data: dict):
# Load to warehouse
pass
raw = extract()
transformed = transform(raw)
load(transformed)
my_pipeline()
Dagster(推荐用于新项目):
from dagster import asset, Definitions
@asset
def raw_users():
return extract_from_source()
@asset
def cleaned_users(raw_users):
return clean_and_validate(raw_users)
dbt 转换
-- models/marts/dim_customers.sql
{{ config(materialized='table', schema='marts') }}
WITH source AS (
SELECT * FROM {{ ref('stg_customers') }}
),
orders AS (
SELECT customer_id, COUNT(*) as order_count, SUM(amount) as total_spent
FROM {{ ref('stg_orders') }}
GROUP BY customer_id
)
SELECT
s.customer_id,
s.name,
s.email,
COALESCE(o.order_count, 0) as lifetime_orders,
COALESCE(o.total_spent, 0) as lifetime_value
FROM source s
LEFT JOIN orders o ON s.customer_id = o.customer_id
流处理
Apache Kafka:
from confluent_kafka import Producer, Consumer
# Producer
producer = Producer({'bootstrap.servers': 'localhost:9092'})
producer.produce('events', key='user_123', value=json.dumps(event))
producer.flush()
# Consumer
consumer = Consumer({
'bootstrap.servers': 'localhost:9092',
'group.id': 'my-group',
'auto.offset.reset': 'earliest'
})
consumer.subscribe(['events'])
数据仓库模式设计
星型模式
- 事实表: 可度量的事件(订单、点击、交易)
- 维度表: 描述性上下文(客户、产品、日期)
- 缓慢变化维度: 类型 1(覆盖)、类型 2(版本化行)、类型 3(前一列)
数据质量
- Great Expectations: 模式验证、统计测试、自定义期望
- dbt 测试:
not_null、unique、accepted_values、relationships、自定义 SQL 测试 - 数据契约: 模式演进策略、向后兼容要求
关键模式
- 幂等流水线: 相同输入始终产生相同输出,可安全重跑
- 增量模型: 仅处理新增或变更的数据,使用
updated_at水位标记 - 死信队列: 将失败记录转移以供检查,而不阻塞流水线
- 回填策略: 按时间分区的表支持定向历史数据重新处理
评论
支持 Markdown