像一间厨房把烘焙交给大烤箱、切配交给桌面小机器,数据项目也未必该把所有任务塞进同一个系统。一份基于 dbt 2.0.6 的实测指南展示了这种分工:同一 dbt 项目里,部分模型由云端平台 Snowflake 构建,另一些交给本地分析数据库 DuckDB;两者读写的不是各自复制的数据,而是同一目录中的 Apache Iceberg 表——一种让不同计算系统共享数据文件、表结构和版本信息的开放表格式。
关键变化是,共享数据可以直接放在 Snowflake 管理的存储里,不再要求用户另建 S3 bucket、IAM role 和 external volume。Snowflake Horizon 充当数据目录,告诉两个引擎“表在哪里、现在是哪一版”,并向 DuckDB 发放只覆盖对应表文件的短期凭证。dbt 则用 --target snowflake 或 --target duckdb 选择执行引擎,连模型测试也在负责构建它的引擎上运行。
这还不是全自动的统一编排:用户仍要手动决定每个模型交给谁、安排运行顺序,并为 DuckDB 准备运行机器;而且本地执行仍需联网读取目录和数据文件。但它已经说明,dbt 有机会从“仓库里的转换工具”进一步变成多引擎共同工作的项目界面。