08 _ [LAB Hotelaria] Construção da Camada Gold com Modelo Estrela, KPIs e Orquestração Otimizada
- Michel Souza Santana
- há 5 dias
- 9 min de leitura

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

![7 _ [LAB - Hotelaria] Construção da Camada Silver com Domínios, Contratos, Qualidade e Orquestração](https://static.wixstatic.com/media/430b63_a65d1572cf694a66a8c537c13ff977e1~mv2.png/v1/fill/w_980,h_653,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/430b63_a65d1572cf694a66a8c537c13ff977e1~mv2.png)
![6 _ [LAB - Hotelaria] Parametrização dos Contratos e Promoção Dev → Prod com Databricks Asset Bundles](https://static.wixstatic.com/media/430b63_3c070e62d4634d9c8861d8bd5da2ab5e~mv2.png/v1/fill/w_980,h_653,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/430b63_3c070e62d4634d9c8861d8bd5da2ab5e~mv2.png)
![5 _ [LAB - Hotelaria] Construção da Camada Bronze Append-Only com Databricks Asset Bundles](https://static.wixstatic.com/media/430b63_5f763c5f8c4c43cdb3871366ca98f195~mv2.png/v1/fill/w_980,h_980,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/430b63_5f763c5f8c4c43cdb3871366ca98f195~mv2.png)
Comentários