dbt 与 Airflow 在 2025:为何这些 Data Powerhouses 正在重新定义工程

发布: (2025年12月21日 GMT+8 23:41)
17 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我会按照要求将其翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。

概览

数据工程领域正如汹涌的创新洪流,随着 2025 年的结束,显而易见,像 dbtApache 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

工作原理

  1. dbt run 会自动把加载拆分为针对 event_time 范围内每个 batch_size 窗口的独立 SQL 查询。
  2. 查询通常 并行执行,显著降低长时间运行导致的超时风险。
  3. 若某个批次失败,可使用 dbt retry 仅重试该批次,或通过 --event-time-start / --event-time-end 定位特定窗口。

观察到的影响 – 在我们内部测试中,针对高流量事件表,正确配置后平均增量模型运行时间下降了 20‑30 %

dbt 语义层 – 2024‑2025 年的成熟

语义层已从初始概念发展为解决“指标混乱”的实用方案,能够在各种消费工具中提供一致且受治理的指标。

关键进展

功能发布 / 时间线影响
新规范与组件2024年9月引入了语义模型指标实体;MetricFlow 能够推断关系并构建更智能的查询。
声明式缓存2024‑2025(团队/企业)缓存常用查询,加快性能并降低频繁访问指标的计算成本。
Python SDK(GA)2024dbt-sl-sdk 提供对语义层的编程访问,使下游 Python 工具能够直接查询指标和维度。
AI 集成(dbt Copilot / Agents)2024‑2025AI 驱动的助手利用语义层上下文生成模型、验证逻辑并解释定义,降低数据准备工作量。

类比: 正如 OpenAI 不断演进的 API 重塑了开发者与 AI 的交互方式,dbt 的 AI 集成旨在将语义层打造为数据团队的一流对话式接口。

Bottom Line

  • Fusion Engine:承诺一种全新的速度‑成本范式,将繁重的解析工作从仓库中移出。
  • Microbatch Incremental:为大规模时间序列流水线提供了显著收益,将运行时间缩短最高可达 30 %,并提升了弹性。
  • Semantic Layer:已成为可投入生产、受治理的指标中心,现在还加入了缓存、Python SDK 和 AI 助手。

这些进展共同将 dbt 从“SQL‑模板工具”推向 全栈数据控制平面,在开发者体验和运营效率方面可与传统编排平台相媲美。随着迈入 2026 年,真正的问题将是 组织能够多快采用这些能力,并将承诺的节省转化为可衡量的业务价值。

dbt 更新(2024‑2025)

关键亮点

  • 扩展集成 – 新增对 TrinoPostgres 等数据平台的支持,以及对 BI 工具 SigmaTableau 的集成,进一步扩大了 dbt 的覆盖范围。
  • 语义层 – 将度量定义集中在受版本控制的 YAML 中,并通过 API 对外暴露。
    • BI 工具调用已定义的度量,而不是重新编写 SQL,确保一致性并降低对专业 SQL 知识的依赖。
  • Fusion Engine – 对大多数适配器仍处于 beta 阶段。
    • 将现有项目迁移或在生产环境中使用需要仔细测试;性能提升取决于项目复杂度和数据仓库的具体情况。
  • dbt Mesh – 在 2023 年底预览,2024‑2025 年获得关键功能。
    • 2024 年引入 双向依赖 跨项目,使业务团队能够拥有并贡献数据产品,而无需严格的中心‑辐射模型。
    • 与 Fusion 绑定的 “状态感知编排” 仍在预览中,完整的无缝 Mesh 实现仍在演进。
  • Apache Iceberg Catalog 集成 – 在 SnowflakeBigQuery(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 集成

dbtAirflow 的集成仍是现代数据工程的基石。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 FusionAirflow 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,这是您获取数据格式和开发者工具洞见的首选资源。

Back to Blog

相关文章

阅读更多 »