dbt Fusion 引擎(dbt v2)演进全记录:从 2.0.0-preview 变更日志看新一代 dbt 引擎的架构与技术走向 📅 发布时间:2026/9/15 1:05:33 👁 浏览次数: dbt Fusion 引擎dbt v2演进全记录从 2.0.0-preview 变更日志看新一代 dbt 引擎的架构与技术走向【免费下载链接】dbtdbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.项目地址: https://gitcode.com/GitHub_Trending/db/dbt导读本篇文章以 CHANGELOG-fusion.md 为绝对主线系统梳理 dbt Fusion 引擎dbt v2 核心从2.0.0-beta.13到2.0.0-preview.221的完整演进脉络覆盖破坏性变更、适配器矩阵扩展、dbt State 运行缓存、信息模式information schema、docs v2 静态站点、LSP/VS Code 扩展、本地计算sidecar等关键能力。读完本文你将能快速判断每个版本升级时需要注意的配置改动理解lake_compute、--generate-info-schema、dbt check、dbt system upgrade-distribution等新概念在仓库源码中的落点并掌握这份 changelog 应当如何阅读、如何用于排障与升级决策的完整方法论。本文事实均来自 CHANGELOG-fusion.md 及当前仓库源码如 crates/dbt-dist/src/upgrade.rs、crates/dbt-index-core、crates/dbt-adbc 等中可验证的内容涉及推测处会明确标注从源码结构看。dbt Fusion Engine 引擎示意图仓库 assets 目录提供的横向宽幅图对应本文讨论的 dbt v2 新一代引擎主题一、文档定位这份 changelog 是什么、怎么读1.1 自动生成机制与阅读约定文件开头明确了三条阅读规则内容完整文件记录了项目fusion lsp 及整个引擎的所有变更按版本归组每条变更列在其首次出现的预发布版本之下后续版本天然包含先前版本的变更Breaking Changes 需要关注标注在版本下的破坏性变更在升级到该版本时可能需要最终用户或外部维护者采取行动。同时文档明确说明Do not edit this file directly——本文件由 changie 中的 changelog 条目规范。也就是说这是一份机器可追溯、人工不可篡改的发布事实记录适合作为版本审计与升级风险评估的一手依据。1.2 版本节奏与仓库源码的对应关系从时间线看发布节奏非常密集2.0.0-beta.132025-05-30起步beta系列持续到 8 月2.0.0-preview.1起进入 preview 周期到2.0.0-preview.2212026-09-09仍在持续迭代每次发布包含 Breaking Changes / Features / Fixes / Under the Hood / Dependencies / Security / Contributors 等分节方便按角色终端用户、包维护者、平台集成方、内部 CI各取所需。值得注意的命名演化早期条目中引擎被称为 fusion例如dbt-fusion 2.0.0-preview.4这样的标题而自 preview.219 起逐步以 dbt v2 命名取代 Fusion 品牌对应dbt system upgrade-distribution内部Distribution枚举从Fusion更名为Dbt/Oss/Core。从源码看crates/dbt-dist/src/upgrade.rs 中exec_upgrade_distribution正是这一跨发行版升级能力的实现入口且明确区分dbt-corelegacy、dbt-oss、dbtFusion三种发行版并为无法判定的安装给出dbt internal get-distribution-info的排查指引。二、Breaking Changes升级前必读清单以下破坏性变更直接决定升级后项目能否继续运行务必逐条核对。2.1 lake compute 适配器外部改名lake_compute→lakecomputepreview.221这是最新版本中最需要动手的变更适配器的外部名现在是lakecompute无下划线与其 DbConfig tag 保持一致需要把profiles.yml、dbt_project.yml、catalogs.yml中的adapter:/type:从lake_compute更新为lakecomputelake_compute及更早的替代拼写alt都被拒绝。与之配套的内部演化路径在 changelog 中清晰可见preview.215外部命名统一为lake_compute此前叫alt不再接受altpreview.220内部标识从alt重命名为lake_compute并拒绝alt与lakecompute这一轮恰好是只认下划线preview.221进一步收敛为lakecompute只认无下划线。也就是说lake_compute这个拼写本身也只是过渡形态。若你的项目在 preview.215220 之间配置过 lake compute升级到 221 时需再改一次。这是典型的命名收敛分两步走案例升级时建议全局检索lake_compute、lakecompute、alt三种写法。2.2 静态分析static_analysis默认值的三阶段演变从 changelog 看静态分析经历了明显的默认策略变化preview.120static_analysis: strict成为on的别名并设为默认on、unsafe被标记废弃带警告同时引入baseline语法级检查 CTE 提取preview.124125将 baseline 模式下带自省的节点的 SQL 语法解析失败降级为警告preview.156baseline 成为默认除非显式覆盖preview.175static_analysis on与unsafe值开始报错而非警告。对终端用户而言最稳妥的做法是在dbt_project.yml中显式声明static_analysis:取值strict/baseline/off不要依赖默认值的跨版本漂移。同时注意 preview.204 的补充lint/format 的 symbolic 渲染会基于污染值tainted value做分支探索与strict静态分析相互配合。2.3 其他需要留意的 Breaking Changes版本变更内容影响对象preview.175.1dbt man --schema dbt_cloud改为输出完整dbt_cloud.ymlschemaversion、context、projects[]配置了旧版 JSON schema 的编辑器preview.147未知的DBT_ENGINE_*环境变量直接报错前缀被引擎保留使用DBT_ENGINE_*自定义变量的用户preview.95Python 模型不再继承dbt_project.yml中配置的 materializationPython 模型项目preview.53Metric 不能再定义 metric改用input_metrics语义层项目preview.35legacy Semantic Layer spec 只警告一次不再写入 manifest 与semantic_manifest.json使用旧版 SL spec 的包preview.27model 列 dimension 级别不再允许 granularity语义层配置preview.160flatten()宏增加默认/可选参数宏调用方行为兼容但签名变化preview.81doc 宏错误降级为警告依赖 doc 块严格校验的 CI另外 preview.221 中还包含一条 dbt-core 侧的行为变化v1 遗留的catalogs.ymlspec 将被警告preview.220 开始提示向 v2 catalogs 迁移。三、适配器矩阵ClickHouse、Exasol、Spark 与跨库能力Fusion 引擎的适配器工作贯穿整个 changelog是dbt enables data analysts to transform data这一项目定位的直接体现。3.1 ClickHouse从 0 到 1 的完整适配ClickHouse 是 preview 周期中最完整的从零接入案例演进路径包括preview.178dbt-adapter核心接线factory、columns、relations、type key、listing 策略ClickHouseMetadataAdapter、clickhouse_get_relation、profile 交互式配置向导、17 个 record/replay 黄金测试、securetrueCloud HTTPSpreview.177175.1DbConfig::ClickHouse变体进入 profile 解析crates/dbt-schemasdbt init交互式 setuppreview.209Dictionary materialization、更多 settings、index definitionpreview.208217表物化缺失配置补齐、clickhouse_s3source()渲染s3()表函数、契约端到端强制约束渲染、逐列 codec/ttl、真实列类型、增量策略deleteinsert / insert_overwrite / microbatch与 Python 适配器完全一致的解析与校验、on_schema_changefail / append_new_columns / sync_all_columns配 codec-aware ALTERpreview.221连接级 settingsprofilecustom_settings v1 兼容的同步操作默认值、默认数据库接入 profile schema、SQL 中字面量?不再被当作绑定参数、HTTP User-Agent 中标识为dbt/version可在system.query_log.http_user_agent看到单元测试支持含 ClickHouse 反斜杠转义的多语句 SQL 由 statement splitter 正确切分table物化兼容 MVmv_on_schema_change默认 fail、repopulate_from_mvs_on_full_refresh重放 MV 查询materialized_view支持on_schema_change、原地刷新计划更新MODIFY REFRESH带安全过渡错误、多 MV 更新/重命名流与refreshable: false投影projection接受 index 形式并做前置校验。驱动侧依赖 crates/dbt-adbcadbc_clickhouse驱动preview.221 升到 0.1.1并支持clickhouse.setting.name任意连接设置。3.2 ExasolPhase 1与 Spark/Databricks 增强preview.217Exasol 适配器 Phase 1 一次性带来完整宏包——table/view/incrementalappend·merge·deleteinsert·microbatch、snapshottimestamp/check、hard deletes、模型契约与约束、on_schema_change、grants、persist_docs、catalog 生成、source freshness、跨库工具函数dateadd/datediff/last_day/hash/bool_or/listagg/safe_cast/equals/split_part以及distribute_by/partition_by/primary_key配置和交互式dbt initDatabricksstreaming table 配置保持preview.221、view_update_via_alter下的 full refresh 语义#14359、materialized view 查询变更检测#16123、get_relation_config按需跳过 tag 查询#16057、liquid clustering changeset#15472、databricks_tags逐 key 合并#16070、Python 模型 managed Iceberg 文件格式修正、column tags 在 snapshot/物化 v1/视图 ALTER 场景下的支持、catalog作为database别名、shallow clone 的 clone/table/incremental 物化处理、skip_optimize、row_filterpreview.214、zorder与unique_tmp_table_suffixpreview.213、query tagspreview.219Spark初始 betapreview.156、insert_overwrite增量策略preview.191、Python 模型 submission 方法all_purpose_cluster / serverless / workflow jobpreview.94101、Spark Connectpreview.175.1Redshiftdatasharing 跨库能力SHOW TABLES/SHOW COLUMNS FROM TABLE/SHOW SCHEMAS/SHOW GRANTS ON TABLEpreview.175217、IAM/Identity Center/access_key 认证、drop_without_cascade、is_serverless等 profile 标志Athena / SQL Server / Postgres / SalesforceAthena 认证与Backend::Athenapreview.175.1/175SQL Server backendpreview.126Salesforce/Postgres 迁移到统一 auth 架构。从源码结构看crates/dbt-adapter/src 下的auth.rs、relation/、engine/等模块正是这些适配器共用的垂直化基座多个版本反复出现用Relation(AdapterType::X)取代XRelation专属类型的重构Postgres/Snowflake/BigQuery/Redshift/Salesforce说明引擎在把每适配器一套类型收敛为一套类型 适配器枚举。四、dbt State 运行缓存复用、克隆与保鲜dbt State早期叫 Run Cache是 Fusion 对增量执行的核心投入几乎每个 preview 版本都有相关条目。可归纳为几条主线4.1 缓存决策与节点复用preview.204在依赖 last-modified 预取仍在飞行时推测性提交模型/快照/数据测试节点不再被完整预取阻塞preview.205compare_unrendered_code——候选先按 unrendered node hashdbt_node_state携带匹配不一致再回退到编译 SQL hash可用RUN_CACHE_COMPARE_UNRENDERED_CODE服务默认值和节点级state: compare_unrendered_code:覆盖同时节点 hash 编码与 Python dbt State 客户端对齐保证 dbt Core/Fusion 之间同一节点 hash 一致preview.207allow_clonesprofile target 选项将clone_chain_depth_limit置 0 来关闭 clone 候选preview.221state:modified现在能检测 check 的meta变更description仍不参与比较与模型行为一致。4.2 克隆与全量刷新语义preview.221allow_clones: false对 seed 生效——seed 在 run-cache 复用时被重建而非跨环境克隆clone 目标若不是表则先 drop 再 clonedev 目标残留旧 VIEW 时先 drop 再跑 clone DDL避免静默回退全量重建preview.204--full-refresh重建后数据测试不再错误复用dbt State 会记录增量模型的 full-refresh 执行并刷新缓存表元数据preview.213RUN_CACHE_API_CLIENT_MAX_ATTEMPTS默认 3最大 5控制瞬时连接错误的重试。4.3 保鲜freshness与元数据预取preview.208Snowflake freshness 元数据预取自适应——小库用一次宽table_schema IN (...)扫描多 schema 库保留裁剪后的逐 schema 查询由adaptive_metadata_fetch默认开启控制preview.204配置了 metadata warehouse 时按 schema 并行受 threads 约束抓取 last-modified替代顺序 dumppreview.221dbt freshness的结果以dbt_rt.freshness发布原dbt_rt.source_freshness新增resource_type列区分 source/model认证侧preview.213CI 等非交互环境下由可再派生凭证client credentials 或平台 token 交换铸成的 token 不再落盘state_auth.json避免临时 runner 遗留凭证。4.4 容错语义preview.204 强调账户被禁用/锁定时 dbt State 自行禁用并继续但用户可操作的认证错误仍然致命state:modified对语义模型/metrics 的误报做了系统修复manifest round-trip、previous-state metrics 加载、与 dbt-core 对齐 metric 内容比较。此外 preview.220 引入propagate配置模型/seed/snapshot 级项目级用propagate声明节点物化后向哪些计算平台发布输出lake compute 节点在 catalog 不会隐式绑定时强制 Snowflake 绑定。五、信息模式information schema与索引体系Fusion 把可查询的元数据做成了第一等公民这是区别于经典 dbt 的重要工程创新。5.1--generate-info-schema与target/info_schemapreview.219正式引入写出可查询的 parquet 层target/info_schema/vn/按资源类型一张表分布在dbt、dbt_rt、dbt_internal三个命名空间外加生成的views.sqlschema 版本由目录名、dbt.project列和 parquet key-value 共同携带数据经由target/index/平面索引暂存已有索引时复用避免元数据 epoch 重复摄入否则私有暂存保证--no-write-index不物化索引preview.221dbt show --info与--inline直接读项目元数据而非已发布的target/info_schema/工件不再要求先跑--generate-info-schema无元数据时报告InfoSchemaUnavailabledbt1656并提示可写入的命令错误码体系preview.221信息 schema 写入失败 →InfoSchemaWriteFaileddbt1657当--generate-info-schema失败从parse产出的工件缺编译代码/列类型/列级血缘/运行结果 →InfoSchemaIncompletedbt1658build/run/check上默认索引写入失败 →IndexWriteFaileddbt1659。三者均可被warn_error_options定位此前共享Genericdbt1000导致无法定向。5.2 索引布局与性能preview.220索引与元数据 parquet 默认落到target/private/原target/index、target/metadata--index-dir、--metadata-dir、DBT_INDEX_DIR、DBT_METADATA_DIR仍可覆盖dbt clean会清理遗留的公开副本preview.216dbt build/dbt run默认写 parquet 索引到target/index/不启用 partial parse--no-write-index退出preview.221dbt parse --generate-info-schema在 warm parse 上也能写出工件此前 partial-load 快速路径会在写点之前返回导致退出 0 但什么都没写底层实现preview.221 提到dbt-index runner 把渲染后的 dbt 日志行转发给 progress sink供 Wizard 流式展示 dbt 命令输出preview.220 提到索引视图表面统一到 dbt-index-core 单一定义views.sql、docs/MCP 注册、DuckDB ingest bootstrap 共用一个注册路径并有跨两个 DuckDB driver 的 DDL 可移植性测试。从源码结构看crates/dbt-index-core 承担了info_schema/、ingest/、epoch_layers.rs、parquet.rs等职责与 changelog 中epoch-append parquet、crack_epochs增量摄取preview.180 提到 9× 更快的增量 ingest等条目一一对应。5.3 parse-time checks 与信息 schema 视图preview.217checks/下的 SQL 文件被解析为节点parse 后经info_schema()视图对元数据索引执行失败会阻止dbt build在编译/执行前启动dbt check按需运行preview.220parse-time checks 直接查询项目元数据而非由索引构建的视图索引写失败不再跳过整个 check 门禁check 视图与信息 schema 一一对应一个 check 能读的每个视图都是那里同名的一张表checks也发布到信息 schemadag_nodes对 checks 可用原 checks-only 的graph_nodes视图移除union 各资源类型视图可得同样行preview.221raw_code不再提供给 parse-time checks 中无内容的视图models的 payload 被trim_model_payload剥掉源 SQLseeds/sources本无 SQL——防止过滤空列却自信通过的误判。六、docs v2可静态托管的文档站点docs 体系在 preview.210 前后完成了一次去服务器化改造preview.210dbt docs generate写出可静态托管的 docs v2 站点——parquet 工件由浏览器端 DuckDB-WASM运行时从 CDN 加载查询无需任何服务器进程运行dbt compile --write-index或dbt build --write-index先行列级血缘需加--static-analysis strictdbt docs generate只导出索引而非重建dbt docs serve变成纯静态文件托管原 JSON API 与 analytics relay 一并移除站点落到target/index.html沿用 v1 的target/发布管线无需改动hash 路由 相对资源 URL任意路径/任意主机可服务preview.212dbt docs generate现在先编译再导出内部执行compile --write-index新项目一条命令即可出站--no-compile导出上一次--write-index写出的索引不存在则报错这也是使用列级血缘的形式preview.203Dockerfile与docker-compose.yml支持自托管dbt docs serve见 crates/dbt-docs-serverpreview.214修复 Docker 镜像——从 dbt-core GitHub Releases 下载发布二进制并校验 SHA256SUMS多阶段、多架构、带健康检查、非特权用户运行--build-arg DBT_VERSION可覆盖。前端侧crates/dbt-docs-server/web517 个前端文件从 preview.213 起持续进行 OSS 迁移dbt-dag→ 本地 xyflow/dagre、sourdough Ryecon 图标 → lucide-react、sourdough UI 组件 → radix/shadcn、TanStack Table/Query 等最终移除dbt-labs/dbt-dag、dbt-labs/biga、dbt-labs/sourdough依赖实现白标 可独立构建的开源形态。七、LSP 与 VS Code 扩展编辑器内体验语言服务器是 Fusion 的开发者日常入口相关条目贯穿始终preview.221dbt lsp可运行在无显式项目目录的编辑器中、忽略不支持的 LSP 通知LSP 重命名模型会同步更新schema.yml中的模型名修复了等待文档重解析导致的自饿死死锁completion/signature help 场景preview.220LSP 增加 ref hover 的 parents/children 血缘VS Code 扩展新增 Sign in to dbt platform 命令仅在功能真正需要平台时才要求登录新增 dbt-autofix 执行框架经uvxpreview.214lsp.formatter.enabled客户端设置控制dbt fmt修复作为信息级诊断上报.sqlfluff配置在 linter 或 formatter-diagnostics 开启时加载symbolicjinja_render_mode下 formatter 通过探索污染的{% if %}分支变体合并修复preview.219无插件 Neovim 集成客户端渲染 CTE 预览dbt fmt经由 LSP 启用dbt fmt命令本身在 preview.204 增加了--checkpreview.212 支持--fix下的规则抑制与源码位置修正preview.212221VS Code 扩展自动安装/更新 Fusion 引擎二进制、Extension Info 一键复制版本信息、原生 Jinja 语法高亮、-- funcsign:签名高亮、查询结果单元格详情面板含 JSON 美化与查找、Catalog 面板重构、lineage 默认深度 1preview.221。八、本地计算sidecarDuckDB 上的跨方言翻译本地计算指用 DuckDB 作为 sidecar 执行远程方言 SQLchangelog 中积累了海量翻译条目可归纳为机制--compute sidecar/--compute local/--compute servicepreview.118 合并到--compute旗标preview.209 增加compute: local拼写支持测试级/项目级与 CLIdbt --compute local单元测试可通过compute覆盖全局preview.191preview.93 完成 sidecar/service 统一BigQuery 函数族preview.220/214/212/209/199 等PARSE_DATE/PARSE_TIMESTAMP、TIMESTAMP_SUB/CURRENT_TIMESTAMP、DATE/DATETIME/DATETIME_TRUNC/TIMESTAMP_TRUNC、JSON_EXTRACT_SCALAR、GENERATE_UUID、FORMAT_DATE、MD5/TO_HEX、UNNEST WITH OFFSET、数组/JSON/正则/窗口表达式、RANGE静态分析、相关标量子查询与 relation 限定列在UNNEST上的保留、timestamp 构造器/算术/差值、FARM_FINGERPRINT、布尔聚合等Snowflake 函数族LEAD/LAG的 IGNORE NULLS、ARRAY_CONTAINS/ARRAYS_OVERLAP、扩展REGEXP_REPLACE、TO_CHAR(TIME)、EQUAL_NULL、UUID_STRING、LISTAGG排序与 fixture 表达式、OBJECT_AGG/OBJECT_CONSTRUCT_KEEP_NULL/OBJECT_INSERT/OBJECT_DELETE、SEQ1-8、DIV0NULL、MD5_NUMBER_UPPER64/LOWER64、TO_DECIMAL族、try_to_*族、temporal*_from_parts/*_to_*桥接 STRPTIME、array_construct_compact/array_except/array_unique_agg、zeroifnull、sha2、regexp_like、jarowinkler_similarity等正确性细节GROUP BY位置序数与整数常量冲突时包装 CAST、QUALIFY窗口表达式保留、UNPIVOT 列别名、UNION [ALL]结构比较、相关子查询的 outer-reference 重写、WHERE中 Jinja 空洞、AS SELECT未加括号的 CREATE VIEW 结构比较等。这条翻译管线与 crates/dbt-adapter/src/engine15 个文件及 crates/dbt-adapter/src/record_batch.rs 等模块直接相关——sidecar 需要把远程方言的语义模型化为可在 DuckDB 上执行的等价 SQL。九、新命令与 CLI 面check、freshness、login、upgrade9.1dbt checkparse-time 质量门禁preview.217 引入checks/目录下的 SQL 解析为节点parse 后对元数据索引执行失败阻止dbt build前置阶段preview.220dbt check name --select subset可组合——命名选 check、选择器选其报告行零行结果细分skipped与passcheck 的meta变更可被state:modified感知preview.221check 结果像测试一样逐条输出判定、颜色、耗时违规行以表格展示dbt check与dbt build的 check 门禁在 check 无法求值列改名、relation 不存在时以非零退出。9.2dbt freshness与模型保鲜preview.217新增dbt freshness命令同时测量模型与 source--resource-type/--exclude-resource-type支持preview.220preview.221结果发布为dbt_rt.freshness带resource_type列时间戳策略快照的SnapshotTimestampMismatchdbt1075误报被修复仅当hard_deletes为invalidate/new_record时才检查dbt sl validate的范围被限定到所选 metric/semantic model/saved query尊重--select。9.3dbt system upgrade-distribution与分发管理preview.213 引入跨发行版升级命令——对全局pip/pipx/uv tool/system的 dbt-core 安装安装dbtFusion并移除旧包对 standalone/unclaimed 原生二进制就地升级--to传入安装目录managed-project 安装manifest 声明 dbt-core当时只检测并打印指引preview.215支持 managed Python 项目——把 manifest 的dbt-core依赖重写为dbt并重跑包管理器拒绝 conda 顶层依赖Fusion 不在 conda 频道发布pip:子列表可正常升级--package-manager name供非交互/--yes使用manager 探测不再只依赖运行中二进制自身的安装方式preview.220支持dbt-oss依赖两者并存时报错从源码看crates/dbt-dist/src/upgrade.rs 即该命令实现且 crates/dbt-dist 同时承载--version输出分类能力preview.221 Expose dbt-dists --version output classifier。9.4 其他值得关注的新命令dbt loginpreview.179 起 OAuth 浏览器流 dbt login statuspreview.204 增加 machine-readable--format json --versiondbt completions shellpreview.175bash/zsh/fish/powershell/elvishdbt run-operation --sql SQLpreview.178免写宏文件直接执行 SQL/Jinja支持 ref 到 ephemeral 模型记录在sql_operation.project.inline_querydbt show --query-id idpreview.220取回已完成 dbt-compute 查询的结果无需重跑dbt man --schema系列profile/selector/dbt_cloud/packages/dependencies/catalogs JSON schema 导出dbt internal get-distribution-infopreview.206发行版与发布渠道探测dbt license infopreview.146dbt state explainpreview.206默认输出简要决策摘要--verbose看完整推理树。十、Under the Hood架构级重构脉络10.1 新 crate 与模块拆分从 changelog 与仓库结构可以互相印证一批面向清晰边界的重构crates/dbt-jinja-ctx把 load/parse/compile/run 各阶段的 Jinja 上下文从手搓 BTreeMap 迁移为类型化 structLoadCtx、ResolveCore、ResolveBaseCtx、ResolveModelCtx、CompileBaseCtx、CompileNodeCtx、RunNodeCtx行为中性crates/dbt-profile-schemasprofile 连接 schema 抽为轻依赖 crate由 dbt-init 再导出crates/dbt-tracked-stmt在飞行语句跟踪抽为独立 crate任何 ADBC 消费方都能取消运行中查询并增加 token 级取消清扫dbt-sql-astpreview.221 引入统一 SQL 抽象语法树dbt-db-runnersidecar 进程随直接 Unix 安装配套安装并在更新时保留preview.221 起成为 opt-in companiondbt-repl独立成库preview.177crates/dbt-index-coreProvider trait 抽象列级血缘/列级影响DuckDB 实现注入crates/dbt-adbcdriver 管理driver_manager.rs、driver_channel.rs、install.rs支撑同一引擎多 ADBC 驱动策略Snowflake/BigQuery/Databricks/ClickHouse/Redshift/Athena/Spark/Postgres/Salesforce/DuckDB 等。10.2 Time Machine 重放与一致性Time Machinerecord/replay 一致性回归是保证 Fusion 与 dbt Core 输出一致的关键基础设施changelog 中的相关修复极具代表性SQL 比较的规范化mask 时钟/版本派生字面量dbt_version、run_started_at、etl_batch_id、archival 路径时间戳、UUID 字面量 canonicalizer 容忍引号间空白、__dbt_tmp后缀归一化、backup relation 标识_DBT_BACKUP_timestampcanonicalize、Snowflake 临时视图的 compact clock bounds 掩码调用匹配get_columns_in_relation按 relation identity 匹配忽略is_view/is_table等物化派生标志、只读 executeSELECT/SHOW跨 segment 无序匹配、check_schema_exists用调用前证据回答、operation hook 的 fetch 按方法名消费写屏障版本化模型显式latest_version的 pointer view 走独立 replay identityTARGET_UNIQUE_ID与 content-based matching避免 dbt1308 失败Mantle 回放偏差登记Databricks SHALLOW CLONE 继承 PK probe 等 Fusion-only 偏差不再误报SqlMismatchdbt1405。10.3 性能类改进以 changelog 数据为准changelog 中给出的实测数据引用时注明出处不夸大preview.177SQLite partial-parse 缓存——warm parse 4× 快440ms vs 1840ms、--selectwarm compile 11× 快328ms vs 3700ms5800 节点项目preview.180indexcrack_epochs用 Rust payload 预解码 flat typed parquet增量 ingest 9× 快--write-lineage开销从 20s 降到 2.4s5843 模型preview.178Arrow-direct fusion ingest 使冷摄取从 4.5s 降到约 500mspreview.206package-qualified 宏名解析从线性扫描改 hash 查找elementary约 1000 宏的 on-run-end 从慢 1.6× 到持平preview.177typecheck 不再 clone Jinja Environment11k 模型项目峰值 RSS 降约 130MB。十一、升级与兼容性建议基于 changelog 的实践要点先做dbt clean场景的检查preview.220 明确记录snapshot 工件布局变更后遗留target/目录可能触发 Not a directory (os error 20)新版本write_file已能先清理陈旧文件升级后若报类似错误清理target/即可。lake_compute改名一步到位直接采用lakecomputepreview.221 唯一接受拼写。显式声明 static_analysis默认值经历了 strict→baseline 的切换dbt_project.yml中显式声明可避免跨版本行为漂移。warn_error_options 现在可用错误名错误码双通道preview.177且信息 schema 类错误dbt16561659已可定向建议 CI 中针对性配置。数据测试的缓存语义变化缓存命中的测试在run_results.json中报reused而非passpreview.214下游成本统计需适配。dbt check可能从静默通过变成失败退出这是安全方向的变化CI 若此前依赖 check 零行即绿色需检查 check 是否真的可求值。环境变量前缀收敛DBT_ENGINE_*已保留旧的DBT_*别名仍在preview.203 起DBT_ENGINE_*优先但未知DBT_ENGINE_*变量会被拒绝命名时注意。结语从2.0.0-beta.13到2.0.0-preview.221这份 changelog 完整刻画了 dbt v2 引擎的工程形态以 Rust 重写核心、以 ADBC 统一驱动矩阵、以 parquet 索引与信息 schema 重构元数据、以 DuckDB sidecar 实现本地计算、以 record/replay 保证与 dbt Core 的语义一致性、以 docs v2 静态站点交付文档体验。对升级者而言本文第二节的 Breaking Changes 清单与第十一节的实践要点是最直接的行动入口对研究者而言文中标注的仓库路径crates/dbt-dist、crates/dbt-index-core、crates/dbt-adapter、crates/dbt-adbc、crates/dbt-docs-server 等是继续深入源码的第一站。后续版本的演进仍可随时回到 CHANGELOG-fusion.md 获取一手事实。【免费下载链接】dbtdbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.项目地址: https://gitcode.com/GitHub_Trending/db/dbt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考