~/questoes/dados
Macros são funções reutilizáveis escritas em Jinja2 que encapsulam lógica comum (validações, transformações, filtros) dentro de dbt. Seu principal propósito é eliminar duplicação de código, permitindo que a mesma funcionalidade seja usada em múltiplos modelos sem copiar e colar o mesmo SQL várias vezes.
Macros existem especificamente para implementar o princípio DRY (Don't Repeat Yourself). Em vez de repetir uma validação de data ou um filtro de negócio em 50 modelos diferentes, você escreve uma macro uma única vez e a chama onde necessária, tornando o código mais limpo, fácil de manter e menos propenso a erros.
Controle de permissões e acesso a tabelas é responsabilidade do data warehouse (Snowflake, BigQuery, Redshift) e suas configurações de segurança nativas, não de macros em dbt.
Esta é a resposta correta. Macros encapsulam lógica reutilizável através de Jinja2, evitando repetição de código e seguindo o princípio DRY. Exemplos: validações customizadas, transformações padrão, filtros de negócio.
Tipo de materialização (table, view, incremental) é configurado no arquivo de config YAML do modelo ou diretamente no bloco `{{ config() }}` dentro do SQL, não através de macros.
Credenciais e secrets devem ser armazenados em variáveis de ambiente ou gerenciadores de secrets (como dbt Cloud ou HashiCorp Vault), nunca em repositórios git, independentemente do uso de macros.