dbt seed 命令及应用示例

devtools/2024/9/22 23:45:40/

DBT-core是一个命令行工具,它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个强大特性是seed命令,它可以将CSV文件(称为“seed”)加载到数据仓库中。本教程将带你完成使用dbt seed命令的过程。

在dbt中,seed是可以加载到数据仓库中的CSV文件。它们对于处理不经常更改的静态数据特别有用。例如,您可能有一个CSV文件,其中包含国家代码列表及其对应的国家名称。这些数据可以作为seed加载到仓库中,并在dbt模型中引用。

dbt seed 应用场景

代码映射

正如我们在前节描述的,我们可以使用seed将产品代码映射到产品名称。这可以扩展到任何需要将代码映射到更具描述性名称的场景。例如,你可以利用seed将错误代码映射到错误描述,或将缩写映射到它们的完整形式。

排除部分分析数据

假设有一些测试电子邮件地址或用户id列表,您希望将其从分析中排除。首先提供这些电子邮件地址或用户id创建一个seed,然后使用dbt seed命令将此数据加载到仓库中。在dbt模型中,您可以从分析中排除这些测试电子邮件地址或用户id。

载入少量数据集

如果您有不经常更改的小型参考数据集,那么通过seed加载到仓库中,可能比source表方式加载更有效。举例,你可能要在dbt模型中使用的关于汇率小数据集,直接保存在CSV文件中,利用seed命令加载效率更高。

数据验证

您可以使用seed来验证仓库中的数据。例如,您可能有seed数据,其中包含某个计算的预期结果。然后,您可以创建一个dbt测试,将仓库中的实际结果与种子中的预期结果进行比较。

机器学习模型测试

如果你是数据科学家或机器学习工程师,可以使用seed将测试数据加载到仓库中。然后,您可以使用这些测试数据来评估机器学习模型的性能。

dbt seed 示例实战

让我们创建一个用作种子的CSV文件。在本教程中,我们将使用一个简单的CSV文件,其中包含产品代码及其对应的产品名称。将以下数据保存在名为“product_codes.csv”的文件中:

product_code,product_name
PRD01,Apple iPhone 13
PRD02,Samsung Galaxy S21
PRD03,Google Pixel 6

将该文件放在dbt项目的seed文件夹中。

载入数据仓库

通过下面命令,加载seed数据到数据仓库:

$ dbt seed

该命令将把seeds目录中的所有CSV文件加载到数据仓库中。如果要加载特定的seed文件,可以使用–select标志,后跟seed文件名称(不带.csv扩展名)。例如:

$ dbt seed --select product_codes

引用seed数据

一旦将seed数据加载到数据仓库中,就可以使用ref函数在dbt模型中引用它。例如,如果你有一个需要与product_codesseed连接的模型,你可以这样做:

select    orders.*,    product_codes.product_name
from {{ ref('orders') }} as orders
left join {{ ref('product_codes') }} as product_codeson orders.product_code = product_codes.product_code

配置测试

您可以在**dbt_project.yml**文件中配置seed。例如,您可以指定应该加载seed数据的目标schema。您还可以通过在YAML中声明属性增加文档描述和测试seed。下面示例是给seed增加描述信息,可以添加测试,在文档职工生成更多描述信息。详细配置可参考官方文档。

seeds/<filename>.yml

version: 2seeds:- name: <string>description: <markdown_string>docs:show: true | falsenode_color: <color_id> # Use name (such as node_color: purple) or hex code with quotes (such as node_color: "#cd7f32")config:<seed_config>: <config_value>tests:- <test>- ... # declare additional testscolumns:- name: <column name>description: <markdown_string>meta: {<dictionary>}quote: true | falsetags: [<string>]tests:- <test>- ... # declare additional tests- name: ... # declare properties of additional columns- name: ... # declare properties of additional seeds

总结

dbt seed命令是将静态数据加载到数据仓库中的强大工具。通过使用seed可以在dbt中保持转换逻辑,确保数据转换是一致的、版本控制的和代码可审查的。期待您的真诚反馈,更多内容请阅读数据分析工程专栏。


http://www.ppmy.cn/devtools/115696.html

相关文章

Linux自主学习篇

用户及权限管理 sudo 是 "superuser do" 的缩写&#xff0c;是一个在类 Unix 操作系统&#xff08;如 Linux 和 macOS&#xff09;中使用的命令。它允许普通用户以超级用户&#xff08;root 用户&#xff09;的身份执行命令&#xff0c;从而获得更高的权限。 useradd…

JVM垃圾回收算法

JVM垃圾回收算法是Java虚拟机中自动管理内存的关键机制&#xff0c;它通过智能识别和回收无用对象&#xff0c;有效防止内存泄露&#xff0c;提升系统性能&#xff0c;是Java语言高效、稳定运行的基石。让我们一同探索这一神奇算法&#xff0c;感受它如何为Java世界注入活力&am…

『功能项目』QFrameWork道具栏物品生成【64】

我们打开上一篇63QFrameWork框架重构OnGUI的项目&#xff0c; OnGUI优点&#xff1a; 简单易用&#xff1a;OnGUI是基于代码的UI系统&#xff0c;对于简单的调试界面或者小型项目来说&#xff0c;可以快速实现UI需求。即时更新&#xff1a;OnGUI的UI元素是即时更新的&#xff…

Qt 窗口事件机制

在 Qt 开发中&#xff0c;窗口的关闭、隐藏、显示等事件是常见且重要的功能。不同的事件触发条件、处理方式不同&#xff0c;了解和掌握这些事件有助于我们更好地控制窗口行为。本文将详细讲解这些事件的使用方法&#xff0c;并通过代码实例来展示其应用。 1. done(int r) — 关…

TryHackMe 第3天 | Pre Security (二)

该学习路径讲解了网络安全入门的必备技术知识&#xff0c;比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识&#xff0c;本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…

宠物空气净化器该怎么选?希喂、352、霍尼韦尔哪款对吸附浮毛有效

明明我都成年很久了&#xff0c;我爸妈还把我当小孩一样&#xff0c;我干什么前都要和他们说一声。前段时间去朋友家玩&#xff0c;本来对宠物无感的我一下子就被她家可爱的猫咪萌化了。猫咪好可爱呀&#xff0c;毛茸茸的摸起来很舒服&#xff0c;眨巴的大眼睛看着你真的心软软…

SpringCloud的学习(二),Consul服务注册与发现、分布式配置,以及 服务调用和负载均衡

介绍 Consul 是一套开源的分布式服务发现和配置管理系统&#xff0c;由 HashiCorp 公司用 Go 语言开发。 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用&#xff0c;也可以一起使用以构建全方位的服务网格&#xff0c;…

Oracle 单机和集群环境部署教程

目录 一、Oracle 单机环境部署1. 环境准备2. 安装 Oracle Database2.1 下载 Oracle Database2.2 创建 Oracle 用户和组2.3 配置内核参数和系统限制2.4 解压和安装2.5 配置监听程序2.6 创建数据库 3. 单机部署注意事项 二、Oracle 集群环境部署 (Oracle RAC)1. 环境准备2. 安装 …