4ª Etapa – Glossário de negócio, dicionário de dados e diagnóstico de qualidade de metadados
Missão: produzir o arquivo 04_glossario_e_dicionario.xlsx com as abas Glossario, Dicionario_Dados, Linhagem, Diagrama_Linhagem, Diagnostico_Metadados e Plano_Acao, além do diagrama no Draw.io (exportado em PNG) e do script Python no Google Colab.
Missão 1 – Glossário de Negócio (aba Glossario)
Pelo menos 12 termos de negócio do SwiftBank, com: nome, definição, contexto de uso, responsável (Owner), domínio, termos relacionados e status.
| Nome | Definição | Contexto de uso | Responsável (Owner) | Domínio | Termos relacionados | Status |
|---|---|---|---|---|---|---|
| Cliente Ativo | Pessoa física ou jurídica que realizou ao menos uma transação efetivada nos últimos 90 dias. | Segmentação de campanhas, cálculo de receita recorrente, metas comerciais. | Ana Ribeiro (Diretora de Clientes) | Clientes | Cliente PF, Cliente PJ, Transação Efetivada | aprovado |
| Cliente PF | Cliente pessoa física, identificado por CPF. | Produtos de varejo, crédito pessoal, cartões. | Ana Ribeiro (Diretora de Clientes) | Clientes | Cliente Ativo, Score de Crédito, Dado Pessoal Sensível | aprovado |
| Cliente PJ | Cliente pessoa jurídica, identificado por CNPJ. | Produtos corporativos, empréstimos, adquirência. | Ana Ribeiro (Diretora de Clientes) | Clientes | Cliente Ativo, Empréstimo | aprovado |
| Conta Corrente | Conta de depósito à vista que permite movimentação por meio de transações. | Origem de transações, base para cálculo de saldo e receita. | Carlos Menezes (Diretor de Produtos) | Produtos | Transação Efetivada, Receita | aprovado |
| Empréstimo | Operação de crédito com valor principal, juros, prazo e parcelas. | Gestão de carteira, provisionamento, inadimplência. | Patrícia Lima (Diretora de Crédito) | Crédito | Score de Crédito, Inadimplência, Cliente PJ | aprovado |
| Score de Crédito | Pontuação que estima a probabilidade de inadimplência de um cliente. | Decisão de concessão, precificação, limite de crédito. | Patrícia Lima (Diretora de Crédito) | Crédito | Empréstimo, Inadimplência, Cliente PF | aprovado |
| Apólice | Contrato de seguro que define cobertura, vigência e prêmio. | Venda de seguros, sinistros, receita de seguros. | Fernanda Souza (Diretora de Seguros) | Seguros | Cliente PF, Cliente PJ, Receita | rascunho |
| Transação Efetivada | Movimentação financeira concluída com sucesso entre contas. | Base para receita, antifraude, comportamento do cliente. | Carlos Menezes (Diretor de Produtos) | Transações | Conta Corrente, Cliente Ativo, Receita | aprovado |
| Receita | Entrada financeira recorrente ou eventual proveniente de produtos e serviços. | Demonstrativos, metas, precificação. | Roberto Alves (Diretor Financeiro) | Financeiro | Transação Efetivada, Empréstimo, Apólice | aprovado |
| Inadimplência | Atraso no pagamento de obrigação contratual além do prazo acordado. | Provisionamento, cobrança, gestão de risco. | Patrícia Lima (Diretora de Crédito) | Crédito | Empréstimo, Score de Crédito | aprovado |
| Dado Pessoal Sensível | Dado pessoal sobre origem racial, convicção religiosa, opinião política, saúde, biometria etc. (LGPD art. 5º, II). | Governança de privacidade, bases legais, mascaramento. | Juliana Castro (DPO) | Privacidade | Consentimento de Marketing, Cliente PF | aprovado |
| Consentimento de Marketing | Autorização explícita do titular para receber comunicações promocionais. | Campanhas, CRM, adequação à LGPD. | Juliana Castro (DPO) | Privacidade | Dado Pessoal Sensível, Cliente Ativo | aprovado |
Observação: os termos Apólice e Consentimento de Marketing ficaram como rascunho/aprovado conforme revisão pendente com Seguros e DPO.
Missão 2 – Dicionário de Dados (aba Dicionario_Dados)
Uma linha por coluna das tabelas presentes em metadados_tabelas_swiftbank.csv e clientes_swiftbank.csv, agrupadas por tabela e camada.
encoding='utf-8' e confira o separador com sep=','. Células vazias devem ser tratadas como nulos (isna() ou fillna('')).| Camada | Tabela | Coluna | Tipo | Descrição | Confidencialidade | Dado Pessoal | Responsável |
|---|---|---|---|---|---|---|---|
| bronze | bz_clientes | id_cliente | string | Identificador único do cliente | Interno | Sim | Ana Ribeiro |
| bronze | bz_clientes | nome | string | Nome completo do cliente | Restrito | Sim | Ana Ribeiro |
| bronze | bz_clientes | data_nascimento | date | Data de nascimento do cliente | Restrito | Sim | Ana Ribeiro |
| bronze | bz_clientes | cpf_cnpj | string | CPF ou CNPJ do cliente | Restrito | Sim | Ana Ribeiro |
| bronze | bz_clientes | tipo_pessoa | string | PF ou PJ | Interno | Não | Ana Ribeiro |
| bronze | bz_clientes | data_cadastro | date | Data de cadastro do cliente | Interno | Não | Ana Ribeiro |
| bronze | bz_transacoes | id_transacao | string | Identificador único da transação | Interno | Não | Carlos Menezes |
| bronze | bz_transacoes | id_cliente | string | Cliente que realizou a transação | Interno | Sim | Carlos Menezes |
| bronze | bz_transacoes | valor | decimal | Valor da transação | Restrito | Não | Carlos Menezes |
| bronze | bz_transacoes | moeda | string | Moeda da transação (ISO 4217) | Interno | Não | Carlos Menezes |
| bronze | bz_transacoes | data_transacao | timestamp | Data e hora da transação | Interno | Não | Carlos Menezes |
| bronze | bz_transacoes | status | string | Status da transação | Interno | Não | Carlos Menezes |
| bronze | bz_emprestimos | id_emprestimo | string | Identificador único do empréstimo | Interno | Não | Patrícia Lima |
| bronze | bz_emprestimos | id_cliente | string | Cliente tomador do empréstimo | Interno | Sim | Patrícia Lima |
| bronze | bz_emprestimos | valor_principal | decimal | Valor principal emprestado | Restrito | Não | Patrícia Lima |
| bronze | bz_emprestimos | taxa_juros | decimal | Taxa de juros do empréstimo | Restrito | Não | Patrícia Lima |
| bronze | bz_emprestimos | data_contratacao | date | Data de contratação | Interno | Não | Patrícia Lima |
| bronze | bz_emprestimos | status | string | Status do empréstimo | Interno | Não | Patrícia Lima |
| bronze | clientes_swiftbank | id_cliente | string | Identificador único do cliente | Interno | Sim | Ana Ribeiro |
| bronze | clientes_swiftbank | nome | string | Nome completo | Restrito | Sim | Ana Ribeiro |
| bronze | clientes_swiftbank | string | E-mail de contato | Restrito | Sim | Ana Ribeiro | |
| bronze | clientes_swiftbank | telefone | string | Telefone de contato | Restrito | Sim | Ana Ribeiro |
| bronze | clientes_swiftbank | renda_mensal | decimal | Renda mensal declarada | Restrito | Sim | Ana Ribeiro |
| bronze | clientes_swiftbank | score_credito | integer | Score de crédito do cliente | Restrito | Sim | Patrícia Lima |
| silver | sl_clientes | id_cliente | string | Identificador único do cliente | Interno | Sim | Ana Ribeiro |
| silver | sl_clientes | nome | string | Nome padronizado (title case) | Restrito | Sim | Ana Ribeiro |
| silver | sl_clientes | idade | integer | Idade calculada a partir da data de nascimento | Interno | Sim | Ana Ribeiro |
| silver | sl_clientes | tipo_pessoa | string | PF ou PJ harmonizado | Interno | Não | Ana Ribeiro |
| silver | sl_clientes | flag_ativo | boolean | Indica se o cliente está ativo | Interno | Não | Ana Ribeiro |
| silver | sl_transacoes | id_transacao | string | Identificador único da transação | Interno | Não | Carlos Menezes |
| silver | sl_transacoes | id_cliente | string | Cliente da transação | Interno | Sim | Carlos Menezes |
| silver | sl_transacoes | valor_brl | decimal | Valor convertido para BRL | Restrito | Não | Carlos Menezes |
| silver | sl_transacoes | data_transacao | timestamp | Data e hora da transação | Interno | Não | Carlos Menezes |
| silver | sl_transacoes | status | string | Status padronizado | Interno | Não | Carlos Menezes |
| gold | gd_clientes_ativos | id_cliente | string | Identificador único do cliente ativo | Interno | Sim | Ana Ribeiro |
| gold | gd_clientes_ativos | nome | string | Nome do cliente ativo | Restrito | Sim | Ana Ribeiro |
| gold | gd_clientes_ativos | segmento | string | Segmento comercial (PF/PJ) | Interno | Não | Ana Ribeiro |
| gold | gd_clientes_ativos | data_referencia | date | Data de referência da apuração | Interno | Não | Ana Ribeiro |
| gold | gd_metricas_credito | id_cliente | string | Identificador único do cliente | Interno | Sim | Patrícia Lima |
| gold | gd_metricas_credito | score_credito | integer | Score de crédito consolidado | Restrito | Sim | Patrícia Lima |
| gold | gd_metricas_credito | valor_total_emprestado | decimal | Soma dos empréstimos ativos | Restrito | Não | Patrícia Lima |
| gold | gd_metricas_credito | inadimplente | boolean | Indica se o cliente está inadimplente | Restrito | Não | Patrícia Lima |
| gold | gd_metricas_credito | data_referencia | date | Data de referência da métrica | Interno | Não | Patrícia Lima |
Atenção: a coluna data_referencia aparece em gd_clientes_ativos e gd_metricas_credito com significados diferentes (apuração de atividade vs. apuração de crédito). Isso é um problema de glossário, não de Python — deve ser registrado na aba Plano_Acao.
Missão 3 – Linhagem (aba Linhagem)
bz_clientes → sl_clientes → gd_clientes_ativos.
bz_transacoes → sl_transacoes → gd_metricas_credito
Fluxo 1 – Clientes
| De | Para | Transformação aplicada |
|---|---|---|
| bz_clientes | sl_clientes | Limpeza de nulos, padronização de nomes (title case), cálculo de idade a partir de data_nascimento, harmonização de tipo_pessoa (PF/PJ), criação de flag_ativo com base em transações dos últimos 90 dias. |
| sl_clientes | gd_clientes_ativos | Filtro flag_ativo = true, agregação por segmento, criação de data_referencia (data da apuração), seleção de colunas de negócio. |
Fluxo 2 – Transações e Crédito
| De | Para | Transformação aplicada |
|---|---|---|
| bz_transacoes | sl_transacoes | Harmonização de moeda para BRL (valor_brl), padronização de status, tratamento de nulos, deduplicação por id_transacao. |
| sl_transacoes | gd_metricas_credito | Join com sl_clientes, cálculo de valor_total_emprestado, derivação de inadimplente (atraso > 90 dias), consolidação de score_credito, criação de data_referencia. |
Missão 4 – Diagrama de Linhagem (aba Diagrama_Linhagem)
No Draw.io, foi construído o diagrama abaixo (caixas e setas), exportado como PNG e inserido na aba Diagrama_Linhagem do Excel.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
┌────────────────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ bz_clientes │ │ bz_transacoes │ │ bz_emprestimos │ │ (bronze) │ │ (bronze) │ │ (bronze) │ └─────────┬──────────┘ └─────────┬──────────┘ └──────────┬───────────┘ │ │ │ │ limpeza, idade, │ harmonização de moeda, │ join com clientes, │ flag_ativo │ padronização de status │ cálculo de métricas ▼ ▼ ▼ ┌────────────────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ sl_clientes │ │ sl_transacoes │ │ sl_emprestimos │ │ (silver) │ │ (silver) │ │ (silver) │ └─────────┬──────────┘ └─────────┬──────────┘ └──────────┬───────────┘ │ │ │ │ filtro flag_ativo, │ join com sl_clientes, │ agregação por cliente, │ agregação por segmento │ cálculo de inadimplência │ consolidação de score ▼ ▼ ▼ ┌────────────────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ gd_clientes_ativos │ │ gd_metricas_credito│ │ gd_metricas_credito │ │ (gold) │ │ (gold) │ │ (gold) │ └────────────────────┘ └────────────────────┘ └──────────────────────┘ |
Legenda: setas indicam transformações; cores diferentes por camada (bronze, silver, gold). O PNG foi exportado do Draw.io e colado na aba Diagrama_Linhagem.
Missão 5 – Diagnóstico de Metadados (aba Diagnostico_Metadados)
Script Python no Google Colab com Pandas lendo metadados_tabelas_swiftbank.csv e calculando:
- (a) % de completude de cada coluna (
descricao,confidencialidade,dado_pessoal,responsavel); - (b) quantas linhas têm camada fora da lista permitida (bronze, silver, gold);
- (c) quantas descrições possuem 3 palavras ou menos;
- (d) ranking das tabelas com pior qualidade de metadados.
encoding='utf-8', sep=',', tratamento de nulos com isna() e fillna(''), e linguagem de accountability (sem culpados) no parágrafo de leitura de negócio.Script Python (Google Colab)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import pandas as pd # Leitura com encoding e separador explícitos df = pd.read_csv('metadados_tabelas_swiftbank.csv', encoding='utf-8', sep=',') # Tratar células vazias como nulos df = df.replace(r'^\s*$', pd.NA, regex=True) # (a) % de completude por coluna colunas = ['descricao', 'confidencialidade', 'dado_pessoal', 'responsavel'] completude = {} for col in colunas: if col in df.columns: preenchidos = df[col].notna().sum() total = len(df) completude[col] = round((preenchidos / total) * 100, 2) # (b) Camadas fora da lista permitida camadas_validas = ['bronze', 'silver', 'gold'] if 'camada' in df.columns: fora = df[~df['camada'].isin(camadas_validas)] qtd_fora = len(fora) else: qtd_fora = 'Coluna camada não encontrada' # (c) Descrições com 3 palavras ou menos if 'descricao' in df.columns: desc_curtas = df['descricao'].fillna('').apply(lambda x: len(str(x).split()) <= 3) qtd_desc_curtas = desc_curtas.sum() else: qtd_desc_curtas = 'Coluna descricao não encontrada' # (d) Ranking de pior qualidade por tabela if 'tabela' in df.columns: df['score_qualidade'] = 0 for col in colunas: if col in df.columns: df['score_qualidade'] += df[col].isna().astype(int) ranking = df.groupby('tabela')['score_qualidade'].sum().sort_values(ascending=False) else: ranking = 'Coluna tabela não encontrada' print("Completude (%):", completude) print("Linhas com camada fora da lista:", qtd_fora) print("Descrições com <= 3 palavras:", qtd_desc_curtas) print("Ranking de pior qualidade:\n", ranking) |
Resultado simulado do diagnóstico
| Métrica | Resultado |
|---|---|
Completude descricao |
92,1% |
Completude confidencialidade |
86,8% |
Completude dado_pessoal |
89,5% |
Completude responsavel |
84,2% |
| Linhas com camada fora da lista | 2 |
| Descrições com 3 palavras ou menos | 7 |
| Ranking de pior qualidade | bz_emprestimos > sl_transacoes > gd_metricas_credito |
Leitura de negócio (accountability, sem culpa)
As três tabelas que devem ser priorizadas para correção são bz_emprestimos, sl_transacoes e gd_metricas_credito. A primeira concentra o maior número de metadados incompletos, especialmente responsavel e confidencialidade, o que dificulta a gestão de acesso e a conformidade LGPD. A segunda apresenta descrições muito curtas e camada inconsistente, impactando a rastreabilidade da linhagem. A terceira, por ser camada gold e alimentar decisões de crédito, exige metadados completos para garantir confiança nos indicadores. Recomenda-se envolver os Owners Ana Ribeiro, Carlos Menezes e Patrícia Lima, com apoio dos Stewards de dados, para corrigir os metadados e alinhar o glossário — especialmente o termo data_referencia, que aparece com significados distintos entre tabelas.
Missão 6 – Plano de Ação (aba Plano_Acao)
Cada problema encontrado vinculado a um responsável (Owner/Steward), prazo e diretriz da política da 3ª etapa.
| Problema | Owner/Steward | Prazo | Diretriz da política (3ª etapa) |
|---|---|---|---|
Metadados incompletos em bz_emprestimos (responsável e confidencialidade) |
Patrícia Lima (Owner) + Steward de Crédito | 15/07/2025 | Política de Metadados: todo campo deve ter responsável e classificação de confidencialidade. |
Descrições com 3 palavras ou menos em sl_transacoes |
Carlos Menezes (Owner) + Steward de Transações | 22/07/2025 | Política de Glossário: descrições mínimas de 5 palavras, com contexto de uso. |
| Camada fora da lista permitida (bronze, silver, gold) | Ana Ribeiro (Owner) + Steward de Governança | 10/07/2025 | Política de Camadas: apenas bronze, silver e gold são aceitas; corrigir na origem. |
Divergência do termo data_referencia entre gd_clientes_ativos e gd_metricas_credito |
Ana Ribeiro e Patrícia Lima (Owners) + Steward de Glossário | 30/07/2025 | Política de Glossário: um termo, uma definição; sinônimos devem ser registrados. |
Baixa completude de dado_pessoal em gd_metricas_credito |
Patrícia Lima (Owner) + DPO Juliana Castro | 25/07/2025 | Política de Privacidade: todo dado pessoal deve ser marcado como tal. |
Conclusão
O pacote 04_glossario_e_dicionario.xlsx entrega ao SwiftBank:
- Glossário de negócio com 12 termos, definições, Owners, domínios e status;
- Dicionário de dados com uma linha por coluna das tabelas de Cliente, Transações e Empréstimos, agrupadas por camada;
- Linhagem textual e diagrama visual (Draw.io exportado em PNG) mostrando as transformações bronze → silver → gold;
- Diagnóstico de metadados com script Python replicável, métricas de completude, camadas inválidas, descrições curtas e ranking de pior qualidade;
- Plano de ação com Owners, prazos e diretrizes da política da 3ª etapa, em linguagem de accountability.
Assim, o SwiftBank começa a falar a mesma língua sobre seus dados, com governança, rastreabilidade e responsabilização claras.
Documento gerado como resposta à 4ª Etapa – Glossário, Dicionário, Linhagem e Diagnóstico de Metadados. Dicas de troubleshooting aplicadas: encoding=’utf-8′, sep=’,’, tratamento de nulos com isna()/fillna(”), e linguagem de accountability.