DBT(数据构建工具) - 丢弃默认数据库前缀,该数据库前缀将在部署上添加到每个模型

问题描述 投票:0回答:2

在DBT中,每当我们部署模型时,数据库名称都会在数据库中的SQL定义中的每个部署模型前缀。

我需要以不将数据库名称的方式配置DBT项目。

database data-modeling azure-synapse dbt fishtown-analytics
2个回答
3
投票
ref

对象,因此我们可以像这样操纵其输出:

Relation
,从那里开始,使用

{% macro ref(model_name) %} {% do return(builtins.ref(model_name).include(database=false)) %} {% endmacro %}
函数的所有模型都将返回
ref

对象,而无需

Relation
规范。
database
Edit:

当您要求的是,以下是从来源删除数据库名称的示例:
dbt code:
select * from {{ ref('model') }}

compiled code:
select * from schema_name.model

我已经与来自不同数据库的来源合作,因此,如果您遇到了这种情况,则可能需要编辑宏以提供一个选项以包含数据库名称,例如:

{% macro source(source_name, table_name) %} {% do return(builtins.source(source_name, table_name).include(database=false)) %} {% endmacro %}

{% macro source(source_name, table_name, include_database = False) %}

    {% do return(builtins.source(source_name, table_name).include(database = include_database)) %}

{% endmacro %}

更多详细信息可以在“官方文件”中找到

你的意思是:

您不希望添加带有前缀的架构名称,例如bedbt code: select * from {{ source('kaggle_aps', 'coaches') }} select * from {{ source('kaggle_aps', 'coaches', include_database = True) }} compiled code: select * from schema_name.object_name select * from database_name.schema_name.object_name 而不是

finance.modelname

0
投票
dbname_finance.modelname

)而不是三部分名称(

schema.modelname
    )?
  1. IF#1,我建议您阅读整个Custom架构名称文档页面
    ,特别是有关
    高级自定义架构配置的零件
    
    如果是#2,这是适配器级别所需的更改。由于您已经标记了
  2. database.schema.modelname
  3. ,所以我敢打赌您正在使用Synapse SQL无服务器池,因为我还遇到了一个事实,即您无法在无服务器池中使用三部分名称。上周,我实际上制作了DBT-Synapse的单独的适配器,实际上已将三部分的名称删除。
    
    
    创建一个宏SQL文件(您可以命名'custom_schema.sql),内容如下,然后将删除默认的prefix.
  4. {%acro generate_schema_name(custom_schema_name,node) - %}

synapse {%-Endmacro%}

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.