Comando FUZZYJOIN

Informações do conceito

Associação parcial

Usa correspondências parciais para combinar campos de duas tabelas do Analytics em uma única tabela nova do Analytics.

Nota

Para detectar valores quase idênticos em um único campo de caracteres (duplicidades parciais), consulte Comando FUZZYDUP.

Para associar tabelas usando valores de campos-chave com correspondência exata, consulte Comando JOIN.

Sintaxe

FUZZYJOIN {DICE PERCENT porcentagem NGRAM comprimento_ngrama|LEVDISTANCE DISTANCE valor} PKEY campo_chave_primária SKEY campo_chave_secundária {FIELDS campos_primários|FIELDS ALL <EXCLUDE campos_primários <...n>>} <WITH campos_secundários|WITH ALL <EXCLUDE campos_secundários <...n>>> <IF teste> <OPEN> TO nome_tabela <FIRSTMATCH> <WHILE teste> <FIRST intervalo|NEXT intervalo> <APPEND>

Nota

Não é possível executar o comando FUZZYJOIN localmente em uma tabela de servidor.

Você deve especificar o nome do comando FUZZYJOIN com todas as letras. Esse comando não deve ser abreviado.

Parâmetros

Nome Descrição
DICE PERCENT porcentagem NGRAM comprimento_ngrama | LEVDISTANCE DISTANCE valor

O algoritmo de correspondência parcial a ser usado.

DICE usar o algoritmo do coeficiente de Dice

  • PERCENT porcentagem o menor coeficiente de Dice permissível de duas cadeias para que elas sejam qualificadas como uma correspondência parcial

    Especifique uma fração decimal de 0,0000 a 1,0000 (por exemplo, 0,7500). Use no máximo quatro casas decimais.

    A diminuição do valor aumenta o número de correspondências, incluindo correspondências com um maior grau de parcialidade, ou seja, cadeias que são mais diferentes entre si.

  • NGRAM comprimento_ngrama o comprimento do ngrama a ser usado

    Especifique um número inteiro, 1 ou maior.

    O aumento do comprimento do ngrama aumenta o rigor do critério de similaridade entre duas cadeias.

    Ngramas são subcadeias (blocos de caracteres) sobrepostas resultantes da divisão de cadeias de comparação durante o cálculo do coeficiente de Dice.

    Nota

    Quando você especifica DICE, o comando FUZZYJOIN usa a função DICECOEFFICIENT( ) de uma instrução IF para associar condicionalmente valores de campo-chave. Para obter informações detalhadas sobre a função, consulte Função DICECOEFFICIENT( ).

LEVDISTANCE usar o algoritmo de distância de Levenshtein

  • DISTANCE valor A máxima distância de Levenshtein permitida entre duas cadeias para que elas sejam qualificadas como uma correspondência parcial

    Especifique um número inteiro, 1 ou maior.

    O aumento do valor aumenta o número de correspondências, incluindo correspondências com um maior grau de parcialidade, ou seja, cadeias que são mais diferentes entre si.

    Nota

    Quando você especifica LEVDISTANCE, o comando FUZZYJOIN usa a função LEVDIST( ) de uma instrução IF para associar condicionalmente valores de campo-chave. Para obter informações detalhadas sobre a função, consulte Função LEVDIST( ).

    Ao contrário da função, o algoritmo de distância de Levenshtein no comando FUZZYJOIN remove automaticamente brancos à esquerda e à direita e não diferencia maiúsculas de minúsculas.

PKEY campo_chave_primário

O campo-chave de caracteres ou uma expressão na tabela primária.

Você pode especificar apenas um campo-chave primário.

SKEY campo_chave_secundário

O campo-chave de caracteres ou uma expressão na tabela secundária.

Você pode especificar apenas um campo-chave secundário.

FIELDS campos_primários | FIELDS ALL

Os campos ou expressões da tabela primária a serem incluídos na tabela de saída associada.

  • FIELDS campos_primários inclua o campo ou os campos especificados

    Os campos são incluídos na ordem em que são listados.

  • FIELDS ALL inclua todos os campos da tabela

    Os campos são incluídos na ordem em que aparecem no layout da tabela.

Nota

Você deve especificar de forma explícita o campo-chave primário se desejar incluí-lo na tabela associada. A especificação de FIELDS ALL também inclui esse campo.

EXCLUDE campos_primários

opcional

Válido apenas ao executar uma associação parcial usando FIELDS ALL.

O campo ou os campos a serem excluídos do comando. EXCLUDE permite ajustar a palavra-chave ALL, excluindo os campos especificados.

EXCLUDE deve seguir FIELDS ALL imediatamente ou a última ocorrência da palavra-chave ALL se você estiver incluindo campos de uma ou mais tabelas relacionadas. Por exemplo:

FIELDS ALL EXCLUDE campo_1 campo_2
FIELDS ALL nome_tabela_relacionada.ALL EXCLUDE campo_1 campo_2

WITH campos_secundários | WITH ALL

opcional

Os campos ou expressões da tabela secundária a serem incluídos na tabela de saída associada.

  • WITH campos_secundários inclua o campo ou os campos especificados

    Os campos são incluídos na ordem em que são listados.

  • WITH ALL inclua todos os campos da tabela

    Os campos são incluídos na ordem em que aparecem no layout da tabela.

Nota

Você deve especificar de forma explícita o campo-chave secundário se desejar incluí-lo na tabela associada. A especificação de WITH ALL também inclui esse campo.

EXCLUDE campos_secundários

opcional

Válido apenas ao executar uma associação parcial usando WITH ALL.

O campo ou os campos a serem excluídos do comando. O EXCLUDE permite ajustar o WITH ALL excluindo os campos especificados.

O EXCLUDE deve estar logo após do WITH ALL. Por exemplo:

WITH ALL EXCLUDE campo_1 campo_2

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).

Nota

A condição IF pode referenciar a tabela primária, a tabela secundária ou as duas tabelas.

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.

TO nome_tabela

A localização para onde enviar os resultados do comando:

  • nome_tabela salva os resultados em uma tabela do Analytics

    Especifique nome_tabela como uma cadeia entre aspas com uma extensão de arquivo .FIL. For exemplo: TO "Saída.FIL"

    Por padrão, o arquivo de dados da tabela (.fil) é salvo na pasta que contém o projeto do Analytics.

    Use um caminho de arquivo absoluto ou relativo para salvar o arquivo de dados em uma pasta diferente já existente:

    • TO "C:\Saída.FIL"
    • TO "Resultados\Saída.FIL"

    Nota

    Os nomes de tabela são limitados a 64 caracteres alfanuméricos, sem contar a extensão .FIL. O nome pode incluir o caractere de sublinhado ( _ ) mas nenhum outro caractere especial e nenhum espaço. O nome não pode começar com um número.

FIRSTMATCH

opcional

Especifica que cada valor de chave primária é associado unicamente à primeira ocorrência de qualquer chave secundária correspondente.

Se a primeira ocorrência for uma correspondência exata, nenhum das correspondências parciais subsequentes para o valor de chave primária será incluída na tabela de saída associada.

Se você omitir FIRSTMATCH, o comportamento padrão de FUZZYJOIN será associar cada valor de chave primária a todas as ocorrências de todas as chaves secundárias correspondentes.

FIRSTMATCH é útil se você quer apenas saber se existem correspondências, exatas ou parciais, entre as duas tabelas e desejar evitar o tempo de processamento necessário para identificar todas as correspondências.

Você também pode usar FIRSTMATCH se tiver certeza de que existe no máximo apenas uma correspondência na tabela secundária para cada valor de chave primária.

WHILE teste

opcional

Uma expressão condicional que deve ser verdadeira para processar cada registro. O comando é executado até que a condição seja avaliada como falsa ou o fim da tabela seja alcançado.

Nota

Se você usar WHILE juntamente com FIRST ou NEXT, o processamento de registros será interrompido assim que um limite for alcançado.

FIRST intervalo | NEXT intervalo

opcional

O número de registros a ser processado:

  • FIRST iniciar o processamento a partir do primeiro registro até alcançar o número de registros especificado
  • NEXT iniciar o processamento a partir do registro selecionado no momento até alcançar o número de registros especificado

Use intervalo para especificar o número de registros a serem processados.

Se você omitir FIRST e NEXT, todos os registros serão processados por padrão.

APPEND

opcional

Anexa a saída do comando ao final de um arquivo existente, em vez de sobrescrevê-lo.

Nota

Você deve garantir que a estrutura da saída do comando e o arquivo existente são idênticos:

  • os mesmos campos
  • a mesma ordem de campos
  • os campos correspondentes têm o mesmo comprimento
  • os campos correspondentes têm o mesmo tipo de dados

O Analytics anexa a saída a um arquivo existente, seja qual for sua estrutura. Se a estrutura da saída e do arquivo existente não corresponderem, o resultado poderá ser dados misturados, ausentes ou incorretos.

ISOLOCALE código_local

opcional

Nota

Aplicável apenas à edição Unicode do Analytics.

A localidade do sistema no formato idioma_país. Por exemplo, para usar francês canadense, insira fr_ca.

Use os códigos a seguir:

  • idioma código de idioma padrão ISO 639
  • país código de país padrão ISO 3166

    Se você não especificar um código de país, será usado o país padrão do idioma.

Se você não usar ISOLOCALE, a localidade do sistema padrão será usada.

Exemplos

Use a correspondência parcial para associar duas tabelas como forma de descobrir empregados que também podem ser fornecedores

O exemplo a seguir associa as tabelas MestreFunc e Fornecedor usando o endereço como campo-chave comum (os campos Endereço e Rua_Fornecedor).

O comando FUZZYJOIN cria uma nova tabela que contém registros primários e secundários com correspondência exata ou registros primários e secundários com correspondência parcial. O resultado é uma lista de funcionários e fornecedores com endereços idênticos ou com endereços similares.

FUZZYJOIN com o algoritmo do coeficiente de Dice

OPEN MestreFunc PRIMARY
OPEN Fornecedor SECONDARY
FUZZYJOIN DICE PERCENT 0,8000 NGRAM 2 PKEY Endereço SKEY Rua_Fornecedor FIELDS Número_Funcionário Nome Sobrenome Endereço WITH Número_Fornecedor Nome_Fornecedor Rua_Fornecedor OPEN TO "Funcionários_Fornecedores_Correspondentes"

FUZZYJOIN com o algoritmo de distância de Levenshtein

OPEN MestreFunc PRIMARY
OPEN Fornecedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Endereço SKEY Rua_Fornecedor FIELDS Número_Funcionário Nome Sobrenome Endereço WITH Número_Fornecedor Nome_Fornecedor Rua_Fornecedor OPEN TO "Funcionários_Fornecedores_Correspondentes"

Incluir todos os campos

Esta versão do comando FUZZYJOIN inclui todos os campos das tabelas primária e secundária na tabela de saída associada.

OPEN MestreFunc PRIMARY
OPEN Fornecedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY Endereço SKEY Rua_Fornecedor FIELDS ALL WITH ALL OPEN TO "Funcionários_Fornecedores_Correspondentes"

Aumente a eficácia da correspondência parcial

O exemplo abaixo usa a função SORTWORDS( ) para aprimorar a eficácia da correspondência parcial entre os campos Endereço e Rua_Fornecedor. O uso da função UPPER( ) garante que o uso de maiúsculas e minúsculas não afete a ordenação dos elementos em valores de campos-chave.

OPEN MestreFunc PRIMARY
OPEN Fornecedor SECONDARY
FUZZYJOIN LEVDISTANCE DISTANCE 5 PKEY SORTWORDS(UPPER(Endereço)) SKEY SORTWORDS(UPPER(Rua_Fornecedor)) FIELDS Número_Funcionário Nome Sobrenome Endereço WITH Número_Fornecedor Nome_Fornecedor Rua_Fornecedor OPEN TO "Funcionários_Fornecedores_Correspondentes"

Observações

Para obter mais informações sobre o funcionamento desse comando, consulte Associação parcial.

Diferenciação de maiúsculas e minúsculas

O comando FUZZYJOIN não diferencia maiúsculas de minúsculas, independentemente do algoritmo de correspondência parcial utilizado. Portanto, "SMITH" é equivalente a "smith."

Brancos à direita e à esquerda

O comando FUZZYJOIN remove automaticamente brancos à esquerda e à direita em campos, independentemente do algoritmo de correspondência parcial utilizado. Não é necessário usar as funções TRIM( ) ou ALLTRIM( ) na especificação de campos-chave primários e secundários.

Aumento da eficácia do FUZZYJOIN

Três técnicas podem aprimorar significativamente a eficácia do comando FUZZYJOIN:

  • ordenar elementos individuais em valores de campos-chave primários e secundários
  • remoção de elementos genéricos dos valores de campos-chave primários e secundários
  • harmonização de valores de campos-chave primários e secundários

Essas técnicas permitem usar configurações de parcialidade mais restritas e ainda obter as mesmas correspondências parciais, mas reduzindo o número de falsos positivos. Você pode usar as técnicas separadamente ou combinadas.

Ordenação de elementos individuais em valores de campos-chave

A função SORTWORDS( ) pode aumentar a eficácia do comando FUZZYJOIN ordenando sequencialmente elementos individuais em valores de campos-chave primários e secundários.

A ordenação de elementos, como os componentes de um endereço, pode fazer com que valores de campos-chave com as mesmas informações, mas em formatos diferentes, sejam mais semelhantes entre si. Uma maior semelhança aumenta a probabilidade de que valores de campos-chave sejam selecionados como correspondências 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).

Nota

A ordenação de elementos em valores de campos-chave é mais adequada para associações parciais usando o algoritmo de distância de Levenshtein.

A ordenação de elementos com associação parcial usando o algoritmo do coeficiente de Dice pode ou não ser benéfica. Teste um conjunto de dados de amostra antes de decidir usar SORTWORDS( ) com o algoritmo do coeficiente de Dice em um ambiente de produção.

Cuidado

Se você usar SORTWORDS( ) com o comando FUZZYJOIN, deverá aplicar SORTWORDS( ) em ambas as cadeias ou campos sendo comparados.

Remoção de elementos genéricos dos valores de campos-chave

A função OMIT( ) pode melhorar a eficácia do comando FUZZYJOIN removendo elementos genéricos, como "Companhia" ou "Inc.", ou caracteres como vírgulas, pontos e E comercial (&) dos valores dos campos-chave primário e secundário.

A remoção de elementos e pontuação genéricos concentra a associação parcial na parte dos valores de campos-chave em que podem ocorrer diferenças significativas.

Para obter mais informações, consulte Função OMIT( ).

Harmonização de valores de campo-chave

As funções REPLACE( ) ou REGEXREPLACE( ) podem aprimorar a eficácia do comando FUZZYJOIN harmonizando formas variáveis do mesmo elemento em valores de campos-chave primários e secundários. Por exemplo, você pode harmonizar "Rua", "R." e "R" para usar o único valor "R".

A harmonização de elementos pode fazer com que valores de campos-chave com as mesmas informações, mas em formatos diferentes, sejam mais semelhantes entre si. Uma maior semelhança aumenta a probabilidade de que valores de campos-chave sejam selecionados como correspondências parciais entre si.

Para obter mais informações, consulte Função REPLACE( ) para substituições simples e Função REGEXREPLACE( ) para substituições mais complexas.