ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

dbt docs 全新一代:Parquet 工件 + 浏览器内 DuckDB-WASM 查询的完整实现指南

dbt docs 全新一代:Parquet 工件 + 浏览器内 DuckDB-WASM 查询的完整实现指南 dbt docs 全新一代Parquet 工件 浏览器内 DuckDB-WASM 查询的完整实现指南【免费下载链接】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/dbtdbt数据转换工具在 v2.0 版本中用 Rust 彻底重写了引擎其中最令人兴奋的变化之一是dbt docs 文档站的全面换代项目元数据不再只存在于笨重的manifest.json而是被写成一组Parquet 工件再由浏览器里的DuckDB-WASM直接查询——无需任何服务端查询引擎文档站就是一个可以放到任意静态文件服务器上的纯静态网站。本文将带你搞清楚这套新机制的数据流、核心原理和最快上手方法。为什么 dbt docs 要彻底重写v1 时代的dbt docs generate依赖 JSON 工件manifest.json在前端加载全量数据项目一大会变得非常慢。v2.0 的解法分两步更可扩展的工件格式——引擎在每次运行时把项目元数据写成 Parquet 文件列式存储、体积更小、可被 SQL 直接查询涵盖 JSON 工件的全部内容把查询能力搬进浏览器——用 DuckDB-WASM 在页面内直接查这些 Parquet 文件文档站因此可以做到零进程、零状态、零仓库依赖。官方对这一代的定位是解析和编译速度大幅提升、语言规范更严格、工件可扩展、安装更简单单一自包含二进制、以及全新的本地文档体验见 README.md。Parquet 工件数据从哪里来当你带着--write-index参数运行 dbt 时引擎会往target/private/index/目录写出一组 Parquet 文件。这套引擎索引由 dbt-index-core crate 负责生产其表结构定义在 db.rs 中分为两个 schemadbtschema项目级快照nodes模型/种子/快照等节点、node_columns、edgesDAG 边、column_lineage列级血缘、test_metadata、exposures、metrics、macros、catalog_tables、source_freshness等 34 张表dbt_rtschema运行时数据每次调用重写invocations、run_results运行结果、test_failures测试失败明细、adapter_queries等 6 张表。值得注意的细节每一张表永远都会有对应的 Parquet 文件哪怕没有数据所以浏览器端不需要处理表缺失的分支索引里预置了分析视图定义views.sql例如dbt.nodes_enriched会把节点信息与最近一次运行状态、catalog 表类型 join 好前端拿到手就能用见 db.rs 中的 ANALYTICAL_VIEWS列级血缘column lineage只在编译时使用--static-analysis strict才会产出文档站会自动探测dbt.column_lineage.parquet是否存在来决定是否启用该功能。数据如何进入浏览器DuckDB-WASM 查询流程 整个数据链路非常干净官方 README 中的流程是dbt project │ dbt compile --write-index --static-analysis strict ▼ target/private/index/*.parquet ← 引擎索引 │ dbt docs generate —— 把 Parquet 复制到 index/ 目录 ▼ target/index.html ← 可托管到任何静态服务器的入口页 │ 浏览器直接 fetch 相邻的 index/ 目录 ▼ DuckDB-WASM在页面内加载 ▼ React SPA已内嵌进 dbt 二进制hash 路由关键设计点没有服务端查询引擎也没有 HTTP API站点发出的每一条查询都在浏览器里执行dbt docs serve只是一个本地静态文件预览服务不是必需品DuckDB-WASM 从 CDN 加载默认不打包进二进制可用--duckdb-cdn-base覆盖基础地址SPA 通过embed-ui特性在编译期烧进 dbt 二进制一个自包含的可执行文件同时完成生成站点和本地预览两件事前端的数据访问层位于 web/src/shared/data-sources/duckdb/ 目录engine.ts负责初始化浏览器内的 DuckDB 实例并加载 Parquet。这套设计带来的直接收益文档站可以托管在任何纯文件服务器上GitLab Pages、S3、公司内网 nginx 均可且完全不需要实时连接数据仓库——一切数据都来自 Parquet 快照。最快上手步骤三条命令跑通 dbt docs 第 1 步生成 Parquet 工件在你的 dbt 项目根目录执行dbt --write-index compile执行后./target/private/index/下会出现 Parquet 文件。如果希望文档站包含列级血缘加上--static-analysis strictdbt compile --write-index --static-analysis strict第 2 步生成静态站点dbt docs generate该命令默认会先执行compile --write-index再把索引导出到站点目录产出物为路径说明target/index.htmlSPA 入口与 v1 写入位置一致现有发布流水线无需改动target/assets/带哈希的 JS/CSStarget/index/从引擎索引复制来的 Parquet 站点数据 提示如果只想发布站点本身避免把manifest.json、编译 SQL 等一并发布使用--output-dir dir得到一个自包含目录。第 3 步本地预览dbt docs serve默认绑定127.0.0.1:8580并自动打开浏览器标签页。常用参数参数环境变量默认值含义--target-path DIRDBT_DOCS_TARGET_PATH./target存放private/index/的目录--host HOSTDBT_DOCS_HOST127.0.0.1绑定地址--port PORTDBT_DOCS_PORT8580监听端口--no-open—关不自动打开浏览器如果需要容器化部署仓库提供了现成的 Dockerfile 与 docker-compose.ymlDBT_TARGET_PATH/abs/path/to/project/target docker compose up --build新版文档站能做什么✨全量项目目录模型、来源sources、种子、快照、测试、单元测试、暴露、分组、宏、指标、语义模型、保存查询一个不缺交互式血缘节点到节点的 DAG 血缘可视化执行信息内联展示资源详情页直接显示最近运行状态、完成时间与错误信息无实时仓库依赖全部读取自 Parquet 快照离线也能看。源码导读核心模块在哪如果你想深入阅读实现重点关注这些模块crates/dbt-docs-server/ —— 文档服务主 crate含站点导出src/export/、静态资源嵌入src/embed.rs、本地预览服务器src/server.rscrates/dbt-docs-server/web/ —— React SPA 源码其构建产物web/dist/已提交入库并内嵌进二进制因此构建服务端完全不需要 JavaScript 工具链crates/dbt-index-core/ —— Parquet 索引的生产端db.rs表定义与视图 SQL、parquet.rsIndexWriter、column_lineage.rs列级血缘、freshness.rs工件新鲜度crates/dbt-docs-server/API-CONTRACTS.md —— 完整的 ADR 决策记录与端点契约是理解为什么这样设计的最好材料前端 DuckDB 数据层engine.ts。常见问题 FAQ ❓问--write-index是什么不加会怎样不加则不会产出 Parquet 索引dbt docs generate会替你自动跑一次带该参数的编译。只有在想复用已有索引比如仓库不可达、或想让导出保持只读且廉价时才显式分两步执行并加--no-compile。问文档站需要连接我的数据仓库吗不需要。所有内容都来自本地 Parquet 快照这是它与 v1 体验最大的区别之一。问为什么浏览器里能跑 DuckDBDuckDB 可以用 WebAssembly 编译为纯客户端二进制DuckDB-WASM 直接在 JS 运行时内完成 Parquet 读取与 SQL 执行性能足以支撑大型项目的交互查询——这正是 dbt v2 敢把文档站做成纯静态站点的底气。小结dbt v2 的 docs 换代本质上是一次把仓库搬进浏览器的架构实验Parquet 工件让元数据变得可查询DuckDB-WASM 让查询发生在用户端静态站点让部署成本趋近于零。如果你想体验完整能力最简路径就是dbt --write-index compile→dbt docs generate→dbt docs serve三条命令即可看到全新一代的 dbt docs。【免费下载链接】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),仅供参考
返回列表