首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBT -环境变量和运行dbt

DBT -环境变量和运行dbt
EN

Stack Overflow用户
提问于 2022-07-12 17:16:01
回答 1查看 3.4K关注 0票数 3

我对DBT比较陌生,我一直在阅读关于env_var的文章,我想在几种情况下使用它,而且我很难找到一些支持。

首先,我试图在我的profiles.yml文件中使用它来替换用户和密码,以便在调用它时设置它。当尝试在本地测试这个(在我们的AWS端实现之前),我没有找到正确的语法,也没有在网上找到任何有用的东西。我尝试过以下几种方法:

代码语言:javascript
复制
dbt run --vars '{DBT_USER: my_username, DBT_PASSWORD=my_password}'

但它并没有认识到错误,也没有给出任何有用的错误。当运行dbt时,它确实要求DBT_USER,所以它期待它,但没有详细说明如何运行

我也想在我的dbt_project.yml中使用它作为模式,但我假设这与上面的类似,最后只是第三个变量。是这样吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-07-13 15:29:05

varenv_var是dbt的两个独立特性。

可以使用var访问在dbt_project.yml文件中定义的变量。--vars命令行选项允许您在运行时重写这些var的值。见var

您应该使用env_var来访问在dbt之外为您的系统、用户或shell会话设置的环境变量。通常,您会使用环境变量来存储机密信息,比如配置文件的连接凭据。

若要访问profiles.yml文件中的环境变量,请将用户名和密码的值替换为调用env_var宏,就像在env_var中一样

代码语言:javascript
复制
profile:
  target: prod
  outputs:
    prod:
      type: postgres
      host: 127.0.0.1
      # IMPORTANT: Make sure to quote the entire Jinja string here
      user: "{{ env_var('DBT_USER') }}"
      password: "{{ env_var('DBT_PASSWORD') }}"
      ....

然后,在发出dbt_run命令之前,需要为系统、用户或shell会话设置DBT_USERDBT_PASSWORD环境变量。这将取决于您的操作系统,但在这方面有很多好的说明。要为您的shell会话( Unix OSes)设置var,可以如下所示:

代码语言:javascript
复制
$ export DBT_USER=my_username
$ export DBT_PASSWORD=abc123
$ dbt run

请注意,在环境变量中存储密码不一定比将密码保存在您的profiles.yml文件中更安全,因为它们是以明文形式存储的,并且不会被转储到日志中,等等(您不应该将profiles.yml签入源代码管理)。您至少应该考虑使用一个以DBT_ENV_SECRET_为前缀的环境变量名,以便dbt将它们排除在日志之外。有关更多信息,请参见医生们

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72956095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档