ARTICLE DETAIL

资讯详情

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

用 dltHub AI Harness 探索数据并构建 Kimball 规范数据模型(CDM)

用 dltHub AI Harness 探索数据并构建 Kimball 规范数据模型(CDM) 用 dltHub AI Harness 探索数据并构建 Kimball 规范数据模型CDM【免费下载链接】dltdata load tool (dlt) is an open source Python library that makes data loading easy ️项目地址: https://gitcode.com/GitHub_Trending/dl/dlt数据加载完成只是数据工程生命周期的前半程。在 dlt 项目中当 REST API、数据库或文件系统管道把原始数据写入 DuckDB、仓库或对象存储之后接下来的关键问题是如何快速理解这批数据、把它塑造成下游可用的形态。dltHub AI Harness 为此提供了两个互补的工具包data-exploration用 marimo Altair 交互式探索已加载数据与transformations从业务本体出发把原始表映射为 Kimball 风格的 Canonical Data Model并生成dlt.hub.transformation填充代码。本文将完整讲解这两个工具包的安装、技能工作流、底层 MCP 工具并结合本仓库源码dlt/hub、dlt/dataset、dlt/helpers/marimo说明它们如何与 dlt 的 Dataset 关系 API 和 SQL 模型归一化机制衔接。读完你可以在自己的 dlt 工作区中跑通「探索 → 建模 → 变换 → 落库」的完整闭环。工具包定位加载之后的两个阶段一旦管道运行起来、数据已落库下一步就是理解数据并为下游使用塑形。dltHub AI Harness 为此提供两个工具包详见 explore-and-transform.mddata-exploration—— 连接到已加载的管道数据对其进行 profile画像分析、规划图表并组装一个带 Altair 可视化的交互式 marimo 仪表盘。transformations—— 把原始源表映射到规范业务概念构建 Kimball 风格 CDM并生成dlt.hub.transformation函数来填充它。两者都支持Claude Code、Cursor和Codex三种编码助手设计上直接衔接着 rest-api-pipeline 工具包 启动的工作流先用 REST API 管道完成摄取再用这两个工具包完成探索与建模。环境准备与工具包安装如果你已经执行过dlthub ai init作为 REST API pipeline 指南 的一部分只需安装工具包uv run dlthub ai toolkit install>/explore-data github_pipeline/explore-data github_pipeline -- what is the distribution of issues by label?该技能通过 dlt MCP 工具list_pipelines、list_tables、get_table_schema、execute_sql_query检查数据无需手动复制输出。每规划完一张图表编码代理都会建议转交给/build-notebook。这些 MCP 工具在仓库 dlt/_workspace/mcp/tools/data_tools.py 中有真实实现list_pipelines通过list_local_pipelines列出工作区管道list_tables基于管道统一 schema 返回schema.data_tables()的表名get_table_schema除返回列定义外还会附加sql_dialect与转义后的sql_identifier配合escape_column_name与 naming 归一化execute_sql_query用 sqlglot 解析并拒绝 INSERT/UPDATE/DELETE只允许只读 SELECT结果以 markdown 或 jsonl 渲染。另有preview_table前 10 行、get_row_counts、export_schemamermaid/yaml/dbml等工具可作补充。/build-notebook组装并启动仪表盘读取analysis_plan.md把所有已规划图表组装成一个 marimo Python notebook校验后启动uv run marimo edit pipeline_name_dashboard.py --no-token代理会在这个循环中迭代用/explore-data规划一张图表 → 用/build-notebook启动 → 再加下一张图表。每次重新调用/explore-data都会向计划追加新图表/build-notebook则重新生成完整 notebook。data-exploration 工具包解剖仓库 dlt/helpers/marimo 提供了 notebook 侧的可复用组件render(app, ...)支持load_package_viewer、schema_viewer、pipeline_selector三个 marimo Appdlt/helpers/marimo/init.py其中pipeline_selector是一个基于mo.ui.dropdown的管道选择器dlt/helpers/marimo/_pipeline_selector.py可直接嵌入你自己的探索 notebook。marimo 的交互式数据探索细节参见 general-usage/dataset-access/marimo.md。转换数据从本体论到 Kimball CDMtransformations工具包从你的源数据和明确的业务目标出发从本体ontology推导模型——即跨多个源存在的业务实体与关系的正式描述。整个过程分四个阶段用业务概念标注源、构建实体图本体、生成 Kimball 风格 Canonical Data ModelCDM、最后编写转换代码。每个阶段助手都会先与你确认决策再继续因此最终模型反映的是你的领域而不是通用模板。产出物是一个由 ibis 驱动的dlt.hub.transformation脚本从原始管道表填充 CDM。/annotate-sources把表映射到业务概念第一步把源表映射到规范业务实体如Person、Company、Event。助手会通过list_pipelines确认管道名并把 schema 导出为 DBML 文件存到.schema/cdm-name/下提出与你的用例匹配的核心业务实体把每张源表映射到一个实体并与你确认识别自然键natural keys——如email这类能跨多个源系统关联同一实体的列/annotate-sources hubspot, luma -- track event attendance and link contacts to companies所有决策记录在.schema/cdm-name/taxonomy.json与标注后的 DBML 文件中。/create-ontology构建实体图把确认过的源标注转换为正式的实体图Graph ISON 格式。对每个概念汇总所有源表中贡献的列用你确认的自然键策略解决跨源属性冲突定义实体间关系BELONGS_TO、ATTENDED、STITCHED_BY标记语义缺口——某个用例需要的数据没有任何源表提供输出.schema/cdm-name/ontology.ison 人类可读的.schema/cdm-name/ontology.md摘要。/generate-cdm设计维度模型用 Kimball 原则把本体转换为可落地的 CDM schema把实体分类为维度表或事实表为每个事实表定义明确的粒度grain例如「每个参加活动的人一行」添加代理键surrogate keys、SCD 类型分配和哨兵行不出现 NULL 外键把 schema 写入.schema/cdm-name/CDM.dbml/create-transformation编写转换代码生成把源表映射到 CDM 实体的dlt.hub.transformation函数基于 ibisimport dlt import ibis dlt.source def person_interactions_to_cdm(): yield dim_person yield dim_company yield dim_event yield fact_event_attendance dlt.hub.transformation(write_dispositionreplace) def dim_person(dataset: dlt.Dataset): contacts dataset[hubspot__contacts].to_ibis() guests dataset[luma__guests].to_ibis() ...输出脚本遵循业务领域的命名约定而非源系统名例如person_interactions_to_cdm.py。dlt.hub.transformation装饰器在仓库中由dlthub扩展提供并经由 dlt/hub/init.py 导出。它与dlt.resource拥有相同的签名但 yield 的是带结果列 schema 的 SQL 查询Relation而不是数据项并且支持与普通资源相同的各目标端 write disposition。transformations 工具包解剖四个技能产出的组合完整数据产品工具包在工作区中沉淀的所有产物彼此衔接构成完整的数据产品技能产物用途/explore-data/build-notebookpipeline_name_dashboard.pyanalysis_plan.md交互式可视化、业务洞察/annotate-sources.schema/cdm-name/taxonomy.json DBML源表 ↔ 业务概念映射/create-ontologyontology.isonontology.md实体关系图、语义缺口清单/generate-cdmCDM.dbml维度/事实表设计、粒度与 SCD 定义/create-transformationperson_interactions_to_cdm.py可运行的dlt.hub.transformation脚本结果与后续步骤按本指南走完你应该拥有一个基于管道数据构建的、带 Altair 图表的交互式 marimo notebook标注过的源 schema 与 taxonomy把原始表映射到业务概念一份 DBML 格式的 Kimball Canonical Data Model一个可用的、填充 CDM 的dlt.hub.transformation脚本后续可以用dlthub-platform工具包部署并调度管道把本地目标端替换为你的数据仓库见 share-a-dataset walkthrough延伸阅读底层机制速览dlt.hub.transformation的运行时行为可以在本仓库中进一步深挖详见 hub/transformations/index.mdRelation APIdlt.Dataset提供table(name)、query(sql, query_dialect...)等方法Relation 对象则有to_ibis()、df()、arrow()、incremental(cursor)等能力见 dlt/dataset/relation.py 与 dlt/dataset/dataset.py这是 AI Harness 生成代码时调用的核心 API。模型归一化转换 yield 的 Relation 会被序列化为.model文件归一化阶段添加_dlt_load_id、_dlt_id等内部列可用[normalize.model_normalizer]配置控制再做标识符限名、方言转换与列重排最终在加载阶段包装成 INSERT 语句执行——整个过程无需把数据搬回运行管道的机器。跨目标端连接当输入输出位于同一 DuckDB/MotherDuck 实例时转换以 model job 形式在仓库内执行跨目标端时 dlt 用 DuckDB attach 别名或 eager materialization 处理跨源增量游标scheduler interval、_dlt_loads.inserted_at等请参考数据集增量文档。dltHub AI Harness 的这两个工具包把「理解数据」与「建模数据」从手工脚本变成了可引导、可确认、可审计的技能工作流同时底层全部复用 dlt 的 Dataset、ibis 与 SQL 模型机制——探索与建模因此不再是孤立的分析任务而是数据管道生命周期中衔接自然的正式一环。【免费下载链接】dltdata load tool (dlt) is an open source Python library that makes data loading easy ️项目地址: https://gitcode.com/GitHub_Trending/dl/dlt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表