Filtragem de dados para integrações ETL zero do Aurora com o Amazon Redshift. - Amazon Aurora

Filtragem de dados para integrações ETL zero do Aurora com o Amazon Redshift.

É possível usar a filtragem de dados para integrações ETL zero do Aurora para definir o escopo da replicação do cluster de banco de dados de origem do Aurora para o data warehouse de destino do Amazon Redshift. Em vez de replicar todos os dados para o destino, é possível definir um ou mais filtros que incluam ou excluam seletivamente determinadas tabelas da replicação. Somente a filtragem no nível do banco de dados e da tabela está disponível para integrações ETL zero. Não é possível filtrar por colunas ou linhas.

A filtragem de dados pode ser útil quando você deseja:

  • Una determinadas tabelas de dois ou mais clusters de origem diferentes para não precisar de dados completos de nenhum cluster.

  • Economize custos realizando análises usando apenas um subconjunto de tabelas em vez de uma frota inteira de bancos de dados.

  • Filtre informações confidenciais, como números de telefone, endereços ou detalhes do cartão de crédito, de determinadas tabelas.

É possível adicionar filtros de dados a uma integração ETL zero usando o AWS Management Console, a AWS Command Line Interface (AWS CLI) ou a API do Amazon RDS.

Se a integração tiver um cluster provisionado do Amazon Redshift como destino, o cluster deverá estar no patch 180 ou posterior.

nota

No momento, é possível realizar a filtragem de dados somente em integrações que tenham fontes do Aurora MySQL. A versão prévia das integrações ETL zero do Aurora PostgreSQL com o Amazon Redshift não é compatível com a filtragem de dados.

Formato de um filtro de dados

É possível definir vários filtros para uma única integração. Cada filtro inclui ou exclui qualquer tabela de banco de dados existente e futura que corresponda a um dos padrões na expressão do filtro. As integrações ETL zero do Aurora usam a sintaxe de filtro Maxwell para a filtragem de dados.

Cada filtro tem os seguintes elementos:

Elemento Descrição
Tipo de filtro

Um tipo de filtro Include inclui todas as tabelas que correspondem a um dos padrões na expressão do filtro. Um tipo de filtro Exclude exclui todas as tabelas que correspondem a um dos padrões.

Expressão de filtro

Uma lista separada por vírgulas de padrões. As expressões devem usar a sintaxe de filtro Maxwell.

Padrão

Um padrão de filtro no formato database.table. É possível especificar nomes literais de bancos de dados e tabelas, como mydb.mytable, ou usar curingas (*). Também é possível definir expressões regulares no banco de dados e no nome da tabela.

O Aurora permite a filtragem somente no nível do banco de dados e da tabela. Não é possível incluir filtros no nível da coluna (database.table.column) nem listas de bloqueio (blacklist: bad_db.*).

Uma única integração pode ter um máximo de 99 padrões no total. No console, é possível conter padrões em uma única expressão de filtro ou distribuí-los entre várias expressões. Um único padrão não pode exceder 256 caracteres.

A imagem a seguir mostra a estrutura dos filtros de dados no console:

Filtragem de dados para uma Integração ETL zero
Importante

Não inclua informações pessoais, confidenciais ou sigilosas em seus padrões de filtragem.

Filtros de dados na AWS CLI

Ao usar a AWS CLI para adicionar um filtro de dados, a sintaxe difere um pouco em comparação com o console. Cada padrão individual deve ser associado ao seu próprio tipo de filtro (Include ou Exclude). Não é possível agrupar vários padrões com um único tipo de filtro.

Por exemplo, no console, é possível agrupar os seguintes padrões separados por vírgula em uma única instrução Include:

mydb.mytable, mydb./table_\d+/

No entanto, ao usar a AWS CLI, o mesmo filtro de dados deve estar no seguinte formato:

'include: mydb.mytable, include: mydb./table_\d+/'

Lógica de filtros

Se você não especificar nenhum filtro de dados na integração, o Aurora assume um filtro padrão de include:*.* e replica todas as tabelas no data warehouse de destino. No entanto, se você especificar pelo menos um filtro, a lógica começa com um suposto exclude:*.*, o que significa que todas as tabelas são automaticamente excluídas da replicação. Isso permite que você defina diretamente quais tabelas e bancos de dados incluir.

Por exemplo, se você definir o seguinte filtro:

'include: db.table1, include: db.table2'

O Aurora avaliará o filtro da seguinte forma:

'exclude:*.*, include: db.table1, include: db.table2'

Portanto, somente table1 e table2 do banco de dados denominado db serão replicados no data warehouse de destino.

Precedência do filtro

O Aurora avalia os filtros de dados na ordem em que são especificados. No AWS Management Console, isso significa que o Aurora avalia expressões de filtro da esquerda para a direita e de cima para baixo. Se você especificar determinado padrão para o primeiro filtro, um segundo filtro ou até mesmo um padrão individual especificado imediatamente após ele poderá substituí-lo.

Por exemplo, o primeiro filtro pode ser Include books.stephenking, que inclui uma única tabela chamada stephenking de dentro do banco de dados books. No entanto, se você adicionar um segundo filtro de Exclude books.*, ele substituirá o filtro Include definido antes dele. Portanto, nenhuma tabela do índice books é replicada para o Amazon Redshift.

Se você especificar pelo menos um filtro, a lógica começa com um suposto exclude:*.*, o que significa que todas as tabelas são automaticamente excluídas da replicação. Portanto, como prática recomendada geral, defina os filtros do mais amplo para o menos amplo. Por exemplo, use uma ou mais instruções Include para definir todos os dados que você deseja replicar. Depois, comece a adicionar filtros Exclude para excluir seletivamente determinadas tabelas da replicação.

O mesmo princípio se aplica aos filtros que você define usando a AWS CLI. O Aurora avalia esses padrões de filtro na ordem em que são especificados, portanto, um padrão pode substituir um especificado antes dele.

Exemplos

Os exemplos a seguir demonstram como a filtragem de dados funciona para integrações ETL zero:

  • Inclua todos os bancos de dados e todas as tabelas:

    'include: *.*'
  • Inclua todas as tabelas no banco de dados books:

    'include: books.*'
  • Exclua todas as tabelas chamadas mystery:

    'include: *.*, exclude: *.mystery'
  • Inclua duas tabelas específicas no banco de dados books:

    'include: books.stephen_king, include: books.carolyn_keene'
  • Inclua todas as tabelas no banco de dados books, exceto aquelas que contêm a substring mystery:

    'include: books.*, exclude: books./.*mystery.*/
  • Inclua todas as tabelas no banco de dados books, exceto aquelas que começam com mystery:

    'include: books.*, exclude: books./mystery.*/'
  • Inclua todas as tabelas no banco de dados books, exceto aquelas que terminam com mystery:

    'include: books.*, exclude: books./.*mystery/'
  • Inclua todas as tabelas no banco de dados books que começam com table_, exceto aquela chamada table_stephen_king. Por exemplo, table_movies ou table_books seria replicada, mas não table_stephen_king.

    'include: books./table_.*/, exclude: books.table_stephen_king'

Adicionar filtros de dados a uma integração

É possível configurar a filtragem de dados usando o AWS Management Console, a AWS CLI ou a API do Amazon RDS.

Importante

Se você adicionar um filtro depois de criar uma integração, o Aurora reavaliará o filtro como se ele sempre tivesse existido. Ele remove todos os dados que estão atualmente no data warehouse de destino do Amazon Redshift que não correspondem aos novos critérios de filtragem. Essa ação faz com que todas as tabelas afetadas sejam sincronizadas novamente.

No momento, só é possível realizar a filtragem de dados em integrações que tenham fontes do Aurora MySQL. A versão prévia das Integrações ETL zero do Aurora PostgreSQL com o Amazon Redshift não é compatível com a filtragem de dados.

Para adicionar filtros de dados para uma integração ETL zero
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Integrações ETL zero. Selecione a integração à qual você deseja adicionar filtros de dados e escolha Modificar.

  3. Em Fonte, adicione uma ou mais instruções Exclude e Include.

    A imagem a seguir mostra um exemplo de filtros de dados para uma integração:

    Filtragens de dados para uma integração ETL zero no console do RDS
  4. Quando todas as alterações estiverem conforme desejado, escolha Continuar e Salvar alterações.

Para adicionar filtros de dados a uma integração ETL zero usando a AWS CLI, chame o comando modify-integration. Além do identificador de integração, especifique o parâmetro --data-filter com uma lista separada por vírgulas dos filtros Maxwell Include e Exclude.

O exemplo a seguir adiciona padrões de filtro a my-integration.

Para Linux, macOS ou Unix:

aws rds modify-integration \ --integration-identifier my-integration \ --data-filter 'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'

Para Windows:

aws rds modify-integration ^ --integration-identifier my-integration ^ --data-filter 'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'

Para modificar uma integração ETL zero usando a API do RDS, chame a operação ModifyIntegration. Especifica o identificador de integração e fornece uma lista separada por vírgulas de padrões de filtro.

Remover filtros de dados de uma integração

Quando você remove um filtro de dados de uma integração, o Aurora reavalia os filtros restantes como se o filtro removido nunca tivesse existido. Depois, o Aurora replica todos os dados que anteriormente não correspondiam aos critérios de filtragem (mas agora correspondem) no data warehouse de destino do Amazon Redshift.

A remoção de um ou mais filtros de dados faz com que todas as tabelas afetadas sejam sincronizadas novamente.