一学就会 2-2 建立我的第一个dbt项目
还没有把Postgres弄好的小伙伴请先参考老徐的上一个教程
这次教程架设大家已经安装好了所有上一个教程中提到的软件,这边就不再复述了。
我们首先在任意一个位置建立一个文件夹作为我们的项目目录。然后安装相应的dbt包,我们这里使用的是Postgres的数据库,所以用pipenv/pip安装dbt-postgres就行了。
这里,打开VSCode,打开刚刚创建好的空文件夹,然后在VSCode里面打开一个新的terminal窗口,输入:pipenv install dbt-postgres
然后激活我们的Python开发环境:pipenv shell
注意,这里不想使用pipenv的小伙伴可以用pip install dbt-postgres
来进行安装。就不存在激活Python开发环境的这一步了。
好了,安装好以后,我们就可以初始化我们的第一个dbt项目了,大家可以任意起名,老徐这里把项目叫做dbt_tutorial,下面这个指令会帮我们建立好dbt项目的基本结构,
输入dbt init dbt_tutorial
,因为我们安装的是postgres对应的dbt,所以下一步就选择 [1] postgres
就好了。
完成后dbt会在我们现在的文件夹里创造一个新的文件夹,叫dbt_tutorial,里面会生成一些需要用到的东西。
大家可以展开新的dbt_tutorial文件夹看到刚刚生成的文件。
假设大家都安装了direnv,没有的小伙伴请参考上一篇教程。
在dbt_tutorial文件夹内,建立一个新的文件叫做.envrc
,不需要后缀,这个就是我们的开发环境的环境变量,可以和系统的环境变量完全独立开,互相不影响,然后在里面写入下面这一行:
export DBT_PROFILES_DIR=$(pwd)
这一步的目的是让dbt使用我们这个项目文件夹里的设置,这个可以做到让练习环境完全独立。
这时候,在我们的terminal里面,如果你输入cd dbt_tutorial
进入这个文件夹,就会看到一行类似这样红色的字:direnv: error <xxxxxxxxx>/.envrc is blocked. Run
direnv allow to approve its content
,这里就是告诉我们刚刚新设置的环境变量没有读出来。这时候只要我们输入direnv allow
,这个环境变量就可以被terminal读出来了。
再在同一个文件夹下建立一个新的文件,叫做profiles.yml这个就是我们的设置文件了。
这个文件里的内容如果大家跟着老徐前面的教程架设好了postgres服务器,那么完全不需要修改,直接复制粘贴就能用了:
dbt_tutorial:
outputs:
dev:
type: postgres
host: localhost
user: postgres
pass: mysecretpassword
port: 5432
dbname: pagila
schema: dw
target: dev
注意:这里的schema: dw
是我们后面需要让dbt自动建立的schema,大家这样写就好,下一篇教程会解释。
然后在terminal里面输入dbt debug
就能测试我们的connection是不是成功了
到此,我们的dbt项目就建立并且设置好了。老徐理解到这一步可能对于刚刚接触terminal的小伙伴有些复杂,多看,多读,使用google,chatgpt一类的工具帮你解决setup的问题是最简单和容易的方式。
下一篇,使用dbt创建我们的第一个model