dbt 与 Airflow 在 2025:为何这些 Data Powerhouses 正在重新定义工程
Source: Dev.to
请提供您希望翻译的正文内容,我会按照要求将其翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。
概览
数据工程领域正如汹涌的创新洪流,随着 2025 年的结束,显而易见,像 dbt 和 Apache Airflow 这样的基础工具不仅仅是跟上步伐——它们正在积极塑造潮流。在对最新迭代进行全面测试后,我剥离营销噱头,提供一份务实且深度技术的分析,阐明到底有哪些真正的变化、哪些已经奏效,以及哪些仍然存在粗糙之处。
2024 年底至 2025 年的故事是显著成熟的过程,两大平台都在向更高的效率、可扩展性和开发者体验迈进。
Source: …
dbt – 从 SQL 模板化到全功能数据控制平面
Fusion 引擎(Beta – 2025 年 5 月)
- 它是什么: 对 dbt 核心引擎的根本性重写,首批支持 Snowflake、BigQuery 和 Databricks。
- 关键承诺:
- “惊人的速度”
- 成本节约工具
- 完备的 SQL 语言工具集
- 早期性能数据:
- 通过激活 state‑aware orchestration(当前预览),仅运行已更改的模型,可实现约 10 % 的计算费用下降。
- 部分测试者在调优配置后报告 > 50 % 的整体节省。
为何重要
- 子秒级解析时间。
- 智能 SQL 自动补全和错误检测 无需访问数据仓库。
- 将大量计算负担从仓库转移到 dbt 平台本身,提升开发者效率并降低云费用。
注意: Fusion 仍处于 beta 阶段,但其对开发速度和成本的影响相当显著。
核心发行版(2024 年 末 – 2025)
| 发行版 | 亮点 |
|---|---|
| dbt Core 1.9(2024 年 12 月) | • 微批量增量策略 • 在 YAML 中配置快照 • snapshot_meta_column_names 用于自定义元数据 |
| dbt Core 1.10(Beta – 2025 年 6 月) | • Sample 模式 – 在开发/CI 环境下对数据子集运行(控制成本、更快迭代) |
| dbt Core 1.11(2025 年 12 月) | • 持续的改进与稳定性提升 |
微批量增量 – 实践演练
问题: 对大规模时间序列表使用增量模型时,常会碰到查询超时或难以管理的情况。
解决方案: 新的 microbatch 策略将大型增量加载拆分为更小、可并行的窗口。
-- models/marts/fct_daily_user_activity.sql
{{
config(
materialized='incremental',
incremental_strategy='microbatch',
event_time='event_timestamp', -- 用于分批的列
batch_size='1 day', -- 按 1 天块处理数据
lookback='7 days' -- 包含 7 天的回溯以捕获迟到的数据
)
}}
SELECT
user_id,
DATE(event_timestamp) AS activity_date,
COUNT(*) AS daily_events
FROM {{ ref('stg_events') }}
WHERE event_timestamp >= {{ var('start_date') }} -- dbt 为每个批次自动生成过滤条件
GROUP BY 1, 2
工作原理
dbt run会自动把加载拆分为针对event_time范围内每个batch_size窗口的独立 SQL 查询。- 查询通常 并行执行,显著降低长时间运行导致的超时风险。
- 若某个批次失败,可使用
dbt retry仅重试该批次,或通过--event-time-start/--event-time-end定位特定窗口。
观察到的影响 – 在我们内部测试中,针对高流量事件表,正确配置后平均增量模型运行时间下降了 20‑30 %。
dbt 语义层 – 2024‑2025 年的成熟
语义层已从初始概念发展为解决“指标混乱”的实用方案,能够在各种消费工具中提供一致且受治理的指标。
关键进展
| 功能 | 发布 / 时间线 | 影响 |
|---|---|---|
| 新规范与组件 | 2024年9月 | 引入了语义模型、指标和实体;MetricFlow 能够推断关系并构建更智能的查询。 |
| 声明式缓存 | 2024‑2025(团队/企业) | 缓存常用查询,加快性能并降低频繁访问指标的计算成本。 |
| Python SDK(GA) | 2024 | dbt-sl-sdk 提供对语义层的编程访问,使下游 Python 工具能够直接查询指标和维度。 |
| AI 集成(dbt Copilot / Agents) | 2024‑2025 | AI 驱动的助手利用语义层上下文生成模型、验证逻辑并解释定义,降低数据准备工作量。 |
类比: 正如 OpenAI 不断演进的 API 重塑了开发者与 AI 的交互方式,dbt 的 AI 集成旨在将语义层打造为数据团队的一流对话式接口。
Bottom Line
- Fusion Engine:承诺一种全新的速度‑成本范式,将繁重的解析工作从仓库中移出。
- Microbatch Incremental:为大规模时间序列流水线提供了显著收益,将运行时间缩短最高可达 30 %,并提升了弹性。
- Semantic Layer:已成为可投入生产、受治理的指标中心,现在还加入了缓存、Python SDK 和 AI 助手。
这些进展共同将 dbt 从“SQL‑模板工具”推向 全栈数据控制平面,在开发者体验和运营效率方面可与传统编排平台相媲美。随着迈入 2026 年,真正的问题将是 组织能够多快采用这些能力,并将承诺的节省转化为可衡量的业务价值。
dbt 更新(2024‑2025)
关键亮点
- 扩展集成 – 新增对 Trino、Postgres 等数据平台的支持,以及对 BI 工具 Sigma 和 Tableau 的集成,进一步扩大了 dbt 的覆盖范围。
- 语义层 – 将度量定义集中在受版本控制的 YAML 中,并通过 API 对外暴露。
- BI 工具调用已定义的度量,而不是重新编写 SQL,确保一致性并降低对专业 SQL 知识的依赖。
- Fusion Engine – 对大多数适配器仍处于 beta 阶段。
- 将现有项目迁移或在生产环境中使用需要仔细测试;性能提升取决于项目复杂度和数据仓库的具体情况。
- dbt Mesh – 在 2023 年底预览,2024‑2025 年获得关键功能。
- 2024 年引入 双向依赖 跨项目,使业务团队能够拥有并贡献数据产品,而无需严格的中心‑辐射模型。
- 与 Fusion 绑定的 “状态感知编排” 仍在预览中,完整的无缝 Mesh 实现仍在演进。
- Apache Iceberg Catalog 集成 – 在 Snowflake 和 BigQuery(2025 年底)可用。
- 使 dbt Mesh 能够通过开放表格式在不同平台之间互操作,为数据产品提供长期可持续性。
价值与注意事项概述
| 功能 | 价值 | 注意事项 |
|---|---|---|
| 语义层 | 在多个 BI 工具之间提供一致、可复用的度量。 | 需要完善的数据建模实践和中心化的度量定义治理。 |
| Fusion Engine | 有潜在的性能提升。 | 仍处于 beta 阶段;在生产环境使用前需充分测试。 |
| dbt Mesh | 符合 Mesh 原则的去中心化数据架构。 | 完整的编排能力仍在预览中。 |
| Iceberg 集成 | 开放格式互操作性,提供长期灵活性。 | 采用可能需要对目录配置进行更改。 |
Source: …
Apache Airflow 更新(2024‑2025)
Airflow 3.0 – 2025年4月发布
一次重大重构,解决了长期存在的扩展性和开发者体验难题。
| 功能 | 描述 |
|---|---|
| 基于事件的触发器 | 原生支持事件驱动调度(例如文件到达、数据库更新)。实现近实时编排,降低空闲计算时间。 |
| 工作流(DAG)版本化 | 为每次运行绑定不可变的 DAG 定义快照。提升调试、可追溯性和审计能力——对受监管环境至关重要。 |
| 全新基于 React 的 UI | 使用 React 重构的 UI,配套全新 REST API。更直观、响应式、面向资产。暗色模式(在 2.10 版中加入,2024 年 8 月)继续保留。 |
| Task SDK 解耦 | 将 Task SDK 从核心中分离,支持独立升级和语言无关的任务。Python SDK 已可用;Golang 等语言正在规划中。 |
| 性能与可扩展性 | 优化调度器降低延迟,加速任务执行反馈。托管提供商(如 Astronomer)报告约 2 倍的性能提升以及通过智能自动伸缩实现的成本下降。 |
3.0 之前的基础
Airflow 2.9(2024 年 4 月)– 数据集感知调度
- DAG 可以基于特定数据集的就绪状态触发,而不仅仅是时间。
- 支持 OR 逻辑以及数据集‑时间混合条件(例如 “在 1 AM AND 数据集 1 就绪时触发”)。
- 减少对复杂
ExternalTaskSensor模式的依赖,促进模块化 DAG 设计。
Airflow 2.10(2024 年 8 月)– 增强可观测性与 TaskFlow API
- 为调度器、触发器、执行器和 DAG 运行提供 OpenTelemetry 跟踪,补充现有指标。
- 为管道性能和瓶颈提供更丰富的洞察——对大规模部署至关重要。
- TaskFlow API 增强 – 新增
@skip_if与@run_if装饰器,简化条件任务执行。
最近的 Airflow 与 dbt 增强
Airflow 亮点
- XComs 到云存储 (2.9) – 允许 XCom 使用云存储而不是元数据数据库,从而在任务之间传输更大的数据而不会给数据库带来压力。
- Airflow 3.0 采用 – 一个包含众多新特性的重大版本。文档仍在完善中,自托管部署可能会感觉“笨拙”。请规划迁移路径,尤其是对于复杂环境。
- Task SDK – 将执行与 Python 解耦,为多语言 DAG 铺平道路。完整愿景仍在展开;大多数生产 DAG 目前仍以 Python 为主。
- 事件驱动调度 – 需要思维方式的转变,并可能需要新的基础设施来发出数据集事件。功能强大,但需要慎重集成。
dbt 与 Airflow 集成
dbt 与 Airflow 的集成仍是现代数据工程的基石。Airflow 擅长编排(API 调用、机器学习训练等),而 dbt 提供了一个稳健的基于 SQL 的转换框架。
- Astronomer Cosmos – 一个开源库,可将 dbt 模型转换为原生 Airflow 任务或任务组,支持重试和告警。它在 Airflow UI 中直接提供 dbt 运行的细粒度可观测性,解决了历史上“单一不透明任务”的问题。
- 过去 1.5 年内:>30 万月下载量,表明社区采纳度很高。
改进的编排模式
SYSTEM$get_dbt_log()– 访问详细的 dbt 错误日志,以实现精确的错误处理和告警。
实际示例:使用数据集感知调度编排 dbt 微批模型
下面是一个完整的 Airflow DAG,使用 Cosmos 在新的 raw‑events 数据集落入 S3 时运行 dbt 模型。
# my_airflow_dag.py
from airflow.decorators import dag, task
from airflow.utils.dates import days_ago
from airflow.datasets import Dataset
from cosmos.providers.dbt.task_group import DbtTaskGroup
# Dataset representing the output of raw data ingestion.
# Updated by an upstream ingestion DAG.
RAW_EVENTS_DATASET = Dataset(
"s3://my-bucket/raw_events_landing_zone/{{ ds_nodash }}"
)
@dag(
dag_id="dbt_microbatch_pipeline",
start_date=days_ago(1),
schedule=[RAW_EVENTS_DATASET], # Trigger when new raw events land
catchup=False,
tags=["dbt", "data_aware", "microbatch"],
)
def dbt_microbatch_pipeline():
@task
def check_data_quality_before_dbt():
"""Quick data‑quality checks on RAW_EVENTS_DATASET."""
print("Running pre‑dbt data quality checks...")
# Example checks: row count, schema conformity
if some_quality_check_fails: # > refresh_dashboard
raise ValueError("Data quality check failed")
# Define the dbt task group (placeholder – configure as needed)
dbt_tasks = DbtTaskGroup(
group_id="dbt_transform",
project_dir="/path/to/dbt/project",
models=["fct_daily_user_activity"],
)
check_data_quality_before_dbt() >> dbt_tasks
# Instantiate the DAG.
dbt_microbatch_pipeline()
执行流程
graph TD
A[Raw Events Land (Dataset Trigger)] --> B{Pre‑dbt Data Quality Check}
B -- Pass --> C[dbt Transformations (Cosmos DbtTaskGroup)]
C --> D[Refresh BI Dashboard]
B -- Fail --> E[Alert & Stop]
更广泛的趋势
-
dbt Fusion Engine & Micro‑batching (Core 1.9) – 解决原始计算挑战并加快开发者迭代速度。
-
Semantic Layer – 提升指标一致性和数据民主化。
-
dbt Mesh + Iceberg Integration – 向真正去中心化的数据架构迈进。
-
Airflow 3.0 – 一个里程碑式的发布,转向事件驱动范式、原生 DAG 版本控制和现代化 UI。
-
Airflow 2.9 / 2.10 – 通过增量改进(数据集感知调度、可观测性)为 3.0 的大改造铺平道路。
两个生态系统正在快速演进;保持对这些进展的最新了解将帮助团队构建更稳健、高性能且对开发者友好的数据管道。
现实检查
早期测试版,如 dbt Fusion 和 Airflow 3.0 扩展功能的某些方面,需要进行仔细评估并分阶段采用。文档虽在改进,但常常落后于创新的前沿。然而,趋势显而易见:一个更高效、可观测且可适应的数据栈正在出现。
对于数据工程师而言,这意味着拥有更强大的工具来构建弹性且可扩展的管道,从而摆脱运营负担,专注于交付高质量、可信赖的数据产品。旅程仍在继续,现在正是在该领域进行构建的激动人心的时刻。
来源
相关 DataFormatHub 工具
- CSV to SQL – 从 CSV 数据生成 SQL
- JSON to CSV – 将 JSON 转换为表格格式
- AWS Lambda & S3 Express One Zone – 2025 年对 re:Invent 2023 的深入探讨
- GitHub Actions & Codespaces – 为何选择 2025
- AI Coding Assistants in 2025 – 为何它们在复杂任务上仍然失败
本文最初发表于 DataFormatHub,这是您获取数据格式和开发者工具洞见的首选资源。