Comando FUZZYJOIN
Informações do conceito
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
LEVDISTANCE usar o algoritmo de distância de Levenshtein
|
| 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.
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.
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:
|
|
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:
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:
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:
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.