View a markdown version of this page

Conectando dados em vários arquivos no Amazon S3 - AWS Glue DataBrew Guia do Desenvolvedor

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

Conectando dados em vários arquivos no Amazon S3

Com o DataBrew console, você pode navegar pelos buckets e pastas do Amazon S3 e escolher um arquivo para seu conjunto de dados. No entanto, um conjunto de dados não precisa ser limitado a um arquivo.

Suponha que você tenha um bucket do S3 chamado my-databrew-bucket que contém uma pasta chamadadatabrew-input. Nessa pasta, suponha que você tenha vários arquivos JSON, todos com o mesmo formato e extensão de .json arquivo. No console, você pode especificar uma URL de origem des3://my-databrew-bucket/databrew-input/. No DataBrew console, você pode então escolher essa pasta. Seu conjunto de dados consiste em todos os arquivos JSON dessa pasta.

DataBrew pode processar todos os arquivos em uma pasta do S3, mas somente se as seguintes condições forem verdadeiras:

  • Todos os arquivos na pasta têm o mesmo formato.

  • Todos os arquivos na pasta têm a mesma extensão de arquivo.

Para obter mais informações sobre extensões e formatos de arquivo compatíveis, consulteDataBrew input formats.

Esquemas ao usar vários arquivos como conjunto de dados

Ao usar vários arquivos como DataBrew conjunto de dados, os esquemas precisam ser os mesmos em todos os arquivos. Caso contrário, o Project Workspace tentará escolher automaticamente um dos esquemas dos vários arquivos e tentará adequar o restante dos arquivos do conjunto de dados a esse esquema. Esse comportamento faz com que a exibição exibida durante o Project Workspace seja irregular e, como resultado, a saída do trabalho também será irregular.

Se seus arquivos precisarem ter esquemas diferentes, você precisará criar vários conjuntos de dados e perfilá-los separadamente.

Usando caminhos parametrizados para o Amazon S3

Em alguns casos, talvez você queira criar um conjunto de dados com arquivos que sigam uma determinada convenção de nomenclatura ou um conjunto de dados que possa abranger várias pastas do Amazon S3. Ou talvez você queira reutilizar o mesmo conjunto de dados para dados estruturados de forma idêntica que são gerados periodicamente em um local do S3 com um caminho que depende de determinados parâmetros. Um exemplo é um caminho com o nome da data de produção de dados.

DataBrew suporta essa abordagem com caminhos S3 parametrizados. Um caminho parametrizado é uma URL do Amazon S3 contendo expressões regulares ou parâmetros de caminho personalizados, ou ambos.

Definindo um conjunto de dados com um caminho do S3 usando expressões regulares

Expressões regulares no caminho podem ser úteis para combinar vários arquivos de uma ou mais pastas e, ao mesmo tempo, filtrar arquivos não relacionados nessas pastas.

Aqui estão alguns exemplos:

  • Defina um conjunto de dados incluindo todos os arquivos JSON de uma pasta cujo nome começa com. invoice

  • Defina um conjunto de dados incluindo todos os arquivos em pastas com 2020 seus nomes.

Você pode implementar esse tipo de abordagem usando expressões regulares em um caminho S3 do conjunto de dados. Essas expressões regulares podem substituir qualquer substring na chave do URL do S3 (mas não o nome do bucket).

Como exemplo de uma chave em um URL do S3, veja o seguinte. Aqui my-bucket está o nome do bucket, Leste dos EUA (Ohio) é a AWS região e puppy.png é o nome da chave.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Em um caminho S3 parametrizado, todos os caracteres entre dois colchetes angulares (<e>) são tratados como expressões regulares. Dois exemplos são os seguintes:

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsoncorresponde a todos os arquivos nomeadosdata.json, em todas as subpastas databrew-input cujos nomes começam cominvoice.

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/corresponde a todos os arquivos em pastas com 2020 seus nomes.

Nesses exemplos, .* corresponde a zero ou mais caracteres.

nota

Você só pode usar expressões regulares na parte principal do caminho do S3 — a parte que vem depois do nome do bucket. Portanto, s3://my-databrew-bucket/<.*>-input/ é válido, mas s3://my-<.*>-bucket/<.*>-input/ não é.

Recomendamos que você teste suas expressões regulares para garantir que elas correspondam somente aos URLs do S3 que você deseja, e não aos que você não deseja.

Aqui estão alguns outros exemplos de expressões regulares:

  • <\d{2}>corresponde a uma string que consiste em exatamente dois dígitos consecutivos, por exemplo 07 ou03, mas não1a2.

  • <[a-z]+.*>corresponde a uma string que começa com uma ou mais letras latinas minúsculas e tem zero ou mais caracteres depois dela. Um exemplo é a3abc/def, oua-z, mas nãoA2.

  • <[^/]+>corresponde a uma string que contém qualquer caractere, exceto uma barra (/). Em uma URL do S3, barras são usadas para separar pastas no caminho.

  • <.*=.*>corresponde a uma string que contém um sinal de igual (=), por exemplo, ou month=02 abc/day=2=10, mas não. test

  • <\d.*\d>corresponde a uma string que começa e termina com um dígito e pode ter qualquer outro caractere entre os dígitos, por exemplo1abc2, ou 01-02-032020/Jul/21, mas não. 123a

Definindo um conjunto de dados com um caminho do S3 usando parâmetros personalizados

Definir um conjunto de dados parametrizado usando parâmetros personalizados oferece vantagens em relação ao uso de expressões regulares quando você pode querer fornecer parâmetros para um local do S3:

  • Você pode obter os mesmos resultados de uma expressão regular, sem precisar conhecer a sintaxe das expressões regulares. Você pode definir parâmetros usando termos familiares como “começa com” e “contém”.

  • Ao definir um conjunto de dados dinâmico usando parâmetros no caminho, você pode incluir um intervalo de tempo em sua definição, como “mês passado” ou “últimas 24 horas”. Dessa forma, sua definição de conjunto de dados será usada posteriormente com novos dados recebidos.

Aqui estão alguns exemplos de quando você pode querer usar conjuntos de dados dinâmicos:

  • Para conectar vários arquivos particionados pela data da última atualização ou outros atributos significativos em um único conjunto de dados. Em seguida, você pode capturar esses atributos de partição como colunas adicionais em um conjunto de dados.

  • Para restringir arquivos em um conjunto de dados a locais do S3 que atendam a determinadas condições. Por exemplo, suponha que seu caminho do S3 contenha pastas baseadas em datas, como. folder/2021/04/01/ Nesse caso, você pode parametrizar a data e restringi-la a um determinado intervalo, como “entre 01 de março de 2021 e 01 de abril de 2021" ou “Semana passada”.

Para definir um caminho usando parâmetros, defina os parâmetros e adicione-os ao seu caminho usando o seguinte formato:

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

nota

Assim como acontece com as expressões regulares em um caminho do S3, você só pode usar parâmetros na parte principal do caminho — a parte que vem depois do nome do bucket.

Dois campos são obrigatórios em uma definição de parâmetro, nome e tipo. O tipo pode ser Cadeia de caracteres, Número ou Data. Os parâmetros do tipo Data devem ter uma definição do formato da data para que DataBrew possam interpretar e comparar corretamente os valores da data. Opcionalmente, você pode definir condições de correspondência para um parâmetro. Você também pode optar por adicionar valores correspondentes de um parâmetro como uma coluna ao seu conjunto de dados quando ele está sendo carregado por um DataBrew trabalho ou sessão interativa.

Exemplo

Vamos considerar um exemplo de definição de um conjunto de dados dinâmico usando parâmetros no DataBrew console. Neste exemplo, suponha que os dados de entrada sejam gravados regularmente em um bucket do S3 usando locais como estes:

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

Há duas partes dinâmicas aqui: um código de país, como EUA, e uma data no nome do arquivo, como 2021-03-30. Aqui, você pode aplicar a mesma receita de limpeza para todos os arquivos. Digamos que você queira realizar seu trabalho de limpeza diariamente. Veja a seguir como você pode definir um caminho parametrizado para esse cenário:

  1. Navegue até um arquivo específico.

  2. Em seguida, selecione uma peça variável, como uma data, e substitua-a por um parâmetro. Nesse caso, substitua uma data.

    Caminho S3 com a data 2021-03-23 destacada para substituição por um parâmetro.
  3. Abra o menu de contexto (clique com o botão direito do mouse) para Criar parâmetro personalizado e defina as propriedades para ele:

    • Nome: data do relatório

    • Tipo: data

    • Formato de data: aaaa- MM-dd (selecionado a partir dos formatos predefinidos)

    • Condições (intervalo de tempo): últimas 24 horas

    • Adicionar como coluna: verdadeiro (verificado)

    Mantenha os outros campos em seus valores padrão.

  4. Escolha Criar.

Depois disso, você verá o caminho atualizado, como na captura de tela a seguir.

Caminho do S3 com espaço reservado para parâmetros mostrando 6 arquivos correspondentes encontrados no bucket.

Agora você pode fazer o mesmo com o código do país e parametrizá-lo da seguinte forma:

  • Nome: código do país

  • Tipo: string

  • Adicionar como coluna: verdadeiro (verificado)

Você não precisa especificar condições se todos os valores forem relevantes. Na new-cases pasta, por exemplo, só temos subpastas com códigos de país, então não há necessidade de condições. Se você tiver outras pastas para excluir, poderá usar a condição a seguir.

Campo de valor de string contendo o padrão regex A-Z seguido por 2 entre colchetes.

Essa abordagem limita as subpastas de novos casos a conter dois caracteres latinos maiúsculos.

Após essa parametrização, você tem apenas arquivos correspondentes em nosso conjunto de dados e pode escolher Criar conjunto de dados.

nota

Quando você usa intervalos de tempo relativos em condições, os intervalos de tempo são avaliados quando o conjunto de dados é carregado. Isso é verdade se forem intervalos de tempo predefinidos, como “Últimas 24 horas”, ou intervalos de tempo personalizados, como “5 dias atrás”. Essa abordagem de avaliação se aplica se o conjunto de dados for carregado durante a inicialização de uma sessão interativa ou durante o início de um trabalho.

Depois de escolher Criar conjunto de dados, seu conjunto de dados dinâmico estará pronto para uso. Por exemplo, você pode usá-lo primeiro para criar um projeto e definir uma receita de limpeza usando uma DataBrew sessão interativa. Em seguida, você pode criar um trabalho programado para ser executado diariamente. Esse trabalho pode aplicar a receita de limpeza aos arquivos do conjunto de dados que atendam às condições de seus parâmetros no momento em que o trabalho é iniciado.

Condições suportadas para conjuntos de dados dinâmicos

Você pode usar condições para filtrar arquivos S3 correspondentes usando parâmetros ou o atributo de data da última modificação.

A seguir, você encontrará listas de condições suportadas para cada tipo de parâmetro.

Condições usadas com parâmetros String
Nome no DataBrew SDK Sinônimos de SDK Nome no DataBrew console Description

é

equação, ==

É exatamente

O valor do parâmetro é igual ao valor fornecido na condição.

não é

não eq,! =

Não é

O valor do parâmetro não é o mesmo que o valor fornecido na condição.

contém

Contém

O valor da string do parâmetro contém o valor fornecido na condição.

não contém

Não contém

O valor da string do parâmetro não contém o valor fornecido na condição.

começa_com

Inicia com

O valor da string do parâmetro começa com o valor fornecido na condição.

não começa com

Não começa com

O valor da string do parâmetro não começa com o valor fornecido na condição.

ends_with

Termina com

O valor da string do parâmetro termina com o valor fornecido na condição.

não termina com

Não termina com

O valor da string do parâmetro não termina com o valor fornecido na condição.

matches

Correspondências

O valor do parâmetro corresponde à expressão regular fornecida na condição.

não corresponde

Não coincide

O valor do parâmetro não corresponde à expressão regular fornecida na condição.

nota

Todas as condições dos parâmetros String usam comparação com distinção entre maiúsculas e minúsculas. Se você não tiver certeza sobre o caso usado em um caminho do S3, você pode usar a condição “matches” com um valor de expressão regular que começa com(?i). Fazer isso resulta em uma comparação sem distinção entre maiúsculas e minúsculas.

Por exemplo, suponha que você queira que seu parâmetro de string comece comabc, mas Abc também seja possível. ABC Nesse caso, você pode usar a condição “matches” (?i)^abc como valor da condição.

Condições usadas com parâmetros numéricos
Nome no DataBrew SDK Sinônimos de SDK Nome no DataBrew console Description

é

equação, ==

É exatamente

O valor do parâmetro é igual ao valor fornecido na condição.

não é

não eq,! =

Não é

O valor do parâmetro não é o mesmo que o valor fornecido na condição.

menos_que

lt, <

Menor que

O valor numérico do parâmetro é menor que o valor fornecido na condição.

menos_que_igual

tarde, <=

Menor ou igual a

O valor numérico do parâmetro é menor ou igual ao valor fornecido na condição.

maior_que

gt, >

Maior que

O valor numérico do parâmetro é maior que o valor fornecido na condição.

maior_que_igual

obter, =>

Maior ou igual a

O valor numérico do parâmetro é maior ou igual ao valor fornecido na condição.

Condições usadas com parâmetros de data
Nome no DataBrew SDK Nome no DataBrew console Formato do valor da condição (SDK) Description

after

Início

Formato de data ISO 8601, como ou 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

O valor do parâmetro de data é posterior à data fornecida na condição.

antes

Fim

Formato de data ISO 8601, como ou 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

O valor do parâmetro de data é anterior à data fornecida na condição.

relativo_depois

Início (relativo)

Número positivo ou negativo de unidades de tempo, como -48h ou+7d.

O valor do parâmetro de data é posterior à data relativa fornecida na condição.

As datas relativas são avaliadas quando o conjunto de dados é carregado, quando uma sessão interativa é inicializada ou quando um trabalho associado é iniciado. Esse é o momento chamado de “agora” nos exemplos.

relativo_antes

Fim (relativo)

Número positivo ou negativo de unidades de tempo, como -48h ou+7d.

O valor do parâmetro de data é anterior à data relativa fornecida na condição.

As datas relativas são avaliadas quando o conjunto de dados é carregado, quando uma sessão interativa é inicializada ou quando um trabalho associado é iniciado. Esse é o momento chamado de “agora” nos exemplos.

Se você usa o SDK, forneça datas relativas no seguinte formato:±{number_of_time_units}{time_unit}. Você pode usar essas unidades de tempo:

  • -1h (1 hora atrás)

  • +2d (a partir de agora 2 dias)

  • -120m (120 minutos atrás)

  • 5000s (5.000 segundos a partir de agora)

  • -3w (3 semanas atrás)

  • +4M (daqui a 4 meses)

  • -1y (1 ano atrás)

As datas relativas são avaliadas quando o conjunto de dados é carregado, quando uma sessão interativa é inicializada ou quando um trabalho associado é iniciado. Esse é o momento chamado de “agora” nos exemplos anteriores.

Definindo configurações para conjuntos de dados dinâmicos

Além de fornecer um caminho S3 parametrizado, você pode definir outras configurações para conjuntos de dados com vários arquivos. Essas configurações filtram os arquivos do S3 pela data da última modificação e limitam o número de arquivos.

Semelhante à configuração de um parâmetro de data em um caminho, você pode definir um intervalo de tempo em que os arquivos correspondentes foram atualizados e incluir somente esses arquivos em seu conjunto de dados. Você pode definir esses intervalos usando datas absolutas, como “30 de março de 2021", ou intervalos relativos, como “Últimas 24 horas”.

Especifique a caixa de seleção do último intervalo de datas atualizado selecionada no menu suspenso Últimas 24 horas.

Para limitar o número de arquivos correspondentes, selecione um número de arquivos maior que 0 e se você deseja os arquivos correspondentes mais recentes ou os mais antigos.

Caixa de seleção selecionada para Especificar o número de arquivos a serem incluídos no menu suspenso Últimos e 10 arquivos.