use*_*056 9 environment-variables dbt
我对 DBT 比较陌生,我一直在阅读相关内容env_var,我想在几种情况下使用它,但我遇到了困难并寻求一些支持。
首先,我尝试在 profile.yml 文件中使用它来替换用户和密码,以便在调用它时可以对其进行设置。当尝试在本地测试此功能时(在我们的 AWS 端实现此功能之前),我无法找到正确的语法,并且在网上找不到任何有用的内容。我尝试过以下变体:
dbt run --vars '{DBT_USER: my_username, DBT_PASSWORD=my_password}'
Run Code Online (Sandbox Code Playgroud)
但它没有识别并给出任何有用的错误。当运行 dbt run 本身时,它确实要求,DBT_USER所以它期待它,但没有详细说明如何
我也想在我的dbt_project.yml模式中使用它,但我假设这与上面类似,只是最后有第三个变量。是这样吗?
谢谢
tco*_*eer 23
var和env_var是 dbt 的两个独立功能。
您可以使用它var来访问您在文件中定义的变量dbt_project.yml。命令行选项--vars允许您在运行时覆盖这些变量的值。请参阅的文档var。
您应该使用它env_var来访问在 dbt 之外为系统、用户或 shell 会话设置的环境变量。通常,您会使用环境变量来存储机密,例如您的配置文件的连接凭据。
要访问profiles.yml文件中的环境变量,您可以将用户名和密码的值替换为对宏的调用env_var,就像它们在文档中所做的那样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') }}"
....
Run Code Online (Sandbox Code Playgroud)
然后,在发出命令之前,您需要为系统、用户或 shell 会话dbt_run设置DBT_USER和环境变量。DBT_PASSWORD这取决于您的操作系统,但是有很多关于这方面的很好的说明。要为 shell 会话(对于 Unix 操作系统)设置 var,可能如下所示:
$ export DBT_USER=my_username
$ export DBT_PASSWORD=abc123
$ dbt run
Run Code Online (Sandbox Code Playgroud)
请注意,将密码存储在环境变量中并不一定比将它们保存在profiles.yml文件中更安全,因为它们以明文形式存储,并且不受保护,不会被转储到日志等中(您不应该检查profiles.yml源代码管理)。您应该至少考虑使用前缀为 的环境变量名称,DBT_ENV_SECRET_以便 dbt 将它们排除在日志之外。请参阅文档以获取更多信息
| 归档时间: |
|
| 查看次数: |
25641 次 |
| 最近记录: |