当前位置: 首页 > article >正文

用jaffle_shop模版快速上手dbt:从seed数据到生成第一个数据模型的完整流程

用jaffle_shop模版快速上手dbt从seed数据到生成第一个数据模型的完整流程当你第一次接触dbt时可能会被各种概念和配置搞得晕头转向。作为一个专注于数据转换的工具dbt确实需要一些时间来掌握。但好消息是dbt官方提供了一个绝佳的入门项目——jaffle_shop它能让你在30分钟内完成从零到第一个数据模型的全过程。jaffle_shop是dbt团队精心设计的教学项目模拟了一个虚构的在线商店的数据环境。它包含了完整的目录结构、示例数据和模型文件特别适合需要快速验证dbt价值的数据团队。通过这个项目你不仅能理解dbt的核心概念还能立即看到它在实际工作中的效果。1. 环境准备与项目初始化在开始之前确保你已经安装了Python 3.7-3.9版本不推荐使用3.10及以上版本可能存在兼容性问题。然后通过pip安装dbt-core和你所需的适配器pip install dbt-core pip install dbt-适配器名称 # 例如dbt-postgres、dbt-snowflake等jaffle_shop项目支持多种数据库适配器包括PostgreSQLSnowflakeBigQueryRedshift其他主流数据仓库获取项目非常简单只需执行git clone https://github.com/dbt-labs/jaffle_shop.git cd jaffle_shop项目目录结构清晰明了jaffle_shop/ ├── dbt_project.yml # 项目配置文件 ├── seeds/ # 种子数据目录 │ ├── raw_customers.csv │ ├── raw_orders.csv │ └── raw_payments.csv ├── models/ # 数据模型目录 │ ├── staging/ # 原始数据模型 │ ├── intermediate/ # 中间模型 │ └── marts/ # 业务模型 └── ... # 其他目录2. 配置profiles.yml连接数据库profiles.yml是dbt连接数据库的关键配置文件。对于jaffle_shop项目我们需要在用户目录下的.dbt/文件夹中创建或修改这个文件。jaffle_shop: # 必须与dbt_project.yml中的profile名称一致 target: dev outputs: dev: type: postgres # 根据你的数据库类型修改 host: localhost user: your_username password: your_password port: 5432 dbname: your_database schema: jaffle_shop threads: 4提示对于生产环境建议使用环境变量或加密方式存储敏感信息而不是直接写在配置文件中。验证配置是否正确dbt debug这个命令会检查dbt核心功能是否正常数据库连接是否成功配置文件是否正确依赖是否满足3. 加载种子数据与运行第一个模型jaffle_shop项目已经为我们准备好了三张基础表的数据raw_customers.csv- 客户基本信息raw_orders.csv- 订单记录raw_payments.csv- 支付信息使用seed命令将这些CSV文件加载到数据库中dbt seed这个命令会读取seeds目录下的CSV文件在数据库中创建对应的表将数据插入到这些表中接下来运行模型dbt run这个命令会执行models目录下的所有SQL文件按照依赖关系顺序构建数据模型。jaffle_shop项目已经预定义了完整的模型层次模型层级作用示例模型staging原始数据清洗stg_customers, stg_ordersintermediate数据转换与整合int_customer_ordersmarts业务分析模型dim_customers, fct_orders4. 解决常见环境配置问题在实际使用中你可能会遇到一些环境配置问题。以下是几个常见场景及解决方案问题1本地与服务器环境配置冲突当你在不同环境中使用dbt时可以通过以下方式管理配置差异使用不同的target环境# profiles.yml jaffle_shop: target: dev # 默认环境 outputs: dev: # 开发环境配置 prod: # 生产环境配置然后通过--target参数指定环境dbt run --target prod使用环境变量动态配置jaffle_shop: outputs: dev: type: postgres host: {{ env_var(DB_HOST) }} user: {{ env_var(DB_USER) }}问题2适配器版本冲突当dbt-core与适配器版本不匹配时可以指定版本安装pip install dbt-core1.1.0 dbt-postgres1.1.0版本兼容性对照表dbt-core版本适配器版本范围Python版本要求1.0.x1.0.x3.7-3.91.1.x1.1.x3.7-3.91.2.x1.2.x3.7-3.95. 深入理解jaffle_shop模型架构jaffle_shop项目的模型设计体现了dbt的最佳实践。让我们分析几个关键模型stg_customers.sql- 原始客户数据清洗with source as ( select * from {{ source(jaffle_shop, raw_customers) }} ), renamed as ( select id as customer_id, first_name, last_name from source ) select * from renamed这个模型展示了dbt的几个核心特性{{ source() }}函数引用种子数据清晰的CTE结构提高可读性字段重命名和选择int_customer_orders.sql- 客户订单聚合with customers as ( select * from {{ ref(stg_customers) }} ), orders as ( select * from {{ ref(stg_orders) }} ), customer_orders as ( select customer_id, min(order_date) as first_order_date, max(order_date) as most_recent_order_date, count(order_id) as number_of_orders from orders group by customer_id ) select customers.customer_id, customers.first_name, customers.last_name, customer_orders.first_order_date, customer_orders.most_recent_order_date, coalesce(customer_orders.number_of_orders, 0) as number_of_orders from customers left join customer_orders using (customer_id)这个中间模型展示了使用{{ ref() }}引用其他模型业务逻辑的实现数据聚合和关联6. 扩展jaffle_shop项目掌握了基础流程后你可以尝试扩展这个项目添加新的种子数据在seeds目录下添加CSV文件运行dbt seed加载数据创建新模型dbt run-operation generate_model --args {name: my_new_model}添加测试 在schema.yml中定义version: 2 models: - name: stg_customers columns: - name: customer_id tests: - unique - not_null然后运行dbt test文档生成dbt docs generate dbt docs serve7. 生产环境最佳实践当准备将jaffle_shop模式应用到实际项目时考虑以下建议项目结构优化models/ ├── staging/ │ ├── sources.yml │ ├── src_*.sql ├── intermediate/ ├── marts/ │ ├── finance/ │ ├── marketing/ ├── utils/配置管理使用环境变量管理敏感信息为不同环境创建profile配置利用dbt_project.yml管理全局变量性能优化技巧合理设置物化策略view/table/incremental使用增量模型处理大数据量优化模型依赖关系CI/CD集成# .github/workflows/dbt.yml jobs: run: steps: - run: dbt deps - run: dbt run --target prod - run: dbt test --target prod通过jaffle_shop项目我们不仅学会了dbt的基本操作更重要的是理解了如何构建一个可维护、可扩展的数据转换项目。这个模板的价值在于它提供了一个真实的工作流程而不仅仅是抽象的概念。在实际项目中你可以基于这个结构不断扩展构建适合自己业务需求的数据模型体系。

相关文章:

用jaffle_shop模版快速上手dbt:从seed数据到生成第一个数据模型的完整流程

用jaffle_shop模版快速上手dbt:从seed数据到生成第一个数据模型的完整流程 当你第一次接触dbt时,可能会被各种概念和配置搞得晕头转向。作为一个专注于数据转换的工具,dbt确实需要一些时间来掌握。但好消息是,dbt官方提供了一个绝…...

Keynote远程标注全攻略:用旧iPhone改造会议神器(附省电设置)

Keynote远程标注全攻略:用旧iPhone改造会议神器(附省电设置) 在小型会议或教学场景中,流畅的演示体验往往离不开得心应手的辅助工具。传统翻页激光笔虽然实用,但功能单一且容易丢失。而苹果用户可能没有意识到&#xf…...

免Root实现Android应用动态扩展的完整指南:LSPatch终极方案

免Root实现Android应用动态扩展的完整指南:LSPatch终极方案 【免费下载链接】LSPatch LSPatch: A non-root Xposed framework extending from LSPosed 项目地址: https://gitcode.com/gh_mirrors/ls/LSPatch 你是否曾因Android设备没有root权限而无法使用强大…...

云上OpenClaw快速部署指南:从“能用”到“好用”的蓝队云进阶攻略

在之前的文章中,我们快速体验了一把 OpenClaw快速部署 的乐趣。但很多朋友发现,虽然AI助理跑起来了,但响应慢、偶尔崩溃、或者担心安全问题。这是因为,把OpenClaw部署在云端只是第一步,如何让它“好用”且“安全”&…...

Elasticsearch reindex性能优化:如何让你的数据迁移速度提升10倍

Elasticsearch reindex性能优化实战:从原理到10倍提速的完整方案 当你面对TB级数据迁移需求时,原生的reindex操作可能让你在漫长的等待中失去耐心。我曾亲历一次3TB日志数据的跨集群迁移,通过系统优化将耗时从72小时压缩到6.5小时——这不是魔…...

蓝队云揭秘:如何利用云服务器高效养殖龙虾OpenClaw?

在数字化转型的浪潮中,一切皆可“上云”,包括您可能从未想过的“龙虾养殖”。这里的“龙虾”,指的是当下热门的开源安全工具——OpenClaw。它如同网络安全海洋中的“捕虾笼”,能有效捕捉威胁,守护您的数字资产。那么&a…...

Anchor-free时代来临:为什么ActionFormer能成为视频动作定位的新标杆?

Anchor-free时代来临:为什么ActionFormer能成为视频动作定位的新标杆? 视频动作定位(Temporal Action Localization, TAL)是计算机视觉领域最具挑战性的任务之一。想象一下,当我们需要从一段长达数小时的监控视频中快速…...

贪心策略的路径寻优——Dijkstra算法核心思想与实现解析

1. 从地图导航到算法本质:Dijkstra为何能找最短路径? 每次用手机地图导航时,你有没有好奇过它怎么在秒级内算出最优路线?这背后藏着一位1956年诞生的算法巨星——Dijkstra算法。我在第一次实现这个算法时,被它那种&quo…...

心肌肌钙蛋白I的蛋白水解片段对临床检测有何影响?

一、心肌梗死后血液中心肌肌钙蛋白I以何种分子形式存在?心肌肌钙蛋白I(cTnI)作为诊断心肌损伤的关键生物标志物,其在血液中的存在形式并非单一的完整分子。当急性心肌梗死(AMI)发生时,坏死的心肌…...

保姆级教程:在离线/内网环境的CentOS 7.9服务器上,如何安全升级内核到最新5.19版本?

企业级内网环境下的CentOS 7.9内核升级实战指南 在金融、政务等对网络安全要求极高的行业场景中,服务器通常运行在严格隔离的内网环境中。当我们需要为这些服务器升级内核以获得更好的硬件兼容性或安全补丁时,常规的在线升级方案完全失效。本文将手把手带…...

Vue.Draggable嵌套拖拽:从零构建企业级树形交互界面

Vue.Draggable嵌套拖拽:从零构建企业级树形交互界面 【免费下载链接】Vue.Draggable 项目地址: https://gitcode.com/gh_mirrors/vue/Vue.Draggable 你是否曾为复杂的管理后台设计而头疼?当产品经理递来需求:"我们需要一个可以无…...

2023最新版:用VMware Workstation 17 Pro搭建CentOS7开发环境(含SSH/Xshell配置全流程)

2023 VMware Workstation 17 Pro与CentOS7开发环境高效配置指南 在当今快速发展的技术环境中,拥有一个稳定可靠的开发环境对于程序员来说至关重要。VMware Workstation 17 Pro作为虚拟化技术的佼佼者,配合CentOS7这一企业级Linux发行版,能够为…...

Typora Beta版过期?3种实测有效的解决方法(附最新0.11.18安装包)

Typora Beta版过期?3种实测有效的解决方法(附最新0.11.18安装包) 作为一款广受欢迎的Markdown编辑器,Typora在Beta阶段积累了大量忠实用户。然而随着官方正式版的推出,部分用户发现Beta版本突然提示过期无法使用。本文…...

Momenta不选VLA选世界模型

点击下方卡片,关注“自动驾驶之心”公众号戳我-> 领取自动驾驶近30个方向学习路线作者 | 智能车参考编辑 | 自动驾驶之心>>自动驾驶前沿信息获取→自动驾驶之心知识星球Momenta,也押注世界模型了。就在刚刚,Momenta剧透下一代飞轮大…...

Room 3.0大变身:安卓开发的新挑战与机遇

Room 3.0大变身:安卓开发的新挑战与机遇 Room 3.0 发布,变革来袭 家人们,大消息!熬了好几个大夜,终于把 Android Room 3.0 的更新研究得七七八八了,今天就来跟大家好好唠唠。这次更新,Google 直…...

手把手教你用setpci调优PCIE设备性能(附GPU/网卡实战案例)

手把手教你用setpci调优PCIE设备性能(附GPU/网卡实战案例) 在数据中心和高性能计算场景中,PCIE设备的性能调优往往是压榨硬件潜力的最后一道关卡。作为经历过数十次服务器性能调优的老兵,我见过太多因寄存器参数配置不当导致的性能…...

OpenClaw健康助手:Qwen3-32B分析运动数据生成周报

OpenClaw健康助手:Qwen3-32B分析运动数据生成周报 1. 为什么需要自动化健康报告 作为一个长期伏案工作的程序员,我去年开始使用智能手环记录每日运动数据。但很快发现一个问题:这些数据只是冰冷地堆积在APP里,缺乏深度分析和可执…...

十一、模型评估与部署

训练完成的大模型需要经过全面评估才能验证其能力,之后还需经过压缩和优化才能部署到生产环境。本章将介绍常用的评估基准、模型压缩技术以及主流的部署框架。 1 评估基准 (Evaluation Benchmarks) 在大模型时代,“跑分”(Benchmarking&#…...

收藏!Java开发者必看:大模型落地加速,这波红利小白也能接住

最近刷到几条AI领域的重磅消息,越看越觉得,属于大模型的黄金时代真的来了! 曾经在很多人眼里,AI大模型是遥不可及的“技术天花板”,要么是实验室里的神秘黑科技,要么是大厂才玩得起的高端玩法。但如今再看…...

绿联NAS上快速部署SeaTable:从MariaDB配置到协同表格实战

绿联NAS企业级协同方案:SeaTable与MariaDB深度整合指南 在数字化办公浪潮中,高效的数据管理与团队协作成为企业核心需求。绿联NAS凭借其稳定的硬件性能和灵活的软件生态,为中小团队提供了理想的私有化部署平台。本文将带您深入探索如何在绿联…...

华硕笔记本硬件控制工具深度解析:从痛点到解决方案

华硕笔记本硬件控制工具深度解析:从痛点到解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: …...

突破网盘限速壁垒:高效直链下载的全方位解决方案

突破网盘限速壁垒:高效直链下载的全方位解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广&#xff0…...

Sa-Token多体系用户登录的坑与填坑指南:从Token有效期到Session超时的完整解决方案

Sa-Token多体系用户登录的坑与填坑指南:从Token有效期到Session超时的完整解决方案 在当今复杂的应用系统中,多体系用户登录已成为标配功能。无论是电商平台区分买家与卖家,还是内容管理系统区分作者与编辑,亦或是SaaS服务区分租户…...

SolveSpace参数化CAD设计:5步掌握智能几何建模的核心技巧

SolveSpace参数化CAD设计:5步掌握智能几何建模的核心技巧 【免费下载链接】solvespace Parametric 2d/3d CAD 项目地址: https://gitcode.com/gh_mirrors/so/solvespace SolveSpace是一款开源的参数化2D/3D CAD设计工具,它通过智能约束系统让几何…...

协同过滤算法黔醉酒业白酒销售系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着互联网技术的快速发展,白酒行业逐渐从传统的线下销售模式向线上电商平台转型。黔醉酒业作为区域性白酒品牌,亟需通过智能化手段提升销售效率和用户满意度。协同过滤算法作为推荐系统的核心技术之一,能够基于用户历史行为和偏好&…...

AK/SK vs 公钥私钥:从原理到实战的深度解析(你真的懂了吗?)

1. AK/SK:云服务API访问控制的守门人 第一次接触AK/SK是在调试阿里云OSS上传功能时。当时看着文档里"AccessKey Secret必须严格保密"的红色警告,我还纳闷:这不就是个密码吗?直到某天凌晨3点因为SK泄露导致服务器被恶意调…...

C++ SOCKET编程:同步阻塞与异步非阻塞通信服务端和客户端代码,支持多连接、断线重连及详...

1、CSOCKET同步阻塞、异步非阻塞通信服务端、客户端代码,支持多个客户端连接。2、断线重连(服务端或客户端没有启动顺序要求,先开启的等待另一端连接); 3、服务端支持同时连接多个客户端; 4、阅读代码就明白…...

从开发到灾备:一文读懂软件部署的六大核心环境

1. 开发环境(DEV):代码诞生的第一站 开发环境是程序员的主战场,这里就像厨师的厨房,所有新鲜代码都在这里诞生。我习惯用本地Docker搭建开发环境,这样能完美复现线上环境配置。举个例子,用VSCod…...

STM32WB55芯片被锁?3步搞定解锁(附STM32CubeProgrammer详细操作截图)

STM32WB55芯片解锁实战指南:从原理到操作全解析 当你在深夜调试STM32WB55项目时,突然发现芯片无法连接——这种"芯片被锁"的窘境,相信不少嵌入式开发者都经历过。不同于普通MCU,STM32WB55作为集成了蓝牙功能的双核芯片&…...

在职VS裸辞学大模型?血泪教训告诉你,选对这条路,转型快3倍!

小伙伴们有没有过这种崩溃时刻: 每天加班到9点,周末还要on-call,好不容易挤出的2小时学习时间,刚打开教程就被工作消息打断。想裸辞全力冲刺,又怕3个月找不到工作心态崩;想边工作边学,又觉得时间…...