Filtrado de datos para integraciones sin ETL de Amazon RDS con Amazon Redshift - Amazon Relational Database Service

Filtrado de datos para integraciones sin ETL de Amazon RDS con Amazon Redshift

Puede utilizar el filtrado de datos para las integraciones sin ETL de Amazon RDS para definir el alcance de la replicación desde la base de datos Amazon RDS de origen hasta el almacenamiento de datos de Amazon Redshift de destino. En lugar de replicar todos los datos en el destino, puede definir uno o más filtros que incluyan o excluyan de forma selectiva determinadas tablas para que no se repliquen. Para las integraciones sin ETL, solo está disponible el filtrado de la base de datos y de la tabla. No es posible filtrar por columnas o filas.

El filtrado de datos puede resultar útil cuando desee:

  • Una determinadas tablas de dos o más bases de datos de origen diferentes y no necesita datos completos de la base de datos.

  • Ahorrar costos realizando análisis utilizando únicamente un subconjunto de tablas en lugar de una flota completa de bases de datos.

  • Filtrar la información confidencial (como números de teléfono, direcciones o datos de tarjetas de crédito) de determinadas tablas.

Puede agregar filtros de datos a una integración sin ETL mediante la AWS Management Console, la AWS Command Line Interface (AWS CLI) o la API de Amazon RDS.

Si la integración tiene un clúster de Amazon Redshift aprovisionado como destino, el clúster debe tener el parche 180 o uno posterior.

Formato de un filtro de datos

Puede definir varios filtros para una sola integración. Cada filtro incluye o excluye cualquier tabla de base de datos existente y futura que coincida con uno de los patrones de la expresión del filtro. Las integraciones sin ETL de Amazon RDS utilizan la sintaxis de filtro Maxwell para el filtrado de datos.

Cada filtro tiene los siguientes elementos:

Elemento Descripción
Tipo de filtro

Un tipo de filtro Include incluye todas las tablas que coinciden con uno de los patrones de la expresión de filtro. Un tipo de filtro Exclude excluye todas las tablas que coinciden con uno de los patrones.

Expresión de filtro

Una lista separada por comas de patrones. Las expresiones deben usar la sintaxis de filtro Maxwell.

Patrón

Un patrón de filtro en el formato database.table. Puede especificar nombres literales de bases de datos y tablas (por ejemplo, mydb.mytable) o utilizar caracteres comodín (*). También puede definir expresiones regulares en el nombre de la base de datos y de la tabla.

Amazon RDS solo admite el filtrado de la base de datos y la tabla. No puede incluir filtros en columnas (database.table.column) ni listas de denegación

Una sola integración puede tener un máximo de 99 patrones en total. En la consola, puede incluir patrones dentro de una sola expresión de filtro o distribuirlos entre varias expresiones. Un único patrón no puede superar los 256 caracteres de longitud.

En la imagen siguiente, se muestra la estructura de los filtros de datos en la consola:

Filtros de datos para integraciones sin ETL
importante

No incluya información de identificación personal, confidencial o sensible en sus patrones de filtros.

Filtros de datos en la AWS CLI

Cuando se utiliza la AWS CLI para agregar un filtro de datos, la sintaxis es ligeramente diferente a la de la consola. Cada patrón individual debe estar asociado a su propio tipo de filtro (Include o Exclude). No puede agrupar varios patrones con un solo tipo de filtro.

Por ejemplo, en la consola puede agrupar los siguientes patrones separados por comas en una sola instrucción Include:

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

Sin embargo, al utilizar la AWS CLI, el mismo filtro de datos debe tener el siguiente formato:

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

Lógica de filtros

Si no especifica ningún filtro de datos en la integración, Amazon RDS asume un filtro predeterminado de include:*.* y replica todas las tablas en el almacenamiento de datos de destino. Sin embargo, si especifica al menos un filtro, la lógica comienza con un exclude:*.* supuesto, lo que significa que todas las tablas se excluyen automáticamente de la replicación. Esto le permite definir directamente qué tablas y bases de datos incluir.

Por ejemplo, si hace lo siguiente:

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

Amazon RDS evalúa el filtro de la siguiente manera:

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

Por lo tanto, solo table1 y table2 de la base de datos denominada db se replican en el almacenamiento de datos de destino.

Prioridad del filtro

Amazon RDS evalúa los filtros de datos en el orden en que se especifican. En la AWS Management Console, esto significa que Amazon RDS evalúa las expresiones de filtro de izquierda a derecha y de arriba abajo. Si especifica un patrón determinado para el primer filtro, un segundo filtro o incluso un patrón individual que se especifique inmediatamente después podrá anularlo.

Por ejemplo, el primer filtro podría ser Include books.stephenking, que incluye una sola tabla denominada stephenking que proviene de la base de datos books. Sin embargo, si agrega un segundo filtro de Exclude books.*, este anulará el filtro Include definido anteriormente. Por lo tanto, no se replica ninguna tabla del índice books en Amazon Redshift.

Si especifica al menos un filtro, la lógica comienza con un exclude:*.* supuesto, lo que significa que todas las tablas se excluyen automáticamente de la replicación. Por lo tanto, como práctica recomendada general, defina los filtros del más amplio al menos amplio. Por ejemplo, utilice una o más instrucciones Include para definir todos los datos que desee replicar. A continuación, comience a agregar filtros Exclude para excluir selectivamente determinadas tablas de la replicación.

El mismo principio se aplica a los filtros que se definen mediante la AWS CLI. Amazon RDS evalúa estos patrones de filtro en el orden en que se especificaron, por lo que un patrón podría anular a otro especificado anteriormente.

Ejemplos

En los siguientes ejemplos, se muestra cómo funciona el filtrado de datos para las integraciones sin ETL:

  • Incluir todas las bases de datos y todas las tablas:

    'include: *.*'
  • Incluir todas las tablas en la base de datos books:

    'include: books.*'
  • Excluya cualquier tabla con el nombre mystery:

    'include: *.*, exclude: *.mystery'
  • Incluir dos tablas específicas en la base de datos books:

    'include: books.stephen_king, include: books.carolyn_keene'
  • Incluya todas las tablas de la base de datos books, excepto las que contengan la subcadena mystery:

    'include: books.*, exclude: books./.*mystery.*/'
  • Incluya todas las tablas de la base de datos books, excepto las que comiencen por mystery:

    'include: books.*, exclude: books./mystery.*/'
  • Incluya todas las tablas de la base de datos books, excepto las que finalicen por mystery:

    'include: books.*, exclude: books./.*mystery/'
  • Incluya todas las tablas de la base de datos books que comiencen por table_, excepto la que se llama table_stephen_king. Por ejemplo, table_movies o table_books se replicaría, pero no table_stephen_king.

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

Adición de filtros de datos a una integración

Puede configurar el filtrado de datos mediante la AWS Management Console, la AWS CLI o la API de Amazon RDS.

importante

Si agrega un filtro después de crear una integración, Amazon RDS volverá a evaluar el filtro como si hubiera existido siempre. Elimina cualquier dato que se encuentre actualmente en el almacenamiento de datos de Amazon Redshift de destino y que no coincida con los nuevos criterios de filtrado. Esta acción hace que todas las tablas afectadas se vuelvan a sincronizar.

Adición de filtros de datos a una integración sin ETL
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, elija Integraciones sin ETL. Seleccione la integración a la que desea agregar filtros de datos y, a continuación, elija Modificar.

  3. En Origen, agregue una o más instrucciones Include y Exclude.

    En la imagen siguiente, se muestra un ejemplo de filtros de datos para una integración:

    Filtros de datos para una integración sin ETL en la consola de RDS
  4. Cuando haya realizado todos los cambios que desee, elija Continuar y Guardar cambios.

Para agregar filtros de datos a una integración sin ETL mediante la AWS CLI, llame al comando modify-integration. Además del identificador de integración, especifique el parámetro --data-filter con una lista separada por comas de filtros Include y Exclude Maxwell.

En el siguiente ejemplo, se agregan patrones de filtro a my-integration.

Para Linux, macOS o:Unix

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

En:Windows

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

Para modificar una integración sin ETL mediante la API de RDS, llame a la operación ModifyIntegration. Especifique el identificador de integración y proporcione una lista separada por comas de patrones de filtro.

Eliminación de filtros de datos de una integración

Al eliminar un filtro de datos de una integración, Amazon RDS vuelve a evaluar los filtros restantes como si el filtro eliminado nunca hubiera existido. A continuación, Amazon RDS replica los datos que anteriormente no coincidían con los criterios de filtrado (pero que ahora sí) en el almacenamiento de datos de Amazon Redshift de destino.

La eliminación de uno o más filtros de datos hace que todas las tablas afectadas se vuelvan a sincronizar.