Explicação sobre geração e personalização de esquemas

O dbt usa a macro padrão generate_schema_name para decidir onde um modelo será construído.

Por padrão, ele usa o esquema de destino (target.schema) especificado no seu perfil ou ambiente dbt. Ao contrário do comportamento do dbt Core, o esquema de destino especificado no arquivo profiles.yml deve existir antes de você criar o projeto dbt para que ele seja compilado ou executado com sucesso.

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.

--Models in `models/tasty_bytes/ will be built in the "*_staging" schema
models:
  tasty_bytes:
      +schema: staging
Copy

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.