在使用 dbt-utils 之前,必须熟悉 SQL 并了解 dbt(数据构建工具)基础知识。您应该已经初始化并配置了 dbt 项目。
如果您需要复习,您可以查看我们的dbt 课程简介和dbt 教程。
此外,dbt 核心和 dbt-utils 包之间需要有明确的版本一致性。建议检查 dbt 版本之间的兼容性,以防止冲突或弃用功能。
逐步安装
要开始将 dbt-utils 集成到您的数据堆栈中,首先 rcs 数据库 确保您的开发环境已正确设置。
步骤 1:安装 dbt
首先,确保你的环境中安装了 dbt。你可以通过 pip 安装 dbt:
pip install dbt
供电
第 2 步:将 dbt-utils 添加到你的 dbt 项目中
要安装 dbt-utils,请将以下内容添加到 dbt 项目根目录中的 packages.yml 文件中。
如果不存在,请在 dbt 项目根目录中创建此文件,并添加以下内容:
packages:
- package: dbt-labs/dbt_utils
version: "1.1.1" # Use the latest version compatible with your dbt version
供电
在此 yaml 文件中,您还将指定必要的软件包版本。确保使用与您安装的 dbt 版本兼容的最新版本。
步骤 3:安装软件包
修改后,安装只需一个简单的命令即可。
成功执行此命令将获取并安装 dbt-utils,为您增强功能做好准备。
在 dbt 项目目录中的终端中运行以下命令:
dbt deps
供电
此命令将安装 packages.yml 中列出的所有包。
dbt-utils 主要实用程序及其应用
dbt-utils 包提供了一套常见的辅助函数,可简化 dbt 项目内的 SQL 转换。
这些功能可帮助开发人员避免冗余并专注于其独特的业务逻辑。
以下是 dbt-utils 中的一些函数:
1. SQL 生成器
dbt-utils 中的 SQL 生成器对于创建模块化 SQL 代码很有用。
例如,deduplicate宏非常适合消除重复行,同时保持数据的顺序。可以从模型、表格甚至通用表表达式 (CTE) 中删除重复项。
2. 通用测试
通用测试用于验证表或视图中的数据。它们可以轻松定制以满足特定要求,并提供有关正在处理的数据质量的宝贵见解。
例如,expression_is_true宏检查某个表达式是否为真。这可以灵活地用于验证多种条件,例如:
柱长
特定基本代数运算的输出
3. Jinja 助手
Jinja 助手可用于创建动态 SQL 查询,这些查询可根据用户输入或变量数据轻松自定义。它们允许在 SQL 语句中使用条件逻辑和循环。
Jinja 模板用于定义和指定这些宏。
一个例子是pretty_time宏,它返回当前时间戳的字符串。
4. Web 宏
Web 宏与 Jinja 助手类似,但它们是专为基于 Web 的项目设计的。它们允许动态 HTML 生成和操作,从而更轻松地创建交互式和响应式网页。
一个有用的宏是get_url_path宏,它获取 URL 的页面路径。语法如下:
{{ dbt_utils.get_url_path(field='page_url') }}
供电
5. 自省宏
自省宏是可以访问和操作当前范围内数据的宏。这允许动态和高效的数据处理,从而减少对其他函数或代码的需求。
一个例子是get_column_values宏,它将查询结果作为对象返回。
dbt utils 的实际用例
用例 1:简化复杂查询
示例场景:一家公司拥有包含客户信息、交易数据和产品数据的大型数据集。他们需要创建一份报告,显示上一季度每个产品类别的总销售额。
他们不需要编写复杂的 SQL 查询来连接多个表并计算每个类别的销售额,而是可以使用 dbt utils 轻松提取相关数据并在宏或模型中对其进行操作。
例如,他们可以用来get_filtered_columns_in_relation过滤掉与产品数据相关的必要列,然后使用 sum 宏来计算每个类别的总销售额。
这简化了流程并提高了效率,节省了时间并减少了错误。
代码实现:
要在模拟数据库中实现此解决方案,可以按照以下步骤操作:
使用get_filtered_columns_in_relation宏从产品数据中仅过滤必要的列。此宏将帮助您高效地选择相关列。
-- models/product_data_filtered.sql
with product_data as (