dbt State 永久免费:每月 1,000 个 DATT 值 94 美元,省更多要看仓库账单

dbt Labs 10 月 20 日宣布,dbt State 对自托管 dbt 用户永久免费:每月 1,000 个 DATT,不用绑卡,也不用签合同。1dbt State 是一个独立服务,在多次 dbt 运行之间共享状态,让后面的构建复用前面的结果。它支持 Snowflake、BigQuery、Databricks 和 Redshift,自托管 dbt、dbt 平台、Airflow、Dagster 里都能用,但必须登录一个 dbt 账号。14dbt 1.13 和 v2 原生支持,1.7 到 1.12 以插件接入。4
DATT(每日活跃目标表)是它的计费单位。一天之内(按 UTC 算),dbt State 对某个目标做过一次跳过、克隆或测试复用,这个目标就算 1 个 DATT,当天再复用多少次都不另算。种子、快照、模型都是目标,每个测试也单独算:一个模型带 not_null 和 unique 两个测试,就是 3 个目标。超出额度的单价是 0.094 美元一个。3dbt 平台用户也有额度:Starter 每月 1,000 个,Enterprise 2,000 个,都到 2027 年 3 月 31 日为止。3
它只在结果会变的时候才重建
每个节点开跑之前,dbt State 先比逻辑和数据。渲染后的 SQL 变了,就重建。SQL 没变,这个 schema 里已经有表,而且上游没有新数据,或者上次构建还在 lag_tolerance 容忍期内(默认 45 分钟),就直接跳过。本 schema 里没有、别的环境有逻辑相同且数据新鲜的版本,就克隆过来。都不满足才正常构建,没被选中的上游自动 defer。2官方示例里,一个 12 个模型的项目第二次运行,12 个全部复用,估计省下 17.77 秒。7
它发给 dbt Labs 的只有元数据:表的最后修改时间和 SQL 的哈希。服务不连你的仓库,运行在美国的一个多租户实例上。2受数据出境规则约束的团队,上线前要先过一遍合规。
三个环境共用一份状态,都以生产为基准
先说三者的关系。生产、预发、开发各跑各的,没有先后顺序;它们共用 dbt State 里同一份状态记录,默认都以生产为参照。6生产按计划把表建好;预发和开发需要上游表时,只要生产里那张表逻辑没变、数据够新,就直接读或克隆过来,不用自己从头再建一遍。2
**生产:省的是重复构建。**定时作业每跑一次,dbt State 先查状态:SQL 没改、上游也没新数据的表直接跳过。上游一直在更新时,可以用 lag_tolerance 设容忍期,官方建议生产从 4 小时起步,下游最多每 4 小时跟着重建一次。4作业跑得越勤越划算,因为一张表一天复用多少次都只算 1 个 DATT。生产目标再设 allow_clones: false,别的环境的表就不会被克隆进来,基准不会被污染。5
**预发和 CI:省的是每个 PR 的构建量。**一个 PR 通常只改几个模型。用 state:modified+ 选择时,dbt State 拿每个节点和它在生产里的上次执行比,只建逻辑真正改过的模型和下游,没选中的上游直接读生产的表;团队习惯以预发为准,就设 defer_to_target: staging。6
**开发:省的是等待。**在自己的 schema 里改一个模型时,上游表往往还不存在。官方示例里,在全新的开发 schema 里只跑 customers:没有 dbt State 会报错,说上游表不存在;有了它,上游从生产读取,模型没改时直接从生产克隆一份。7开发环境的容忍期官方建议放宽到 7 天,4用旧一点的数据就够了。
免费额度最多值每月 94 美元
1,000 × 0.094 = 94 美元一个月,一年 1,128 美元。这是永久免费能直接省下的上限。
换算到每天,额度只有约 33 个目标,测试还要单算。按 30 天一个月和官方单价,每天复用的目标越多,超出部分越贵:
免费计划用完额度不收费,但会停止复用,到下月 1 日才恢复,3中型项目的生产作业可能月中就退回全量重建。所以免费额度更适合个人开发、CI 和小项目;生产要长期用,就绑卡按量付费,或者签预付合同。1
真正省钱的是仓库计算。判断标准很简单:一个目标被复用的那一天,省下的重建费用要超过 0.094 美元。每小时一跑的大表和增量模型最划算;几秒就建完的视图和测试,复用一次也照样收 0.094 美元。dbt Labs 唯一的省钱数字来自一段客户引语:Virgin Media O2 称作业时长和仓库费用都省了 25%,没有给基线。1比较稳妥的做法是先在免费额度里跑一个月,在 Billing & Usage 页面看实际的 DATT,3再和仓库账单上省下的部分对比。
参考
- dbt State now available free forever, dbt Labs Blog
- About dbt State, dbt Docs
- dbt State usage, dbt Docs
- Setting up dbt State, dbt Docs
- dbt State configurations, dbt Docs
- Configure deferral, dbt Docs
- dbt State examples, dbt Docs
评论
匿名评论审核后显示,用 GitHub、X、Facebook 登录后直接显示。邮箱不公开,只用于回复通知。
评论暂时加载不出来,稍后再试。