Understand schema generation and customization¶
O dbt usa a macro padrão generate_schema_name para decidir onde um modelo será construído.
By default, it uses your target schema (target.schema) specified from your dbt environment or profile. Unlike dbt Core behavior, the
target schema specified in the profiles.yml file must already exist in Snowflake before you
deploy your dbt project object.
Otherwise, the project fails to compile or execute.
Normalmente, cada desenvolvedor tem seu próprio esquema de destino, por exemplo, analytics_dev. Para projetos maiores, você pode definir um esquema personalizado para agrupar modelos e especificar a chave de configuração do esquema no seu arquivo dbt_project.yml. O dbt o anexa ao esquema de destino (por exemplo, <target_schema>_<custom_schema>) para manter separados os modelos intermediários e voltados para o usuário.
O esquema personalizado de um modelo não substitui o esquema de destino; em vez disso, o dbt os combina para evitar conflitos. Por exemplo, analytics_dev_staging. Isso ocorre porque, se o dbt ignorasse o esquema de destino e usasse apenas o esquema personalizado (neste caso, staging), todos os desenvolvedores escreveriam no mesmo esquema e sobrescreveriam os dados uns dos outros.
Se você deseja um comportamento diferente (por exemplo, usar apenas o esquema personalizado, adicionar nomes de usuário ou prefixos de ambiente etc.), sobrescreva generate_schema_name em /macros/ para alterar a forma como o nome do esquema final é construído. Para obter mais informações e exemplos, consulte Alteração da forma como o dbt gera um nome de esquema na documentação do dbt.