问题描述
我们正在考虑使用 dbt 来管理我们的 Postgresql 数据仓库中的模型。由于 dbt 模型是 sql 选择语句,因此似乎没有明显的或记录在案的方法来指定特定列应具有索引。
我们如何在 dbt 模型上指定列索引?
解决方法
It looks like 为手动作业编制索引:
确保为常用的列创建索引 连接或 where 子句。
,我自己遇到了这个确切的问题,并为此用例制作了以下包:
- 安装
在您的 packages.yml 文件中包含以下内容:
packages:
- package: sgoley/postgres_utils
version: 0.2.0
然后您可以运行 dbt deps
,dbt 包管理器将在您的项目中本地设置相关的宏在 project_dir/dbt_modules/postgres_utils
下。
- 用法
之后,table 模型可以有一个索引或唯一索引,它使用 posthook 构建,例如:
{{
config({
"post-hook": [
"{{ postgres_utils.index(this,'id')}}",],})
}}
当然,如果您将其添加到视图模型中,您的 dbt run
将引发错误。
请随时在项目存储库中提出其他请求、提交或更多内容:
github: sgoley/dbt-postgres-utils
我正在开发的其他功能是:
- 将
index
和uindex
函数的语法转换为“创建或替换” - 指定索引类型(btree、hash 等)