gpt4 book ai didi

environment-variables - DBT - 环境变量和运行 dbt

转载 作者:行者123 更新时间:2023-12-05 02:27:44 29 4
gpt4 key购买 nike

我对 DBT 比较陌生,我一直在阅读有关 env_var 的内容,我想在一些情况下使用它,但我遇到了困难,正在寻求一些支持。

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

dbt run --vars '{DBT_USER: my_username, DBT_PASSWORD=my_password}'

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

我还想在我的 dbt_project.yml 中使用它作为架构,但我认为这与上面的类似,只是最后的第三个变量。是这样吗?

谢谢

最佳答案

varenv_var 是 dbt 的两个独立特性。

您可以使用 var 访问您在 dbt_project.yml 文件中定义的变量。 --vars 命令行选项允许您在运行时覆盖这些变量的值。请参阅 docs for var

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

要访问 profiles.yml 文件中的环境变量,您可以将用户名和密码的值替换为调用 env_var 宏,就像它们在 docs for env_var 中所做的那样:

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 环境变量 session 。这将取决于您的操作系统,但是有很多关于此的很好的说明。要为您的 shell session 设置一个 var(对于 Unix 操作系统),它可能如下所示:

$ export DBT_USER=my_username
$ export DBT_PASSWORD=abc123
$ dbt run

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

关于environment-variables - DBT - 环境变量和运行 dbt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72956095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com