Correspondência de registros com o FindMatches do AWS Lake Formation - AWS Glue

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Correspondência de registros com o FindMatches do AWS Lake Formation

nota

No momento, a correspondência de registros não está disponível no console do AWS Glue nas seguintes regiões: Oriente Médio (EAU), Europa (Espanha) (eu-south-2) e Europa (Zurique) (eu-central-2).

O AWS Lake Formation fornece recursos de machine learning para criar transformações personalizadas para limpar seus dados. No momento, existe uma transformação disponível chamada FindMatches. A transformação FindMatches permite identificar registros duplicados ou correspondentes no seu conjunto de dados, mesmo quando os registros não têm um identificador exclusivo comum e quando não há campos com uma correspondência exata. Isso não exigirá escrever nenhum código ou saber como o machine learning funciona. A transformação FindMatches pode ser útil em muitos problemas diferentes, como:

  • Matching customers (Correspondência de clientes): vinculação de registros de clientes em diferentes bancos de dados de clientes, mesmo quando muitos campos de clientes não correspondem exatamente entre os bancos de dados (por exemplo, grafia diferente do nome, diferenças de endereço, dados ausentes ou imprecisos etc.).

  • Matching products (Correspondência de produtos): correspondência de produtos em seu catálogo com relação a outras fontes de produtos, como catálogo de produtos com relação ao catálogo de um concorrente, onde as entradas são estruturadas de outra forma.

  • Improving fraud detection (Melhoria da detecção de fraudes): identificação de contas de clientes duplicadas, determinação de quando uma conta recém-criada é (ou pode ser) correspondente a um usuário fraudulento conhecido anteriormente.

  • Other matching problems (Outros problemas de correspondência): correspondência de endereços, filmes, listas de peças etc. Em geral, se um ser humano conseguir olhar suas linhas de banco de dados e determinar se elas são uma correspondência, haverá uma boa chance de que a transformação FindMatches possa ajudá-lo.

É possível criar essas transformações ao criar uma tarefa. A transformação que você cria tem como base um esquema de datastore de origem e dados de exemplo da fonte de dados rotulados por você (chamamos esse processo de “ensinar” uma transformação). Os registros que você rotula devem estar presentes no conjunto de dados de origem. Nesse processo, geramos um arquivo que você rotula e carrega novamente, e que ajudaria a transformação a aprender. Depois de ensinar a transformação, você poderá chamá-la no trabalho do AWS Glue baseado no Spark (PySpark ou Scala Spark) e usá-la em outros scripts com um datastore de origem compatível.

Depois que a transformação é criada, ela é armazenada no AWS Glue. No console do AWS Glue, é possível gerenciar as transformações que você cria. No painel de navegação em Integração de dados e ETL, Ferramentas de classificação de dados > Correspondência de registros, você pode editar e continuar a ensinar a sua transformação de machine learning. Para obter mais informações sobre como gerenciar transformações no console, consulte Trabalhar com transformações de machine learning.

nota

AWS GlueOs trabalhos do FindMatches versão 2.0 usam o bucket aws-glue-temp-<accountID>-<region> do Amazon S3 para armazenar arquivos temporários enquanto a transformação está processando dados. Você pode excluir esses dados após a conclusão da execução, manualmente ou definindo uma regra de ciclo de vida do Amazon S3.

Tipos de transformações de machine learning

Você pode criar transformações de machine learning para limpar os dados. Você pode chamar essas transformações no seu script de ETL. Os seus dados passam de transformação para transformação em uma estrutura de dados chamada DynamicFrame, que é a extensão de uma DataFrame do Apache Spark SQL. O DynamicFrame contém os dados, e você referencia o esquema para processar os dados.

Os seguintes tipos de transformações de machine learning estão disponíveis:

Encontrar correspondências

Encontra registros duplicados nos dados de origem. Ensine essa transformação de machine learning rotulando exemplos de conjuntos de dados para indicar quais linhas são correspondentes. Quanto mais você ensina a transformação de machine learning com exemplos de dados rotulados, mais ela aprende quais linhas devem ser correspondências. Dependendo de como você configura a transformação, a saída será:

  • Uma cópia da tabela de entrada, além de uma coluna match_id preenchida com valores que indicam conjuntos correspondentes de registros. A coluna match_id é um identificador arbitrário. Todos os registros que têm o mesmo match_id foram identificados como correspondentes entre si. Os registros com match_id diferente não são correspondentes.

  • Uma cópia da tabela de entrada com as linhas duplicadas removidas. Se várias duplicatas forem encontradas, o registro com a menor chave primária será mantido.

Localização de correspondências incrementais

A transformação Find matches (Localizar correspondências) também pode ser configurada para localizar correspondências entre os quadros existentes e incrementais e retornar como saída uma coluna contendo um ID exclusivo por grupo de correspondência.

Para obter mais informações, consulte: Localizar correspondências incrementais

Usando a transformação FindMatches

É possível usar a transformação FindMatches para encontrar registros duplicados nos dados de origem. Um arquivo de rotulamento é gerado ou fornecido para ajudar a ensinar a transformação.

nota

No momento, não há suporte para transformações FindMatches que usem uma chave de criptografia personalizada nas seguintes regiões:

  • Asia Pacific (Osaka) - ap-northeast-3

Para começar com a transformação FindMatches, você pode seguir as etapas abaixo. Para um exemplo mais avançado e detalhado, consulte o blog de Big Data da AWS: Harmonize data using AWS Glue and AWS Lake Formation FindMatches ML to build a customer 360 view.

Conceitos básicos do uso da transformação Find Matches

Siga estas etapas para começar a usar a transformação FindMatches:

  1. Crie uma tabela no AWS Glue Data Catalog para os dados de origem que devem ser limpos. Para obter informações sobre como criar um crawler, consulte Trabalhar com crawlers no console do AWS Glue.

    Se os seus dados de origem forem um arquivo baseado em texto, como um arquivo de valores separados por vírgulas (CSV), considere o seguinte:

    • Mantenha o arquivo CSV de registros de entrada e o arquivo de rotulamento em pastas separadas. Caso contrário, o crawler do AWS Glue poderá considerá-los como várias partes da mesma tabela e criar tabelas no Data Catalog de maneira incorreta.

    • A menos que o arquivo CSV inclua somente caracteres ASCII, garanta que a codificação UTF-8 sem BOM (marca de ordem de byte) seja usada para os arquivos CSV. Geralmente, o Microsoft Excel adiciona uma BOM no início dos arquivos CSV em UTF-8. Para removê-la, abra o arquivo CSV em um editor de texto e salve novamente o arquivo como UTF-8 without BOM (UTF-8 sem BOM).

  2. No console do AWS Glue, crie uma tarefa e selecione o tipo de transformação Find matches (Encontrar correspondências).

    Importante

    A tabela da fonte de dados que você escolher para a tarefa não pode ter mais de 100 colunas.

  3. Instrua o AWS Glue a gerar um arquivo de rotulamento selecionando Generate labeling file (Gerar arquivo de rotulamento). O AWS Glue dá o primeiro passo no agrupamento de registros semelhantes para cada labeling_set_id, de maneira que você possa revisar esses agrupamentos. Rotule correspondências de rótulos na coluna label.

    • Se você já tiver um arquivo de rotulagem, ou seja, um exemplo de registros que indicam linhas correspondentes, faça upload do arquivo no Amazon Simple Storage Service (Amazon S3). Para obter informações sobre o formato do arquivo de rotulamento, consulte Formato do arquivo de rotulagem. Prossiga para a etapa 4.

  4. Faça download do arquivo de rotulamento e rotule-o conforme descrito na seção Rótulo.

  5. Faça upload do arquivo de rotulamento corrigido. O AWS Glue executa tarefas para ensinar a transformação a encontrar correspondências.

    Na página da lista Machine learning transforms (Transformações de machine learning), selecione a guia History (Histórico). Essa página indica quando o AWS Glue realiza as seguintes tarefas:

    • Import labels (Importar rótulos)

    • Export labels (Exportar rótulos)

    • Generate labels (Gerar rótulos)

    • Estimate quality (Estimar qualidade)

  6. Para criar uma transformação melhor, é possível fazer download, rotular e fazer upload do arquivo rotulado de maneira iterativa. Nas execuções iniciais, pode haver muito mais correspondências incorretas. No entanto, o AWS Glue aprende à medida que você continua a ensiná-lo ao verificar o arquivo de rotulamento.

  7. Avalie e ajuste a transformação avaliando a performance e os resultados da localização de correspondências. Para ter mais informações, consulte Ajustar transformações de machine learning no AWS Glue.

Rótulo

Quando a FindMatches gera um arquivo de rotulamento, os registros são selecionados da tabela de origem. Com base no treinamento anterior, a FindMatches identifica os registros mais valiosos dos quais deve aprender.

A ação de rotulamento consiste na edição de um arquivo de rotulamento (sugerimos usar uma planilha como o Microsoft Excel) e na adição de identificadores, ou rótulos, na coluna label que identifica registros correspondentes e não correspondentes. É importante ter uma definição clara e consistente de uma correspondência nos dados de origem. A FindMatches aprende dos registros que você designa como correspondências (ou não) e usa suas decisões para aprender a encontrar registros duplicados.

Quando um arquivo de rotulamento é gerado pela FindMatches, são gerados aproximadamente 100 registros. Geralmente, esses 100 registros são divididos em 10 conjuntos de rotulagem, nos quais cada conjunto de rótulos é identificado por um labeling_set_id exclusivo gerado pela FindMatches. Cada conjunto de rótulos deve ser visto como uma tarefa de rotulagem separada e independente dos demais conjuntos de rótulos. A sua tarefa é identificar os registros correspondentes e não correspondentes dentro de cada conjunto de rótulos.

Dicas para editar arquivos de rotulagem em uma planilha

Ao editar o arquivo de rotulamento em um aplicativo de planilha, considere o seguinte:

  • O arquivo pode não abrir com os campos de coluna totalmente expandidos. Pode ser necessário expandir as colunas labeling_set_id e label para ver o conteúdo dessas células.

  • Se a coluna de chave primária for um número, como um tipo de dados long, a planilha poderá interpretá-la como um número e alterar o valor. Esse valor de chave deve ser tratado como texto. Para corrigir esse problema, formate todas as células da coluna de chave primária como Text data (Dados de texto).

Formato do arquivo de rotulagem

O arquivo de rotulamento gerado pelo AWS Glue para ensinar a transformação FindMatches usa o formato a seguir. Se você gerar o seu próprio arquivo para o AWS Glue, ele também deve seguir este formato:

  • É um arquivo de valores separados por vírgulas (CSV).

  • Deve estar codificado em UTF-8. Se você editar o arquivo usando o Microsoft Windows, ele poderá ser codificado com cp1252.

  • Ele deve estar em um local do Amazon S3 para ser transmitido ao AWS Glue.

  • Use uma quantidade moderada de linhas para cada tarefa de rotulagem. Recomenda-se 10 a 20 linhas por tarefa, embora 2 a 30 linhas por tarefa seja aceitável. Tarefas com mais de 50 linhas não são recomendadas e podem gerar resultados insatisfatórios ou uma falha no sistema.

  • Caso já tenha dados rotulados que consistam em pares de registros rotulados como “correspondência” ou “não correspondência”, não há problema. Esses pares rotulados podem ser representados como conjuntos de rótulos de tamanho 2. Nesse caso, rotule ambos os registros com, por exemplo, uma letra “A” caso haja correspondência, e rotule um como “A” e outro como “B” caso não haja correspondência.

    nota

    Como ele tem colunas adicionais, o arquivo de rotulamento tem um esquema diferente de um arquivo que contém os dados de origem. Coloque o arquivo de rotulagem em uma pasta diferente de qualquer arquivo CSV de entrada da transformação, para que o crawler do AWS Glue não o considere ao criar tabelas no Data Catalog. Caso contrário, a tabela criada pelo crawler do AWS Glue poderá não representar seus dados de maneira correta.

  • As duas primeiras colunas (labeling_set_id e label) são exigidas pelo AWS Glue. As colunas restantes devem corresponder ao esquema dos dados a serem processados.

  • Para cada labeling_set_id, identifique todos os registros correspondentes usando o mesmo rótulo. Um rótulo é uma string exclusiva colocada na coluna label. Recomendamos o uso de rótulos que contenham caracteres simples, como A, B, C e assim por diante. Os rótulos diferenciam letras maiúsculas de minúsculas e são inseridos na coluna label.

  • As linhas que contêm o mesmo labeling_set_id e o mesmo rótulo são rotuladas como uma correspondência.

  • As linhas que contêm o mesmo labeling_set_id e um rótulo diferente são rotuladas como uma não correspondência.

  • As linhas que contêm um labeling_set_id diferente não têm informações que confirmam ou rejeitam a correspondência.

    Veja a seguir um exemplo de rotulamento dos dados:

    labeling_set_id rótulo first_name last_name Aniversário
    ABC123 A John Doe 01/04/1980
    ABC123 B Jane Smith 03/04/1980
    ABC123 A Johnny Doe 01/04/1980
    ABC123 A Jon Doe 01/04/1980
    DEF345 A Richard Jones 11/12/1992
    DEF345 A Rich Jones 12/11/1992
    DEF345 B Sara Jones 11/12/1992
    DEF345 C Richie Jones Jr. 06/05/2017
    DEF345 B Sara Jones-Walker 11/12/1992
    GHI678 A Robert Miller 03/01/1999
    GHI678 A Bob Miller 03/01/1999
    XYZABC A William Robinson 05/02/2001
    XYZABC B Andrew Robinson 05/02/1971
  • No exemplo acima, identificamos John/Johnny/Jon Doe como sendo uma correspondência e ensinamos o sistema que esses registros não correspondem a Jane Smith. Separadamente, ensinamos ao sistema que Richard e Rich Jones são a mesma pessoa, mas esses registros não correspondem a Sarah Jones/Jones-Walker e Richie Jones Jr.

  • Como pode ver, o escopo dos rótulos está limitado ao labeling_set_id. Portanto, os rótulos não cruzam os limites de labeling_set_id. Por exemplo, um rótulo "A" em labeling_set_id 1 não tem nenhuma relação com o rótulo "A" em labeling_set_id 2.

  • Se um registro não tiver correspondências dentro de um conjunto de rótulos, atribua um rótulo exclusivo ao registro. Por exemplo, Jane Smith não corresponde a qualquer registro no conjunto de rótulos ABC123, portanto, é o único registro nesse conjunto com o rótulo B.

  • O conjunto de rótulos “GHI678” mostra que um conjunto de rótulos pode consistir em apenas dois registros, que recebem o mesmo rótulo para indicar a correspondência. Da mesma forma, “XYZABC” mostra dois registros com rótulos diferentes para indicar que não são correspondentes.

  • Observe que, às vezes, um conjunto de rótulos pode não conter correspondências (ou seja, você atribui um rótulo diferente para cada registro dentro do conjunto de rótulos) ou todos os registros do conjunto de rótulos são “iguais” (todos recebem o mesmo rótulo). Isso não é um problema, contanto que os conjuntos de rótulos coletivamente contenham exemplos de registros que sejam e que não sejam “iguais” de acordo com seus critérios.

Importante

Confirme se a função do IAM transmitida ao AWS Glue tem acesso ao bucket do Amazon S3 que contém o arquivo de rotulagem. Por convenção, as políticas do AWS Glue concedem permissão às pastas ou aos buckets do Amazon S3 cujos nomes têm como prefixo aws-glue-. Se os arquivos de rotulagem estiverem em um local diferente, adicione uma permissão a essa localização na função do IAM.