A regra de ouro
er_fields é OU, nunca E.
[cpf, email] significa “acha por CPF ou por e-mail”. Não existe chave composta — cada campo é uma porta independente para a mesma entidade, e basta uma abrir.
ana@x.com por contato@empresa.com.br — uma caixa de setor — e todo mundo que a compartilha vira uma pessoa só.
E se eu quiser a combinação?
Não dá na ontologia. Fabrique a coluna composta na camada clean e declare ela:O teste de uma pergunta
Antes de colocar um campo emer_fields:
Se duas linhas tiverem o mesmo valor neste campo, elas são obrigatoriamente a mesma coisa no mundo real?Se a resposta for “não, só se o outro campo também bater”, esse campo não entra. Na dúvida, deixe de fora. Perder uma fusão é recuperável — basta declarar depois, e o lookup primário-primeiro garante que nada é re-chaveado. Colapsar mil entidades exige limpar o índice e reprocessar.
Os seis padrões
id_fieldé a chave que a fonte já tem e não muda — normalmenteexternal_id. Nunca um campo que o usuário edita.er_fieldsé só o que passa no teste acima.normalizersquando o nome do campo não entrega a regra.cpf,cnpj,email,phoneetelefonesão reconhecidos pelo nome; todo o resto cai emtext.- Fontes podem declarar listas diferentes — cada uma declara só o que tem. O que não pode é o conjunto ficar desconexo.
- Sem elo em comum, não force. Duas fontes sem identificador compartilhado não são uma entidade. Modele separado e resolva o dado na origem.
- Na aresta,
source:é a tabela que carrega a ligação — a que tem as duas colunas.
Armadilhas que já aconteceram
1. Campo repetido em er_fields
Um gerador de teste produziu 20 000 veículos com só 9 000 placas distintas, porque o lpad truncava a partir de um certo índice. Resultado: 11 000 veículos fundiram em silêncio, cada linha sobrescrevendo as propriedades da anterior, e o run reportou sucesso.
Hoje o worker avisa quando uma fonte colapsa acima de 20%, mas o modelo errado continua sendo de quem escreveu a ontologia.
2. Tratar er_fields como chave composta
Tentar casar reunião por “horário mais responsável”:
3. Mesmo label, duas fontes, nenhum er_fields
Passa na validação e parece certo. Mas sem identificador declarado cada fonte cunha no seu próprio namespace, e você fica com duas populações separadas usando o mesmo nome — o card da ontologia mostra Reunião (247) e metade é de um conector, metade de outro, sem nenhuma aresta entre elas.
Aconteceu de verdade com Meeting vindo de um CRM e de uma ferramenta de gravação de calls.
4. Identificador sem o normalizador que precisa
Uma coluna chamadadocumento guardando CPF cai no padrão text, que mantém a pontuação. As quatro fontes escrevem quatro strings diferentes, viram quatro linhas no índice e quatro entidades. A busca depois acha uma delas, então o sintoma parece bug de busca.
O worker avisa:
5. digits onde o identificador tem letra
O RG brasileiro pode terminar em X. Com digits:
alnum para qualquer identificador que possa conter letra: RG, placa Mercosul, chassi, códigos alfanuméricos de ERP.
6. Declarar er_fields só para “ficar pesquisável”
Se você só quer achar pelo valor do próprio id_field, isso já é de graça — e declarar tira o nó do caminho de ingestão mais rápido sem ganho nenhum. Ver Campos pesquisáveis.
Checklist antes do apply
- cada campo de
er_fieldspassa no teste da pergunta — sozinho - cada campo de
er_fields(ou a coluna doidentifier_columns) está emproperties - as fontes do mesmo label formam uma cadeia conectada — nenhuma ilha
- campo com formato variável tem
normalizersdeclarado - identificador que pode ter letra usa
alnum, nãodigits - a tabela do
source:de cada aresta tem as duas colunas de ligação - nenhum campo de visualização — se você escreveu
display_*, apague - depois de rodar: a queda no número de entidades é a que você esperava
Ontologias que não funcionam
O que a plataforma não pega: dois identificadores legítimos que por acaso colidem, e um campo que é único hoje e deixa de ser amanhã. Isso é modelagem, e só quem conhece o negócio decide.
Gerenciar a ontologia
Salvar, validar, ativar e reverter uma versão sem derrubar o grafo.
Conceitos da ontologia
Voltar ao começo da trilha.