使用 dbt 配置原始数据库和分析数据库

Configuring raw and analytics databases with dbt

我一直在阅读 dbt 的 How we configure Snowflake 指南,其中解释了拥有 raw 数据库和 analytics 数据库的基本原理。原始数据被加载到您的仓库中 raw(例如通过使用 Fivetran),dbt 使用 analytics 来保存转换后的 data/views 数据 analysts/scientists.

但是,我似乎找不到任何关于如何实际设置它的指南。 profiles.yml 文件需要指向原始数据所在的位置,以便 dbt 可以开始转换。但是,此文件似乎还指定了保存转换后的 data/views 的数据库和模式。

在 dbt 的许多 .yml 文件中,我应该全局指定在哪里保存转换后的数据?

设置你的 profiles.yml,它不存在于实际项目中,而是存在于你机器上的 ~/.dbt 文件夹中,这样它就指向你的目标 database/schema。对于开发,这看起来就像您在下面看到的那样。 For production on dbt Cloud。现在,您只需像往常一样设置您的来源(见下面的第三块)。没有通用源选项,只有一个目标 database/schema.

Profiles.yml Docs and Snowflake Profile Docs

-- profiles.yml

my_profile:
  target: dev
  outputs:
    dev:
      type: snowflake
      account: <snowflake_server>
      user: my_user
      password: my_password
      role: my_role
      database: analytics
      warehouse: dev_wh
      schema: dbt_<myname>
      threads: 1
      client_session_keep_alive: False
-- dbt_project.yml

name: 'my_dbt_models'
version: '1.0.0'
config-version: 2

profile: 'my_profile'
...
...
...

Sources Docs

-- src.yml 

version: 2
sources:
  - name: jaffle_shop
    database: raw
    tables: 
      - name: orders

模型中:

raw.jaffle_shop.orders 变为 {{ source( 'jaffle_shop' , 'orders' ) }}

请注意,dbt 处理此源,默认情况下假定名称是架构,但是,我发现您真的可以随意命名它,如果您想给它一个架构,则可以添加一个架构特殊名称。 例如……

sources:
  - name: my_special_name
    database: raw
    schema: jaffle_shop
    tables: 
      - name: orders

模型中:

raw.jaffle_shop.orders 变为 {{ source( 'my_special_name' , 'orders' ) }}

我希望所有这些都有意义。