Processamento de dados em lote
1) Destino e valor
As linhas de montagem Batch formam vitrines diárias/horárias confiáveis para:- Relatórios Regulatórios e Financeiros (GGR/NGR, Impostos, RG/AML Registros).
- BI e analistas de alimentos (cômodos, LTV, vórtices de conversão).
- Precisão (OLTP↔DWH, provedores/PSP), histórico (SCD).
- Treinamento de fichas e kits de treinamento para ML.
Propriedades essenciais: previsibilidade, abrangência, reprodução, baixo custo por unidade de dados.
2) Arquitetura (árbitro)
1. Ingest (raw capture): HTTP/gRPC, CDC do OLTP, downloads do → Bronze.
2. Lakehouse: Bronze (raw, append-only) → Silver (clean/conform) → Gold (serve).
3. Orquestra: Airflow/Dagster/Preferect (DAG 'e, dependentes, retraí, SLA).
4. Processamento: Spark/Trino/DBT/SQL; partitização e formatos ACID (Delta/Iceberg/Hudi).
5. DQ e Contratos: Schema Registry, DQ (YAML/SQL), consumer-tests.
6. Serving: camada BI/semântica, exportação de relatório (CSV/PDF/JSON + hash), API/GraphQL.
7. Observabilidade: métricas de piplins, lineage, logs, custo (vale/GB, vale/query).
3) Frequências e SLAs
Diárias (D + 1 até 06:00 lock.) : relatórios da GGR, descargas regulatórias, acréscimos.
Painéis de operação para Ops/Finanças por hora/quasirealtaim.
Semanas/mensais: finconsolidação, modelos e retroprocessos.
- As vitrines gold-diárias estão prontas até às 06:00 locais.
- Freshness Silver p95 ≤ 15 min para microatches/ ≤ 2h para diurnos.
- Completeness ≥ 99. 5%, Validity (esquema) ≥ 99. 9%.
4) Downloads incorporados e CDC
Abordagens:- CDC (Mudança Data Capture): Debezium/logo replicador → Bronze → encartes no Silver.
- Watermark hora: 'updated _ at> max _ loaded _ ts'.
- Comparação hash: 'md5 (row)' para o detalhe de alterações.
- Upsert/Merge: atualizações idumpotentes Silver/Gold.
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD (histórico de medições)
SCD I: reiniciar (ortografia, correções menores).
SCD II: histórico completo ('valid _ from/valid _ to/is _ current').
SCD III: «antes/depois» para comparações curtas.
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);
6) Backfill и Reprocessing
Backfill: preenchimento primário/histórico.
Reprocessing: redefinindo as vitrines após a edição da lógica/correção de dados.
- Idempotidade (MERGE/upsert), imutabilidade Bronze, versionização da lógica.
- Time-travel para reaproveitamento; Os metadados.
- Guardrails: limitação de faixas, quotas e concorrências.
- Documentação: runbook com passos e critérios de conclusão.
7) Simulação de camadas
Bronze:- Append-only, partições 'event _ data', 'jurisdicção', 'tenant'.
- Armazenando o payload original (para forense), registrando 'ingested _ at'.
- Normalização e normalização: FK/guias, deadup, FX/temporizões.
- Tabelas de factos/medidas (3NF/BCNF), SCD para medidas-chave.
- Vitrines denormalizadas sob BI/regulador/finanças, SLA pronto.
- Materialização das unidades; artefatos imutáveis de exportação (hash + WORM).
8) Qualidade dos dados (DQ-como-código)
Exemplo de regras YAML para Silver:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
Políticas de reação: critical → fail job + DLQ; major/menor → marca + relatório.
9) Camada semântica e relatórios
Definições de métricas (GGR/NGR, ARPU, Retenção) em semantic-layer/metrics-store.
Versionização de métricas; integração com BI/pacotes de exportação.
Relatórios: CSV/JSON/PDF + sha256, registro de descarga e Legal Hold, se necessário.
10) Privacidade, residência, segurança
PII Minimização: pseudônimo dos usuários; mapping - em um circuito protegido separado.
Data residency: diretórios/chaves separados por EEA/UK/BR; proibição de join's cruzados sem base legal.
Criptografia: TLS in-transit; KMS/CMK at-rest; Controle de exportação.
DSAR/PTBF: projeções computáveis, edições seletivas; auditoria de acessibilidade.
Legal Hold: arquivos WORM para artefatos regulatórios.
11) Desempenho e custo
Particionamento por data/mercado/tenante; Z-order/cluster por predicado frequente.
Formatos: Parquet + tabelas ACID; compressão/estatística, OPTIMIZE/VACUUM.
Materialização: agregações estáveis na Gold; evitar os «monolíticos» jobs.
Quotas/orçamentos: marceback por comandos; limites para backfill/pedidos pesados.
Planejamento: janelas de baixa carga (noite/fim de semana), prioridades de filas.
12) Observabilidade e controle
Métricas de pipas: duration, sucess rate, retries, rows processed, cost/query.
Métricas DQ: completeness, validity, uniqueness, erros FK, draft.
Freshness heatmap: domínios e mercados; SLA-dashboard.
Lineage: origem de Bronze a relatórios; Análise de impact antes das alterações.
Alerts: orçamentos SLO, degradação da DQ, atrasos, aumento do custo.
13) Exemplos de SQL/modelos
Normalização de moedas (Silver):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
FROM bronze. payment_events p
JOIN dim. fx_rates r
ON r. date = DATE(p. event_time)
AND r. ccy_from = p. currency AND r. ccy_to = 'EUR';
Vitrine diária GGR (Gold):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
Controle de totalidade (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14) Processos e RACI
R (Resolvível): Data Engineering (DAG 'i, modelos Silver/Gold), Data Platford (Infra, Minúsculas, DQ).
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO (PII/retention), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/Produto/Marketing/Operações.
15) Mapa de trânsito de implementação
MVP (4-6 semanas):1. Lakehouse Bronze/Silver (formato ACID), CDC/encartes para 2-3 domínios.
2. DQ-como-código: 10-15 regras para Payments/Gamplay + CI-validação.
3. Primeira vitrine Gold (GGR Daily) com SLA até as 06:00; exportação em estudo + hash.
4. Dashboards Freshness/Completeness/Costa, alertas básicos.
Fase 2 (6-12 semanas):- SCD II для users/games/providers; extensão de domínios.
- Camada semântica de métricas; convênios com provedores OLTP/accuracy.
- Procedimentos backfill/reprocessing, lineage e análise de impacto, regionalização (EEA/UK).
- Ajuste automático de alterações (dry-run), orçamentos/quotas, chargeback.
- Documentação automática (data product pages), ensinamentos DR e time-travel-restauração.
- Otimização de custo (clusterização, materialização, TTL, vácuo).
16) Folha de cheque antes de vender
- Contratos e circuitos em Registry, testes de compatibilidade são verdes.
- Os downloads incorporados/CDC estão funcionando, o MERGE é idimpotente.
- As regras DQ estão ativas; critical → fail + DLQ; Relatório de violações.
- SLA/dashboards de frescura/plenitude; Os aleres estão bem.
- As políticas PII/DSAR/PHILBF/Legal Hold estão confirmadas Legal/DPO.
- Runbook 'e backfill/reprocessing/DR. testados.
- Custo sob controle (costa/query, custo/GB, quouts).
17) Anti-pattern e como evitar
Job noturno monolítico, fracione em passos independentes paralelos às partições.
Full-reload sem necessidade: use encartes/CDC/merjee.
Misto de PII no analista: mantenha os muppings separados, aplique o CLS/RLS.
Falta de DQ/lineage: digite DQ-de-forma e rastreie a origem.
Backfill manual: automatize e documente e limite as faixas.
Custo descontrolado: clusterização, materialização, políticas de retenção.
18) Glossário (breve)
CDC - Capturar alterações do OLTP.
SCD - Dimensões que mudam lentamente (I/II/III).
Lakehouse - data lake + tabelas ACID.
MERGE/Upsert - Operações de atualização idimpotentes.
Time-travel - leitura de versões históricas de tabelas.
WORM - armazenamento imutável de artefatos.
19) Resultado
O processamento em lote é uma disciplina de linhas de montagem previsíveis, reproduzíveis e complicadas. Seguindo os princípios schema-first, incorporações/CDC, histórico SCD, DQ-de-forma, observabilidade e economia consciente, você receberá vitrines Gold estáveis e relatórios testados e prontos para auditoria a qualquer momento.