Separar responsabilidades em camadas ajuda a manter modelos de dados corporativos consistentes. Uma arquitetura de CDS pode reunir dados de diferentes fontes do SAP S/4HANA e publicar uma interface final para consumo, por exemplo no SAP Datasphere. A nomenclatura Basic, Composite, Fact e Consumption é uma convenção arquitetural: os objetos e anotações reais dependem do projeto.
1. O papel de cada camada
- Basic: lê e normaliza dados das fontes sem misturar regras complexas.
- Composite: combina objetos, traduz descrições, aplica regras e consolida medidas quando necessário.
- Fact: estrutura medidas e dimensões com granularidade analítica explicitada.
- Consumption: apresenta o contrato final ao consumidor e evita expor a complexidade interna.
2. Exemplo fictício de documento fiscal
Considere fontes de cabeçalho, item, impostos e faturamento. Primeiro obtenha campos individuais em CDS Basic; depois agrupe os impostos por documento e item e enriqueça os atributos na Composite. A Fact deve continuar representando uma linha por documento fiscal + item. A Consumption expõe somente os atributos necessários ao Datasphere.
Tabelas de origem
|-- Documento e itens
|-- Impostos e textos
|-- Faturamento e pesos
|
v
CDS BASIC
|
v
CDS COMPOSITE
(joins / agregações)
|
v
CDS FACT
|
v
CDS CONSUMPTION
|
v
SAP DATASPHERE
3. Dois controles indispensáveis
Rastreabilidade: cada campo final deve ter origem, transformação e significado documentados. Granularidade: se a origem possui uma linha por item, o enriquecimento com tabela de textos não pode criar múltiplas cópias do mesmo valor apenas porque há vários idiomas disponíveis.
4. A Fact precisa ser uma CDS de extração?
Não necessariamente. A camada factual pode ser interna. A definição de uma interface de extração exige decidir qual objeto é autorizado a servir como fonte, qual o método de carga e como o consumidor administrará mudanças. A simples presença de @Analytics.dataCategory: #FACT não habilita delta.
5. Checklist de arquitetura
- Defina chave e granularidade por camada.
- Nomeie os objetos de forma previsível.
- Documente joins, filtros de idioma e validade.
- Teste total de linhas e de medidas a cada camada.
- Publique apenas interfaces estáveis e com acesso controlado.