A camada gold representa o estágio final do pipeline de dados, onde as informações da silver são transformadas em métricas analíticas, rankings e agregações otimizadas para dashboards, relatórios e BI. As tabelas são modeladas com foco em consumo direto por ferramentas como Athena, Grafana, Power BI e Metabase, utilizando o formato transacional Iceberg.
O pipeline é totalmente automatizado e executado diariamente via Step Function (dm-analytics-dispatcher), acionada por um evento agendado do EventBridge (cron diário às 7h UTC). O fluxo é composto por múltiplas execuções independentes por tabela analítica:
-
Processamento Paralelo por Tabela Cada tabela
top_beers_by_rating,top_breweries_by_rating,state_by_review_volume,top_styles_by_popularityetop_drinkersé processada individualmente por jobs Spark executados no EMR Serverless. A transformação ocorre viaspark-submitcom argumentos dinâmicos. -
Fan-out Controlado A Step Function executa os jobs de forma isolada e paralela (por
MaxConcurrency, podendo ser ajustado conforme necessidade), com controle transacional e logs centralizados no S3 (dm-observer-bucket).
As tabelas resultantes são gravadas em formato Iceberg, já particionadas por review_year e review_month, prontas para consumo imediato no Athena ou Grafana.
O pipeline da camada gold é executado em modo batch diário, logo após o término da camada silver. A estratégia de processamento leva em consideração:
- Dependência da silver: as métricas calculadas na gold dependem das tabelas normalizadas, enriquecidas e versionadas da camada anterior.
- Granularidade mensal: como os dados da silver são particionados por ano/mês, as tabelas gold também herdam essa granularidade para facilitar filtros temporais em dashboards.
- Processamento incremental: apenas os períodos modificados na silver são recalculados na gold.
- Registro em DynamoDB: ao final do processamento da silver, são inseridos itens na tabela
dm-processing-controlcomschema_name = dm_goldestatus = pending, indicando que determinado período está pronto para ser gerado na gold.
Essa abordagem permite rastreabilidade, reprocessamento e observabilidade granular, mantendo o pipeline escalável e auditável.
Assim como na silver, os períodos prontos para geração da gold são controlados pela tabela dm-processing-control no DynamoDB.
-
Acesse o serviço DynamoDB no AWS Console.
-
Vá até a tabela
dm-processing-control. -
Clique em Explore table items.
-
Aplique o filtro:
- Attribute name:
schema_name - Condition:
Equal to - Type:
String - Value:
dm_gold
- Attribute name:
-
Clique em Run.
Isso exibirá os períodos com status = pending, indicando que estão aguardando processamento da camada gold.
- O campo
created_atindica quando a silver concluiu o período. - Os campos
table_name,review_year,review_monthestatusajudam a identificar exatamente o que será processado. - O campo
compute_targetsegue como"emr".
Durante desenvolvimento ou reprocessamento, é possível disparar a execução da gold manualmente com o CLI:
>>> process --layer gold
Esse comando dispara a execução da Step Function dm-analytics-dispatcher, com base nos registros pendentes da camada dm_gold no DynamoDB.
- O comando não é síncrono. Ele apenas inicia a execução.
- A Step Function invoca um job Spark para cada tabela gold.
- Acesse o Step Functions no console da AWS.
- Clique em
dm-analytics-dispatcher. - Vá em Executions e localize a execução atual.
- Clique na execução para acompanhar em tempo real.
Cada tabela da camada gold é processada por um job Spark individual.
-
Acesse o serviço EMR no AWS Console.
-
Clique em EMR Serverless > Manage applications.
-
Selecione a aplicação
dm-analytics-app. -
Em Batch job runs, veja as execuções recentes.
-
Clique no Job Run ID desejado para detalhes:
- Tempo de execução
- Argumentos (ex:
--layer gold --table top_beers_by_rating) - Logs
- CPU/memória utilizada
Os dados processados são salvos em formato Iceberg, no bucket dm-datalake, particionados por review_year e review_month.
s3://dm-datalake-<account_id>/gold/<table_name>/
Exemplo para top_beers_by_rating:
gold/top_beers_by_rating/
├── metadata/
└── data/
├── review_year=YYYY/
│ └── review_month=MM/
│ └── *.parquet
Cada tabela contém:
- Diretório
metadata/com arquivos internos do Iceberg. - Diretório
data/com os arquivos Parquet particionados.
Após o processamento da camada gold, os dados ficam imediatamente disponíveis para consulta no Athena, via Glue Catalog.
- Acesse o Amazon Athena.
- Use o banco de dados
dm_gold. - Execute uma query de validação:
SELECT *
FROM dm_gold.top_beers_by_rating
WHERE review_year = 2010
AND review_month = 12
LIMIT 10;- Todas as tabelas seguem o padrão de particionamento
review_yearereview_month. - O formato Iceberg garante performance e controle de schema.
- As métricas e rankings são recalculadas sempre que a silver for atualizada.
A camada gold é composta por tabelas analíticas prontas para dashboards:
| Tabela | Descrição |
|---|---|
top_beers_by_rating |
Cervejas com melhores avaliações |
top_breweries_by_rating |
Cervejarias mais bem avaliadas |
state_by_review_volume |
Volume de reviews por estado |
top_styles_by_popularity |
Estilos mais populares |
top_drinkers |
Usuários com maior número de avaliações |
Todas são otimizadas para leitura e exploráveis via Athena ou conectores como Grafana.
Voltar para a página inicial | Próximo: DataViz e Observabilidade