我试图用相同的代码来设置DBT,用于开发/阶段/产品环境,我们的dev数据库类似于EDW_TEL_ETL_DB _TEL_ETL_DB_DV1/EDW_TEL_ETL_DB_DV3,而stage/qa数据库类似于EDW_TEL_ETL_DB_TS1/EDW_TEL_ETL_DB_ as _3,为了实现这个目的,我有如下sources.yml:
sources:
- name: EDW_TEL_ETL_DB_SS
database: |
{%- if target.name == "dev1" -%} EDW_TEL_ETL_DB{{ env_var("DBT_DATABASE_LIFECYCLE_SUFFIX_1","") }}
{%- elif target.name == "dev2" -%} EDW_TEL_ETL_DB{{ env_var("DBT_DATABASE_LIFECYCLE_SUFFIX_3","") }}
{%- elif target.name == "qa1" -%} EDW_TEL_ETL_DB{{ env_var("DBT_DATABASE_LIFECYCLE_SUFFIX_1","") }}
{%- elif target.name == "qa3" -%} EDW_TEL_ETL_DB{{ env_var("DBT_DATABASE_LIFECYCLE_SUFFIX_3","") }}
{%- elif target.name == "prod" -%} EDW_TEL_ETL_DB
{%- else -%} invalid_database
{%- endif -%}
schema: SS
tables:
- name: ACCOUNTS_USAGE
在profiles.yml中为:
snowflake-profile:
target: dev1
outputs:
dev1:
type: snowflake
示例sql:
FROM {{source('EDW_TEL_ETL_DB_SS', 'ACCOUNTS_USAGE') }}
但是,在编译模型数据库后,解析为"invalid_database“而不是EDW_TEL_ETL_DB_DV1,在调用dbt时,我尝试将"dev1”作为args传递,并创建了一个作业,并将目标名称设置为"dev1“,这两种方法都不起作用。
发布于 2022-05-17 06:07:16
通过更新“开发凭据”部分下的“目标名称”、配置文件>凭据>选择项目>开发Credentials> Edit>更新“目标名称”解决了这一问题
https://stackoverflow.com/questions/72246018
复制相似问题