Enriquecimento de dados
1) Atribuição e valor de negócio
Enriquecimento transforma eventos «crus» em fatos úteis, adicionando contexto e sinais:- Finanças/relatórios: fx-normalização de quantias, vinculação a mercados/taxas fiscais, cálculo GGR/NGR.
- Complacência/AML/RG: simulações de risco, RG/RG RG, sinais comportamentais.
- Marketing/produto: fontes de tráfego, segmentos, missões/buscas, personalização.
- SRE/operações: geo/ASN para tráfego, tipo de cliente/dispositivo, fichflagra e lançamentos.
O resultado chave é melhorar a precisão dos modelos, a qualidade dos relatórios e a velocidade de tomada de decisões.
2) Fontes enriquecedoras (catálogo modelo)
Árbitro/catálogo: jogos, provedores, mercados/jurisdição, moedas, tabelas fiscais, calendário de feriados.
KYC/KYB/RG: Níveis de verificação, estatais, auto-exclusões, limites, grupos etários.
AML/sanções/PEP: hits de screening, listas, níveis de risco.
Redes e dispositivos: IP→geo/ASN, dispositivo/OS/navegador, device fingerprint.
Provedores de pagamento (PSP): tabelas BIN, métodos, MCC, marcas de risco.
FX/hora: taxas de câmbio na data do evento, fuso horário local/DST.
Conteúdo e marketing: fontes/campanhas/UTM, afiliados, segmentos.
Modelos e evristas: amostras pré-aprendidas, embeddings, muppings categóricos.
3) Tipos de enriquecimento
Lookup-joyn: mapeamento de ponto por chave (game _ id, BIN, ip _ range, user _ pseudo _ id).
Dimension attach: junção de medidas (dim.) para os factos.
Derived fields: colunas computáveis (amount _ base, local _ time, tax _ rate).
Agregações/velocity: contadores por janela (N apostas/min, valor de depósito/hora).
Risk/behavioral feures: «Tempo do último evento», share-of-wallet, atividade noturna.
Geo/ASN/Device: código de país, região, operadora, tipo de dispositivo/navegador.
Semantic mapings: classificação de provedores/jogos, cluster de jogadores.
Fici ML: sinais para simulação on-line/offline (Função Store).
4) Onde enriquecer: Batch vs Stream
Stream (real-time): antifrode, desencadeadores RG, alertas SRE - atrasos p95 ≤ 2-5 c; lookup em cachês (Redis/Scylla), consultas assíncrônicas a provedores com temporizadores.
Batch (micro-batches/diários): vitrines Gold (GGR/RG/AML), acréscimos, relatórios - estabilidade e cumplicidade são mais importantes do que a latência.
Híbrido: sinal online rápido + readaptação noturna (reconciação/accuracy).
5) Árbitro arquitetônico
1. Bronze - eventos crus (append-only).
2. Silver (clean/conform) - Normalização, chaves, lookup primário 'e (fx, geo, dim.) .
3. Enrichment Layer - sinais avançados, máquinas de janelas, marcas de risco.
4. Função Store - maiúscula de sinais (coerência online/offline).
5. Gold - vitrines sob BI/regulador/modelo; Artefactos imutáveis.
6. Serviços - API/GraphQL, relatórios, real-time alertas.
Componentes: Kafka/Redpanda, Flink/Spark/Beam, Redis/Scylla (lookup), ClickHouse/Pinot (leitura operacional), Lakehouse (Delta/Iceberg/Hudi).
6) Contratos e esquemas
Schema-first: 'event _ time', 'schema _ versão', chaves estáveis (user _ pseudo _ id, game _ id, mudança _ id).
Marca de enriquecimento: 'enrichment. version`, `enrichment. sources`, `fx_source`, `geo_source`, `model_version`.
Versionização: novos sinais são adicionados como nullable; alterações breaking - através de '/v2 'e dupla gravação.
7) Exemplos de enriquecimento (SQL/pseudocode)
7. 1 FX Normalização e Horário Local
sql
SELECT p.transaction_id,
p.amount_orig,
p.currency,
r.rate AS fx_rate_used,
p.amount_orig r.rate AS amount_base,
p.event_time,
convert_timezone(m.tz, 'UTC', p.event_time) AS local_time,
r.fx_source
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'
JOIN dim.markets m ON m.code = p.market;
7. 2 Geo/ASN por IP (pseudocode)
python geo = geo_db.lookup(ip)
asn = asn_db.lookup(ip)
record["geo_country"] = geo.country record["asn"] = asn.number record["enrichment"]["geo_source"] = "mmdb:2025-10-01"
7. 3 Sinais de janela de velocidade de depósito (stream)
sql
SELECT user_pseudo_id,
TUMBLE_START(event_time, INTERVAL '10' MINUTE) AS win_start,
COUNT() AS deposits_10m,
SUM(amount_base) AS deposits_sum_10m
FROM silver.payments
GROUP BY user_pseudo_id, TUMBLE(event_time, INTERVAL '10' MINUTE);
7. 4 Blend com limites RG
sql
SELECT b., r.daily_deposit_limit, r.self_exclusion
FROM silver.bets b
LEFT JOIN dim.rg_limits r USING (user_pseudo_id);
8) Qualidade do enriquecimento (DQ)
Regras mínimas:- FX: 'fx _ rate _ used' não NULL, 'fx _ fonte' de whitelist, calculado 'amount _ base ≥ 0'.
- Geo/ASN: Taxa de sucesso lookups ≥ 98% (mercados), 'country' no guia.
- RG/AML marcas: 'valid _ from/valid _ to' (SCD II) não se cruzam; Não há buracos na história.
- Máquinas/janelas: correção das janelas (sem dupla contabilidade), completeness ≥ 99. 5%.
- Versões de modelos de 'modelo _ versão' estão presentes, controlando a deriva de sinais.
yaml table: enriched.payments rules:
- name: fx_present type: not_null column: fx_rate_used severity: critical
- name: country_known type: in_set column: geo_country set_ref: ref.countries severity: major
- name: rg_scd_valid type: scd_validity columns: [valid_from, valid_to]
severity: major
9) Privacidade e complacência
Minimizar PII: enriqueça com pseudo-ID, e identifiquem reais em um circuito separado.
Geo-localização e residência: localização regional (EEA/UK/BR), chave de criptografia separada.
DSAR/PTBF: projeções enriquecidas devem manter «ocultação «/redação; guarde a base legal para exceções.
Legal Hold: congelamento de remoções para artefatos e malas relatadas.
10) Observabilidade e lineage
Linedge: de evento cru → lookup/equipamentos → vitrine/modelo; verifique versões de fontes ('fx _ fonte', 'geo _ fonte', 'bin _ fonte').
SLI/SLO: freshness p95 (Silver) ≤ 15 мин; geo-lookups bem-sucedidos ≥ 98%; A proporção de registros com sinais-chave preenchidos ≥ de 99%; latency enrich-strim p95 ≤ 2-5 s.
Dashboards: cartão térmico completeness por fontes, mapa de versões de guias/modelos, monitor «caro» join 'ov, à deriva de sinais.
11) Custo e desempenho
Cash/materialização: lookup 'e frequentes em Redis/Scylla; snapshot's periódicos.
Sinais compactos: armazene as máquinas (em vez de listas «cruas»); use Parquet/formatos invertebrados.
Particionamento: por data/mercado/tenante; clusterização em campos frequentemente filtrados.
Frequência adaptativa: enrich-jobs pesados - noites; realtime - apenas críticos.
Chargeback: contabilidade de custo/query e de custo/GB por comandos/fichas.
12) Pattern e anti-pattern
Pattern:- Dimension Lookup + SCD II para RG/KYC/provedores.
- Async Enrichment com temporizadores e fallback (marca «unknown» + repetição).
- Função Store com concordância online/offline e testes de reaproveitabilidade.
- Rule-as-Código para enriquecimento (liminares/cartões categóricos).
- Ancoramento rígido a APIs externas em uma via quente sem cachê.
- Versões não marcadas de fontes ('fx _ fonte', 'geo _ fonte').
- Denormalização «tudo com tudo» em Silver (explosões de custo/complexidade).
- Trazer PII para camadas analíticas.
13) Processos e RACI
R (Resolvível): Data Engineering (pipline enrich/stream), Domain Owners (semântica de sinais), MLops (Função Store).
A (Accountable): Head of Data / Chief Data Officer.
C (Consulted): Compliance/Legal/DPO, Finance (FX/налоги), Risk (RG/AML), SRE.
I (Informed): BI/Produto/Marketing/Operações.
14) Mapa de trânsito de implementação
MVP (2-4 semanas):1. Catálogo de fontes enriquecedoras (fx, geo, markets, RG/KYC).
2. Silver-normalização + lookup básico 'e (fx/geo/dim.) .
3. Primeiras unidades de velocity (depósitos/taxas) e enriched. v1 da tabela.
4. Dashboard completeness/freshness, versões de fontes.
Fase 2 (4-8 semanas):- Conecta sanções/RER/COVE, tabelas BIN PSP, device fingerprint.
- Função Store (núcleo de sinais) + dinheiro on-line, realtime-enriquecimento Flink.
- Regras DQ para a camada enrich, lineage e simulação «dry-run».
- Personalização (missões/buscas) e detectores RG/AML online.
- Gerenciamento de valor (quotas, materialização, Z-order), região multi.
- Geração automática de documentação de sinais e catálogo ("função cards').
15) Folha de cheque de qualidade antes de vender
- Chaves e esquemas concordantes, versões de fontes assinadas.
- Regras DQ para fx/geo/RG/sanções/janelas; alerts e SLO.
- Cachês/temporizadores e fallback para lookup 'ov externos.
- Linage e dashboards de custo/desempenho.
- Procedimentos DSAR/PTBF/Legal Hold para tabelas enriquecidas.
- Documentação de sinais (owner, fórmulas, SLO, influência).
16) Erros frequentes e como evitá-los
Versões de guias/modelos não definidas: Sempre capture '_ fonte' e 'modelo _ versão'.
Cálculo fx «retroativo»: use o curso no momento do evento; armazenem a fonte FX.
Mistura PII: Toquem e isolem os muppings.
A dupla contabilidade das unidades: verifique as janelas e os dados.
Chamadas externas sincronizadas sem cachê: digite async + dinheiro/retrai.
Sem reversibilidade, um único código de transformação online/offline, testes de conformidade.
17) Glossário (breve)
Lookup/Dimension attach - Conecta o guia ao fato por chave.
Função Store - minúsculas e sinais de servinga para ML.
SCD II - histórico de medições com intervalos de validade.
FX - taxas de câmbio e normalização de quantias.
ASN - sistema de rede autônomo; bom para antifrode e geo-analistas.
18) Total
O enriquecimento é uma disciplina para transformar eventos em conhecimento: chaves e esquemas alinhados, lookup 'e equipamentos controlados, fontes versionadas, privacidade padrão, DQ e observabilidade. Seguindo os patterns descritos, você receberá vitrines reproduzidas, econômicas e complicadas e sinais prontos para relatórios, personalização e detetores de risco real-time.