Comando FUZZYDUP
Informações do conceito
Detecta valores quase idênticos (duplicidades parciais) em um campo de caracteres.
Nota
Para usar correspondências parciais para combinar campos de duas tabelas do Analytics em uma única tabela nova do Analytics, consulte Comando FUZZYJOIN.
Sintaxe
FUZZYDUP ON campo_chave <OTHER campo <...n>|OTHER ALL <EXCLUDE nome_campo <...n>>> LEVDISTANCE valor <DIFFPCT porcentagem> <RESULTSIZE porcentagem> <EXACT> <IF teste> TO nome_tabela <LOCAL> <OPEN>
Parâmetros
| Nome | Descrição |
|---|---|
| ON campo_chave | O campo ou expressão de caracteres a testar quanto a duplicidades parciais. |
| OTHER campo <...n> | OTHER ALL opcional |
Um ou mais campos adicionais a serem incluídos na saída.
|
| EXCLUDE nome_campo opcional |
Válido apenas ao usar OTHER ALL. O campo ou os campos a serem excluídos do comando. O EXCLUDE permite ajustar o OTHER ALL excluindo os campos especificados. O EXCLUDE deve estar logo após do OTHER ALL. Por exemplo: OTHER ALL EXCLUDE campo_1 campo_2 |
| LEVDISTANCE valor |
A máxima distância de Levenshtein permitida entre duas cadeias para que elas sejam identificadas como duplicidades parciais e incluídas nos resultados. O valor LEVDISTANCE não pode ser menor que 1 ou maior que 10. O aumento do valor de LEVDISTANCE aumenta o número de resultados, incluindo valores com um maior grau de imprecisão, ou seja, valores que são mais diferentes entre si. Para obter mais informações, consulte Comportamento de FUZZYDUP. |
|
DIFFPCT porcentagem opcional |
Um limite que limita a "porcentagem de diferença" ou a proporção de uma cadeia que pode ser diferente. A porcentagem resultante de um cálculo interno do Analytics feito em pares de duplicatas parciais potenciais deve ser menor ou igual ao valor de DIFFPCT para que o par seja incluído nos resultados. O valor de DIFFPCT não pode ser menor que 1 ou maior que 99. Se DIFFPCT for omitido, o limite será desligado e a porcentagem de diferença não será considerada durante o processamento do comando FUZZYDUP. Para obter mais informações, consulte Comportamento de FUZZYDUP. |
| RESULTSIZE porcentagem opcional |
O tamanho máximo do conjunto de resultados de saída como porcentagem do número de registros no campo-chave. Por exemplo, para um campo-chave com 50.000 registros, um RESULTSIZE de 3 encerrará o processo se os resultados ultrapassarem 1.500 duplicidades parciais (50.000 x 0,03). Nenhuma tabela de saída será produzida se a operação for encerrada. O valor de RESULTSIZE não pode ser menor que 1 ou maior que 1.000 (mil) por cento. O limite é de 1.000% para acomodar a natureza da correspondência muitos para muitos, que pode produzir resultados que são mais numerosos que o conjunto de dados de teste original. Se RESULTSIZE for omitido, o limite será desligado e o tamanho do resultado não será considerado durante o processamento do comando FUZZYDUP. Cuidado A omissão de RESULTSIZE pode produzir um conjunto de resultados excessivamente grande e com longo tempo de processamento ou pode esgotar a memória disponível, cancelando o processamento. Omita RESULTSIZE apenas se tiver certeza de que os resultados terão um tamanho gerenciável. |
|
EXACT opcional |
Inclui duplicidades exatas e parciais nos resultados. |
|
IF teste opcional |
Uma expressão condicional que deve ser verdadeira para processar cada registro. O comando é executado apenas nos registros que atendem à condição. Nota O parâmetro IF é avaliado apenas em relação aos registros restantes em uma tabela depois da aplicação dos parâmetros de escopo (WHILE, FIRST, NEXT). |
|
TO nome_tabela |
A localização para onde enviar os resultados do comando:
|
|
LOCAL opcional |
Salva o arquivo de saída no mesmo local que o projeto do Analytics. Nota Aplicável apenas na execução de um comando em uma tabela de servidor com um campo de saída que é uma tabela do Analytics. O parâmetro LOCAL deve seguir imediatamente o parâmetro TO. |
|
OPEN opcional |
Abre a tabela criada pelo comando após a execução do comando. Válido apenas se o comando criar uma tabela de saída. |
Variáveis de saída do Analytics
| Nome | Contém |
|---|---|
| GAPDUPn |
O número total de grupos de falhas, duplicidades ou duplicidades parciais identificados pelo comando. |
Exemplos
Testar duplicidades parciais em um campo de sobrenome
Teste se há duplicidades parciais em um campo de sobrenome (o campo Sobrenome na tabela Lista_Funcionários em ACL DATA\Arquivos de dados da amostra\Dados_Funcionários_Metaphor.ACL). Os resultados são enviados a uma nova tabela do Analytics.
- Além do campo de teste, outros campos são incluídos nos resultados.
- A distância máxima de Levenshtein permitida é 1.
- A proporção de uma cadeia que pode ser diferente é limitada a 50%.
- O tamanho dos resultados é limitado a 20% do tamanho do campo de teste.
- Além das duplicidades parciais, as duplicidades exatas serão incluídas.
OPEN Lista_funcionários
FUZZYDUP ON Sobrenome OTHER Nome Númfunc LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Sobrenome_Parciais" OPEN
Observações
Como funciona?
O comando FUZZYDUP encontra valores quase idênticos (duplicidades parciais) ou localiza ortografia inconsistente em dados inseridos manualmente.
Ao contrário da função ISFUZZYDUP( ), que identifica uma lista exaustiva de duplicatas parciais para um único valor de caractere, o comando FUZZYDUP identifica todas as duplicidades parciais em um campo, organiza-as em grupos não exaustivos e produz resultados.
Para obter informações detalhadas sobre o funcionamento desse comando, consulte Análise de duplicidades parciais.
O que significa não exaustivo
Não exaustivo significa que os grupos de duplicatas parciais nos resultados podem não conter todas as duplicatas parciais em um campo de teste que estão dentro de um grau especificado de diferença do proprietário do grupo. No entanto, se um proprietário do grupo for uma duplicata parcial de outro valor no campo de teste, os dois valores aparecerão juntos em um grupo em alguma parte dos resultados. Portanto, os grupos podem ser não exaustivos, mas os resultados, no total, são exaustivos.
Se produzir uma única lista exaustiva de duplicidades parciais de um valor específico no campo de teste for importante para sua análise, é possível usar a função ISFUZZYDUP( ) para isso.
Comportamento de FUZZYDUP
O comando FUZZYDUP tem dois parâmetros que permitem controlar o grau de diferença entre duplicidades parciais e o tamanho dos resultados:
- LEVDISTANCE
- DIFFPCT
Pode ser necessário tentar diferentes combinações de configurações desses dois parâmetros para descobrir a que funciona melhor para um conjunto de dados específico.
LEVDISTANCE (distância de Levenshtein)
Ao processar os dados, o comando FUZZYDUP calcula a distância de Levenshtein entre cada par de cadeias avaliado no campo de teste e calcula a porcentagem de diferença. A distância de Levenshtein é um valor que representa o número mínimo de edições de único caractere necessárias para tornar uma cadeia idêntica à outra. Para obter mais informações, consulte Função LEVDIST( ).
DIFFPCT (porcentagem de diferença)
A porcentagem de diferença é a porcentagem da cadeia mais curta, entre as duas avaliadas, que é diferente e é o resultado do seguinte cálculo interno do Analytics que utiliza a distância de Levenshtein entre as duas cadeias:
Distância de Levenshtein / número de caracteres na cadeia mais curta × 100 = porcentagem de diferença
Mais informações
Para obter informações detalhadas sobre as configurações de diferença de duplicidades parciais, controlar o tamanho do resultado e grupos de duplicidades parciais, consulte Análise de duplicidades parciais.
Diferenciação de maiúsculas e minúsculas
O comando FUZZYDUP não diferencia maiúsculas de minúsculas, portanto, "SMITH" é equivalente a "smith".
Remoção automática de brancos à direita
O comando FUZZYDUP elimina automaticamente brancos à direita no campo_chave, evitando a necessidade de usar as funções TRIM( ) ou ALLTRIM( ) ao especificar um único campo como campo_chave.
Se você concatenar campos para campo_chave, deverá usar ALLTRIM( ) como mostrado abaixo.
Aumento da eficácia do FUZZYDUP
Três técnicas podem aprimorar significativamente a eficácia do comando FUZZYDUP:
- ordenação de elementos individuais em valores de campos de teste
- remoção de elementos genéricos dos valores de campos de teste
- concatenação de campos de teste
Essas técnicas geram conjuntos mais concentrados de resultados, com menos falsos positivos e mais positivos verdadeiros. Você pode usar as técnicas separadamente ou combinadas.
Ordenação de elementos individuais em valores de campos de teste
A função SORTWORDS( ) pode aumentar a eficácia do comando FUZZYDUP ordenando sequencialmente elementos individuais em valores de campos de teste.
A ordenação de elementos, como os componentes de um endereço, pode fazer com que duas cadeias com as mesmas informações, mas em formatos diferentes, sejam mais semelhantes entre si. Uma maior semelhança aumenta a probabilidade de que duas cadeias sejam selecionadas como duplicidades parciais entre si.
Para obter mais informações, consulte Função SORTWORDS( ).
Para ver um vídeo com uma visão geral de SORTWORDS( ), consulte Correspondência parcial usando SORTWORDS() (somente em inglês).
Remoção de elementos genéricos dos valores de campos de teste
A função OMIT( ) podem melhorar a eficácia DO COMANDO FUZZYDUP removendo elementos genéricos, como "Companhia" ou "Inc.", ou caracteres como vírgulas, pontos e E comercial (&) dos valores dos campos de teste.
A remoção de elementos e pontuação genéricos concentra a comparação de cadeia de FUZZYDUP somente na parte das cadeias onde pode ocorrer uma diferença significativa.
Para obter mais informações, consulte Função OMIT( ).
Concatenação de campos de teste
Concatenar dois ou mais campos de teste pode melhorar a eficiência do comando FUZZYDUP aumentando o grau de singularidade dos valores de teste.
Por exemplo, a concatenação de um campo Endereço e um campo Cidade pode evitar correspondências parciais entre endereços em cidades diferentes:
FUZZYDUP ON ALLTRIM(Endereço)+ALLTRIM(Cidade) OTHER Endereço Cidade Nome_Fornecedor LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Duplicidades_Parciais_Nome_Fornecedor" OPEN
Outros métodos de comparação de cadeia
- A função DICECOEFFICIENT( ) oferece um método de comparação de cadeias que não prioriza ou ignora completamente a posição relativa de caracteres ou blocos de caracteres.
- As funções SOUNDSLIKE( ) e SOUNDEX( ) fornecem um método para comparar cadeias com base em uma comparação fonética (som), em vez de uma comparação ortográfica (ortografia).