top of page

08 _ [LAB Hotelaria] Construção da Camada Gold com Modelo Estrela, KPIs e Orquestração Otimizada


Após concluirmos as camadas Landing, Bronze e Silver, avançamos para a construção da camada Gold do laboratório.

Até este ponto, o pipeline já estava estruturado assim:

Neon PostgreSQL
    ↓
Databricks Lakehouse Federation
    ↓
Landing em Unity Catalog Volume
    ↓
Bronze append-only em Delta
    ↓
Silver por domínios, com qualidade, quarentena, SCD Tipo 1 e SCD Tipo 2

A Gold foi criada como a camada de consumo analítico, orientada a KPIs, modelo estrela, dimensões, fatos e perguntas de negócio.

A arquitetura final passou a ser:

Neon PostgreSQL
    ↓
Landing
    ↓
Bronze
    ↓
Silver
    ↓
Gold
    ↓
BI / Dashboards / Analytics

1. Objetivo da camada Gold

A camada Gold não foi criada apenas como uma cópia agregada da Silver. Ela foi pensada como uma camada analítica, pronta para responder perguntas de negócio.

A Silver mantém os dados tratados, padronizados e confiáveis. A Gold organiza esses dados para consumo analítico.

A Gold deve entregar:

dimensões
fatos
métricas
indicadores
KPIs
modelo estrela
tabelas prontas para BI

Enquanto a Silver responde à pergunta:

Os dados estão limpos, confiáveis e conformados?

A Gold responde:

Quais indicadores o negócio precisa acompanhar?

2. Organização da Gold por domínios analíticos

Assim como fizemos na Silver, optamos por organizar a Gold por domínio. Porém, na Gold os domínios são mais analíticos e orientados ao consumo.

Foram criados os seguintes schemas:

hotelaria_dev.gold_dimensoes
hotelaria_dev.gold_comercial
hotelaria_dev.gold_operacional
hotelaria_dev.gold_financeiro
hotelaria_dev.gold_cliente

E também em produção:

hotelaria_prod.gold_dimensoes
hotelaria_prod.gold_comercial
hotelaria_prod.gold_operacional
hotelaria_prod.gold_financeiro
hotelaria_prod.gold_cliente

Essa separação melhora:

organização semântica
governança
clareza para consumo
facilidade para BI
evolução futura dos domínios

3. Setup dos schemas Gold

Criamos os arquivos SQL:

sql/setup/02_setup_gold_dev.sql
sql/setup/02_setup_gold_prod.sql

Para desenvolvimento:

create schema if not exists hotelaria_dev.gold_dimensoes;
create schema if not exists hotelaria_dev.gold_comercial;
create schema if not exists hotelaria_dev.gold_operacional;
create schema if not exists hotelaria_dev.gold_financeiro;
create schema if not exists hotelaria_dev.gold_cliente;

Para produção:

create schema if not exists hotelaria_prod.gold_dimensoes;
create schema if not exists hotelaria_prod.gold_comercial;
create schema if not exists hotelaria_prod.gold_operacional;
create schema if not exists hotelaria_prod.gold_financeiro;
create schema if not exists hotelaria_prod.gold_cliente;

Com isso, deixamos a camada Gold preparada tanto para dev quanto para prod.


4. Contratos Gold

Seguindo o padrão adotado nas camadas anteriores, também criamos contratos para a Gold.

A estrutura criada foi:

contracts/gold/
├── dimensoes
│   ├── dim_tempo.yml
│   ├── dim_hotel.yml
│   ├── dim_hospede.yml
│   └── dim_quarto.yml
├── comercial
│   ├── fato_reservas.yml
│   └── fato_consumos.yml
├── operacional
│   └── fato_ocupacao.yml
├── financeiro
│   └── fato_faturamento.yml
└── cliente
    └── fato_comportamento_hospede.yml

Os contratos Gold descrevem:

tabela destino
domínio
grão analítico
fonte
dimensões relacionadas
medidas
métricas derivadas
regras de qualidade
perguntas de negócio

Diferente da Silver, onde os contratos descrevem transformação, qualidade e SCD, na Gold os contratos são mais orientados a modelo analítico e indicadores.


5. Diferença entre contratos Bronze, Silver e Gold

Bronze

O contrato descreve:

origem
Landing
Bronze
watermark
schema bruto esperado

Silver

O contrato descreve:

source Bronze
target Silver
colunas finais
transformações
deduplicação
SCD Tipo 1 ou Tipo 2
qualidade
quarentena

Gold

O contrato descreve:

grão da tabela
dimensões
medidas
métricas
perguntas de negócio
modelo de consumo

Essa separação deixa o projeto mais governável e próximo de um ambiente real.


6. Dimensões criadas

As dimensões foram criadas no schema:

hotelaria_dev.gold_dimensoes

Tabelas:

dim_tempo
dim_hotel
dim_hospede
dim_quarto

6.1 dim_tempo

Contrato:

contracts/gold/dimensoes/dim_tempo.yml

A dim_tempo é uma dimensão calendário gerada via Spark, com intervalo definido no contrato:

date_range:
  start_date: "2020-01-01"
  end_date: "2035-12-31"

Colunas principais:

sk_tempo
data
ano
semestre
trimestre
mes
nome_mes
ano_mes
dia
dia_semana
nome_dia_semana
semana_ano
fl_fim_de_semana

Essa dimensão permite análises por:

dia
mês
ano
trimestre
semana
fim de semana
período

6.2 dim_hotel

Origem:

hotelaria_dev.silver_cadastros.hotel

Destino:

hotelaria_dev.gold_dimensoes.dim_hotel

Grão:

uma linha por hotel atual

A dimensão utiliza somente registros atuais da Silver:

_metadata_is_current = true

Colunas principais:

sk_hotel
hotel_id
nome_hotel
cidade
estado
categoria_hotel
tipo_hotel
estrelas
faixa_classificacao_hotel
numero_quartos
capacidade_total
fl_hotel_com_acessibilidade
densidade_quartos_por_funcionario

Perguntas que ajuda a responder:

Qual hotel gera mais receita?
Qual cidade possui maior ocupação?
Hotéis de maior classificação possuem maior ticket médio?

6.3 dim_hospede

Origem:

hotelaria_dev.silver_cadastros.hospede

Destino:

hotelaria_dev.gold_dimensoes.dim_hospede

Grão:

uma linha por hóspede atual

Colunas principais:

sk_hospede
hospede_id
nome_completo
estado
nacionalidade
programa_fidelidade
faixa_fidelidade
fl_possui_programa_fidelidade
fl_viajante_frequente
fl_possui_restricao_alimentar
total_hospedagens

Na Gold, deixamos claro que dados sensíveis ou pessoais devem ser evitados quando não forem necessários para análise.

Por isso, o contrato documenta exclusões como:

privacy:
  exclude_from_gold:
    - cpf
    - email
    - telefone
    - numero_documento

Perguntas que ajuda a responder:

Clientes fidelidade gastam mais?
Qual perfil de hóspede consome mais?
Quais hóspedes são mais recorrentes?

6.4 dim_quarto

Origem:

hotelaria_dev.silver_cadastros.quarto

Destino:

hotelaria_dev.gold_dimensoes.dim_quarto

Grão:

uma linha por quarto atual

Colunas principais:

sk_quarto
quarto_id
hotel_id
numero_quarto
tipo_quarto
capacidade_maxima
preco_diaria_base
faixa_preco_diaria
andar
vista
fl_possui_ar_condicionado
fl_quarto_smoke_free
fl_quarto_com_kit_boas_vindas
fl_quarto_em_manutencao

Perguntas que ajuda a responder:

Quais tipos de quarto possuem maior ocupação?
Quartos premium geram maior receita?
Quartos em manutenção afetam disponibilidade?

7. Fatos criadas

Foram criadas cinco fatos:

hotelaria_dev.gold_comercial.fato_reservas
hotelaria_dev.gold_comercial.fato_consumos
hotelaria_dev.gold_financeiro.fato_faturamento
hotelaria_dev.gold_operacional.fato_ocupacao
hotelaria_dev.gold_cliente.fato_comportamento_hospede

Cada fato foi construída com base nas perguntas de negócio que queremos responder.


8. fato_reservas

Contrato:

contracts/gold/comercial/fato_reservas.yml

Origem:

hotelaria_dev.silver_reservas.reserva

Destino:

hotelaria_dev.gold_comercial.fato_reservas

Grão:

uma linha por reserva

Dimensões relacionadas:

dim_hotel
dim_hospede
dim_quarto
dim_tempo_reserva
dim_tempo_checkin
dim_tempo_checkout

Medidas principais:

qtd_reservas
qtd_noites
qtd_hospedes
valor_total_estadia
valor_diaria_media
dias_antecedencia_reserva
fl_reserva_cancelada
fl_reserva_confirmada
fl_reserva_finalizada

Métrica derivada:

valor_ticket_medio_reserva

KPIs que responde:

total de reservas
valor total de estadias
ticket médio de reserva
diária média
taxa de cancelamento
antecedência média de reserva
reservas por hotel
reservas por período

9. fato_consumos

Contrato:

contracts/gold/comercial/fato_consumos.yml

Origem:

hotelaria_dev.silver_consumos.consumo

Destino:

hotelaria_dev.gold_comercial.fato_consumos

Grão:

uma linha por consumo

Dimensões relacionadas:

dim_hotel
dim_hospede
dim_tempo_consumo

Medidas principais:

qtd_consumos
quantidade
valor_total_consumo
valor_unitario_consumo
fl_consumo_alimentacao
fl_consumo_servico

Métrica derivada:

ticket_medio_consumo

KPIs que responde:

receita total de consumos
ticket médio de consumo
consumo por categoria
serviços mais consumidos
receita adicional por hotel
consumo por hóspede

10. fato_faturamento

Contrato:

contracts/gold/financeiro/fato_faturamento.yml

Origem:

hotelaria_dev.silver_financeiro.fatura

Destino:

hotelaria_dev.gold_financeiro.fato_faturamento

Grão:

uma linha por fatura

Dimensões relacionadas:

dim_hospede
dim_tempo_emissao
dim_tempo_vencimento
dim_tempo_pagamento

Medidas principais:

qtd_faturas
valor_total
valor_total_calculado
valor_liquido
subtotal_estadia
subtotal_consumos
descontos
impostos
fl_fatura_paga
fl_fatura_pendente
fl_fatura_cancelada
dias_ate_pagamento

Métrica derivada:

ticket_medio_fatura

KPIs que responde:

receita total
receita líquida
valor médio por fatura
total de faturas pendentes
total de faturas pagas
tempo médio até pagamento
total de descontos
total de impostos

11. fato_ocupacao

Contrato:

contracts/gold/operacional/fato_ocupacao.yml

Origem:

hotelaria_dev.silver_reservas.reserva

Destino:

hotelaria_dev.gold_operacional.fato_ocupacao

Grão:

uma linha por quarto ocupado por data

Essa fato possui uma transformação especial. Uma reserva com várias noites é expandida em múltiplas linhas, uma por data de ocupação.

Exemplo:

Reserva com check-in em 2026-01-01 e checkout em 2026-01-04

Gera:

2026-01-01
2026-01-02
2026-01-03

A data do checkout não entra como diária ocupada, pois normalmente representa o dia de saída.

Regras aplicadas:

data_checkin não nula
data_checkout não nula
data_checkout maior que data_checkin
reserva não cancelada

Dimensões relacionadas:

dim_hotel
dim_quarto
dim_tempo_ocupacao

Medidas principais:

qtd_quartos_ocupados
fl_ocupado

KPIs que responde:

ocupação por hotel
ocupação por data
ocupação por tipo de quarto
diárias ocupadas
períodos de maior demanda

12. fato_comportamento_hospede

Contrato:

contracts/gold/cliente/fato_comportamento_hospede.yml

Destino:

hotelaria_dev.gold_cliente.fato_comportamento_hospede

Grão:

uma linha por hóspede

Essa fato é diferente das demais porque não vem de uma única tabela Silver. Ela é uma fato agregada construída a partir das tabelas Gold:

gold_dimensoes.dim_hospede
gold_comercial.fato_reservas
gold_comercial.fato_consumos
gold_financeiro.fato_faturamento

Métricas principais:

total_reservas
total_reservas_canceladas
total_noites
total_gasto_estadia
total_gasto_consumos
total_faturado
total_pago
ticket_medio_reserva
ticket_medio_consumo
taxa_cancelamento_cliente
fl_cliente_recorrente

KPIs que responde:

clientes mais valiosos
clientes recorrentes
ticket médio por hóspede
clientes fidelidade gastam mais?
hóspedes com maior taxa de cancelamento
hóspedes com maior consumo adicional

13. Loader Silver → Gold

Criamos o loader:

src/gold/load_silver_to_gold.py

Responsabilidades:

ler contrato Gold
resolver source e target com target_catalog
gerar dim_tempo
ler fontes Silver ou Gold
aplicar filtros
selecionar colunas
fazer joins com dimensões
calcular medidas
calcular métricas derivadas
aplicar regras simples de qualidade
gravar tabela Gold

Parâmetros via widgets:

target_catalog
domain
table_name

Exemplo:

target_catalog = hotelaria_dev
domain = comercial
table_name = fato_reservas

14. Estratégias de carga da Gold

Até este ponto, usamos estratégias simples:

overwrite
overwrite_current

overwrite

Usado para fatos e dim_tempo.

Motivo:

As tabelas Gold são reconstruídas a partir das camadas anteriores.

overwrite_current

Usado nas dimensões baseadas em entidades atuais da Silver.

Exemplo:

dim_hotel
dim_hospede
dim_quarto

Motivo:

A Gold usa somente o estado atual das dimensões para análise corrente.
O histórico permanece preservado na Silver SCD Tipo 2.

15. Modelo estrela criado

A Gold foi desenhada em modelo estrela.

Dimensões compartilhadas:

gold_dimensoes.dim_tempo
gold_dimensoes.dim_hotel
gold_dimensoes.dim_hospede
gold_dimensoes.dim_quarto

Fatos:

gold_comercial.fato_reservas
gold_comercial.fato_consumos
gold_financeiro.fato_faturamento
gold_operacional.fato_ocupacao
gold_cliente.fato_comportamento_hospede

Desenho lógico:

dim_hotel      dim_hospede      dim_quarto      dim_tempo
    \              |               /              /
     \             |              /              /
              fato_reservas

dim_hotel      dim_hospede      dim_tempo
    \              |              /
             fato_consumos

dim_hospede    dim_tempo
    \              /
          fato_faturamento

dim_hotel      dim_quarto       dim_tempo
    \              |              /
             fato_ocupacao

dim_hospede
    |
fato_comportamento_hospede

16. Testes dos contratos Gold

Criamos testes em:

tests/contracts/gold/test_gold_contracts.py

Os testes validam:

existência de contratos Gold
chaves obrigatórias
parametrização com target_catalog
estratégia de carga válida
colunas definidas
perguntas de negócio
measures para fatos
dimensions para fatos

Comando usado:

pytest tests/contracts/gold/test_gold_contracts.py

Ou:

pytest tests/contracts

Esse teste ajuda a garantir que novas tabelas Gold sigam o padrão definido.


17. Job Silver → Gold

Criamos o job:

resources/jobs/job_silver_to_gold.yml

Fluxo:

gold_dim_tempo
    ↓
gold_dim_hotel
    ↓
gold_dim_hospede
    ↓
gold_dim_quarto
    ↓
gold_fato_reservas
    ↓
gold_fato_consumos
    ↓
gold_fato_faturamento
    ↓
gold_fato_ocupacao
    ↓
gold_fato_comportamento_hospede

Esse job foi útil para testar a Gold de forma isolada:

databricks bundle run silver_to_gold --target dev --profile hotelaria-free

18. Otimização do orquestrador completo

Depois de validar a Gold, revisamos o job orquestrador.

A primeira versão estava muito linear:

hotel → hospede → quarto → reserva → reserva_ota → consumo → fatura → gold...

Isso funciona, mas não representa bem um pipeline real. A Silver não precisa esperar uma tabela terminar para iniciar outra, desde que todas dependam apenas da Bronze.

Então otimizamos o orquestrador para executar tarefas em paralelo sempre que possível.


19. Novo desenho do orquestrador

A nova estrutura ficou:

source_to_landing
    ↓
landing_to_bronze
    ↓
Silver em paralelo
    ↓
Gold dimensões conforme dependência
    ↓
Gold fatos conforme dependência real
    ↓
Gold cliente agregada

19.1 Silver em paralelo

Após a Bronze, todas as tabelas Silver podem rodar em paralelo:

landing_to_bronze
    ├── bronze_to_silver_hotel
    ├── bronze_to_silver_hospede
    ├── bronze_to_silver_quarto
    ├── bronze_to_silver_reserva
    ├── bronze_to_silver_reserva_ota
    ├── bronze_to_silver_consumo
    └── bronze_to_silver_fatura

19.2 Gold dimensões com dependência real

As dimensões dependem apenas das respectivas tabelas Silver:

gold_dim_hotel
    depende de bronze_to_silver_hotel

gold_dim_hospede
    depende de bronze_to_silver_hospede

gold_dim_quarto
    depende de bronze_to_silver_quarto

gold_dim_tempo
    não depende diretamente da Silver

19.3 Gold fatos com dependência real

Exemplos:

fato_reservas depende de:
  bronze_to_silver_reserva
  gold_dim_hotel
  gold_dim_hospede
  gold_dim_quarto
  gold_dim_tempo
fato_consumos depende de:
  bronze_to_silver_consumo
  gold_dim_hotel
  gold_dim_hospede
  gold_dim_tempo
fato_faturamento depende de:
  bronze_to_silver_fatura
  gold_dim_hospede
  gold_dim_tempo
fato_ocupacao depende de:
  bronze_to_silver_reserva
  gold_dim_hotel
  gold_dim_quarto
  gold_dim_tempo
fato_comportamento_hospede depende de:
  gold_dim_hospede
  gold_fato_reservas
  gold_fato_consumos
  gold_fato_faturamento

20. Orquestrador final

Arquivo:

resources/jobs/job_orchestrator_etl.yml

Descrição:

Orquestrador ETL ponta a ponta otimizado:
Source → Landing → Bronze → Silver → Gold

O job principal do projeto passa a ser:

databricks bundle run orchestrator_etl --target dev --profile hotelaria-free

Esse job executa o pipeline completo até a camada Gold, respeitando paralelismo e dependências reais.


21. Validações da Gold


21.1 Validar tabelas por domínio

show tables in hotelaria_dev.gold_dimensoes;
show tables in hotelaria_dev.gold_comercial;
show tables in hotelaria_dev.gold_financeiro;
show tables in hotelaria_dev.gold_operacional;
show tables in hotelaria_dev.gold_cliente;

Resultado esperado:

gold_dimensoes:
  dim_tempo
  dim_hotel
  dim_hospede
  dim_quarto

gold_comercial:
  fato_reservas
  fato_consumos

gold_financeiro:
  fato_faturamento

gold_operacional:
  fato_ocupacao

gold_cliente:
  fato_comportamento_hospede

21.2 Contagem geral

select 'gold_dimensoes.dim_tempo' as tabela, count(*) as total
from hotelaria_dev.gold_dimensoes.dim_tempo

union all

select 'gold_dimensoes.dim_hotel', count(*)
from hotelaria_dev.gold_dimensoes.dim_hotel

union all

select 'gold_dimensoes.dim_hospede', count(*)
from hotelaria_dev.gold_dimensoes.dim_hospede

union all

select 'gold_dimensoes.dim_quarto', count(*)
from hotelaria_dev.gold_dimensoes.dim_quarto

union all

select 'gold_comercial.fato_reservas', count(*)
from hotelaria_dev.gold_comercial.fato_reservas

union all

select 'gold_comercial.fato_consumos', count(*)
from hotelaria_dev.gold_comercial.fato_consumos

union all

select 'gold_financeiro.fato_faturamento', count(*)
from hotelaria_dev.gold_financeiro.fato_faturamento

union all

select 'gold_operacional.fato_ocupacao', count(*)
from hotelaria_dev.gold_operacional.fato_ocupacao

union all

select 'gold_cliente.fato_comportamento_hospede', count(*)
from hotelaria_dev.gold_cliente.fato_comportamento_hospede

order by tabela;

22. KPIs possíveis com a Gold


Comercial

total de reservas
reservas confirmadas
reservas canceladas
taxa de cancelamento
ticket médio da reserva
diária média
antecedência média da reserva
receita estimada por reserva
reservas por hotel
reservas por cidade

Consumos

receita total de consumos
ticket médio de consumo
consumo por categoria
serviços mais consumidos
consumo por hotel
consumo por hóspede
participação de alimentação nos consumos

Financeiro

receita total
receita líquida
valor médio por fatura
faturas pagas
faturas pendentes
tempo médio até pagamento
total de impostos
total de descontos

Operacional

diárias ocupadas
ocupação por hotel
ocupação por tipo de quarto
ocupação por cidade
dias de maior demanda
quartos ocupados por período

Cliente

clientes mais valiosos
clientes recorrentes
ticket médio por hóspede
gasto por faixa de fidelidade
taxa de cancelamento por cliente
consumo adicional por hóspede

23. Exemplos de consultas analíticas

Taxa de cancelamento

select
    sum(qtd_reservas) as total_reservas,
    sum(fl_reserva_cancelada) as reservas_canceladas,
    round(
        sum(fl_reserva_cancelada) / nullif(sum(qtd_reservas), 0) * 100,
        2
    ) as taxa_cancelamento_pct
from hotelaria_dev.gold_comercial.fato_reservas;

Reservas por hotel

select
    h.nome_hotel,
    h.cidade,
    h.estado,
    sum(f.qtd_reservas) as total_reservas,
    sum(f.valor_total_estadia) as valor_total_estadia,
    avg(f.valor_diaria_media) as diaria_media
from hotelaria_dev.gold_comercial.fato_reservas f
left join hotelaria_dev.gold_dimensoes.dim_hotel h
    on f.sk_hotel = h.sk_hotel
group by
    h.nome_hotel,
    h.cidade,
    h.estado
order by valor_total_estadia desc;

Receita por categoria de consumo

select
    categoria_consumo,
    sum(qtd_consumos) as total_consumos,
    sum(valor_total_consumo) as valor_total_consumo,
    avg(ticket_medio_consumo) as ticket_medio_consumo
from hotelaria_dev.gold_comercial.fato_consumos
group by categoria_consumo
order by valor_total_consumo desc;

Faturamento geral

select
    sum(qtd_faturas) as total_faturas,
    sum(valor_total) as receita_total,
    sum(valor_liquido) as receita_liquida,
    sum(fl_fatura_paga) as faturas_pagas,
    sum(fl_fatura_pendente) as faturas_pendentes,
    avg(dias_ate_pagamento) as media_dias_pagamento
from hotelaria_dev.gold_financeiro.fato_faturamento;

Ocupação por hotel

select
    h.nome_hotel,
    h.cidade,
    h.estado,
    count(*) as diarias_ocupadas,
    sum(o.qtd_quartos_ocupados) as quartos_ocupados
from hotelaria_dev.gold_operacional.fato_ocupacao o
left join hotelaria_dev.gold_dimensoes.dim_hotel h
    on o.sk_hotel = h.sk_hotel
group by
    h.nome_hotel,
    h.cidade,
    h.estado
order by diarias_ocupadas desc;

Clientes mais valiosos

select
    hospede_id,
    nome_completo,
    faixa_fidelidade,
    total_reservas,
    total_gasto_estadia,
    total_gasto_consumos,
    total_faturado,
    total_pago
from hotelaria_dev.gold_cliente.fato_comportamento_hospede
order by total_faturado desc
limit 10;

Recorrência de clientes

select
    count(*) as total_hospedes,
    sum(fl_cliente_recorrente) as clientes_recorrentes,
    round(
        sum(fl_cliente_recorrente) / nullif(count(*), 0) * 100,
        2
    ) as percentual_clientes_recorrentes
from hotelaria_dev.gold_cliente.fato_comportamento_hospede;

24. Validação e deploy

Comandos usados durante a construção:

python3 -m py_compile src/gold/load_silver_to_gold.py
pytest tests/contracts
databricks bundle validate --target dev --profile hotelaria-free
databricks bundle deploy --target dev --profile hotelaria-free
databricks bundle run silver_to_gold --target dev --profile hotelaria-free

Depois da otimização do orquestrador:

databricks bundle run orchestrator_etl --target dev --profile hotelaria-free

25. Estado final do pipeline

Com a Gold concluída, o pipeline ficou completo:

Neon PostgreSQL
    ↓
Databricks Lakehouse Federation
    ↓
Landing em Unity Catalog Volume
    ↓
Bronze append-only
    ↓
Silver por domínios
    ↓
Gold modelo estrela

Com controles:

hotelaria_dev.control.ingestion_watermark
hotelaria_dev.control.processed_files
hotelaria_dev.control.data_quality_issues

Com camadas:

hotelaria_dev.landing
hotelaria_dev.bronze
hotelaria_dev.silver_cadastros
hotelaria_dev.silver_reservas
hotelaria_dev.silver_consumos
hotelaria_dev.silver_financeiro
hotelaria_dev.gold_dimensoes
hotelaria_dev.gold_comercial
hotelaria_dev.gold_operacional
hotelaria_dev.gold_financeiro
hotelaria_dev.gold_cliente

26. Decisão arquitetural final da Gold

A Gold foi consolidada com as seguintes decisões:

modelo estrela
dimensões compartilhadas
fatos orientadas a KPIs
contratos Gold por tabela
perguntas de negócio documentadas
métricas derivadas
fato de ocupação explodida por diária
fato agregada de comportamento de hóspede
schemas por domínio analítico
orquestrador otimizado com paralelismo

27. Resultado alcançado

Com essa etapa, o laboratório passa a ter um pipeline completo e bem próximo de um cenário real:

Source → Landing → Bronze → Silver → Gold

Com:

Databricks Asset Bundles
GitHub Actions
contratos por camada
controle de watermark
controle de arquivos processados
Bronze append-only
Silver com qualidade, quarentena, SCD Tipo 1 e Tipo 2
Gold com dimensões, fatos e KPIs
orquestrador otimizado por dependências reais
estrutura dev/prod parametrizada

A partir daqui, o projeto já pode ser usado como base para:

portfólio técnico
documentação no GitHub
post no LinkedIn
dashboard em Power BI
validação de arquitetura Lakehouse
estudos de CI/CD com Databricks
simulação realista de projeto de engenharia de dados

 
 
 

Comentários


bottom of page