Athrun Data Intelligence


Durante el año pasado, Desplazamiento al rojo del Amazonas ha introducido capacidades que simplifican las operaciones y mejoran la productividad. Aprovechando este impulso, estamos abordando otro desafío activo global al que se enfrentan los ingenieros de datos a diario: diligenciar operaciones de carga de datos repetitivas con parámetros similares en múltiples fuentes de datos. Esta publicación de nivel intermedio presenta AWS Plantillas de desplazamiento al rojouna nueva función que puede utilizar para crear patrones de comando reutilizables para el comando COPIARreduciendo la superfluidad y mejorando la coherencia en todas sus operaciones de datos.

El desafío: diligenciar operaciones de datos repetitivas a escalera

Conozca AnyCompany, una empresa ficticia de agregación de datos que procesa datos de transacciones de clientes de más de 50 clientes minoristas. Cada cliente envía diariamente archivos de texto delimitados con estructuras similares:

customer transactions | product catalogs | inventory updates

Si admisiblemente el formato de los datos es en gran medida consistente entre los clientes (archivos delimitados por tuberías con encabezados, codificación UTF-8), el gran tamaño de comandos COPY necesarios para cargar estos datos se ha convertido en una sobrecarga de avance y mantenimiento.

Su equipo de ingeniería de datos se enfrenta a varios puntos débiles:

  • Delimitación de parámetros repetitivos: Cada comando COPY requiere especificar los mismos parámetros para la configuración de delimitador, codificación, manejo de errores y compresión.
  • Riesgos de inconsistencia: Con varios miembros del equipo escribiendo comandos COPY, ligeras variaciones en los parámetros provocan fallas en la ingesta de datos
  • Gastos generales de mantenimiento: cuando necesitan ajustar umbrales de error o configuraciones de codificación, deben modernizar cientos de comandos COPY individuales en sus canalizaciones de procedencia, transformación y carga (ETL).
  • Complejidad de incorporación: Los nuevos miembros del equipo luchan por memorar todos los parámetros requeridos y sus títulos óptimos.

Adicionalmente, algunos clientes envían datos en formatos tenuemente diferentes. Algunos usan delimitadores de coma en área de barras verticales o tienen diferentes configuraciones de encabezado. El equipo necesita flexibilidad para manejar estas excepciones sin reescribir completamente su razonamiento de carga de datos.

Presentación de plantillas de desplazamiento al rojo

Puede acometer estos desafíos utilizando plantillas de Redshift para acumular los parámetros utilizados comúnmente para los comandos COPY como objetos de colchoneta de datos reutilizables. Piense en las plantillas como planos para sus operaciones de datos donde puede explicar sus parámetros una vez y luego hacer narración a ellos en múltiples comandos COPY.

Mejores prácticas de administración de plantillas

Antaño de explorar escenarios de implementación, establezcamos las mejores prácticas para la despacho de plantillas para asegurar que sus plantillas sigan siendo fáciles de abastecer y seguras.

  1. Utilice nombres descriptivos que indiquen el propósito:
    CREATE TEMPLATE analytics.csv_client_data_load;
    CREATE TEMPLATE analytics.json_retail_data_load;

  2. Implementar golpe con privilegios mínimos:
    -- Grant specific permissions to roles
    GRANT USAGE FOR TEMPLATES IN SCHEMA analytics TO ROLE data_engineers;
    GRANT ALTER FOR TEMPLATES IN SCHEMA reporting TO ROLE senior_analysts;
    -- Revoke broad permissions
    REVOKE ALL ON TEMPLATE analytics.csv_load FROM PUBLIC;

  3. Consulte la aspecto del sistema para realizar un seguimiento del uso de la plantilla:
    SELECT database_name, schema_name, template_name, 
           create_time, last_modified_time
    FROM sys_redshift_template;

  4. Documente cada plantilla, incluyendo:
    • Propósito y casos de uso
    • Explicaciones de parámetros
    • Propiedad e información de contacto
    • Historial de cambios

Descripción común de la decisión

Exploremos cómo AnyCompany utiliza las plantillas Redshift para optimizar sus operaciones de carga de datos.

Decorado 1: estandarizar la ingesta de datos del cliente

AnyCompany recibe archivos de transacciones de múltiples clientes minoristas con un formato consistente. Crean una plantilla que encapsula sus parámetros de carga estereotipado:

-- Create a reusable template for standard client data loads
CREATE TEMPLATE data_ingestion.standard_client_load
FOR COPY
AS
DELIMITER '|'
IGNOREHEADER 1
ENCODING UTF8
MAXERROR 100
COMPUPDATE OFF
STATUPDATE ON
ACCEPTINVCHARS
TRUNCATECOLUMNS;

Esta plantilla define su enfoque estereotipado:

  • DELIMITER '|' especifica archivos delimitados por barras verticales
  • IGNOREHEADER 1 salta la fila del encabezado
  • ENCODING UTF8 facilita la codificación adecuada de caracteres
  • MAXERROR 100 permite hasta 100 errores ayer de abortar, lo que brinda resiliencia para problemas menores de calidad de los datos
  • COMPUPDATE OFF ayuda a predisponer el investigación de compresión involuntario durante la carga para un rendimiento más rápido
  • STATUPDATE ON mantiene las estadísticas de la tabla actualizadas para la optimización de consultas
  • ACCEPTINVCHARS reemplaza caracteres UTF-8 no válidos en área de abortar
  • TRUNCATECOLUMNS trunca los datos que exceden el orondo de la columna en área de abortar

Ahora, cargar datos desde un cliente estereotipado se vuelve notablemente sencillo:

-- Load transaction data from Client A
COPY transactions_client_a
FROM 's3://amzn-s3-demo-bucket/client-a/transactions/'
IAM_ROLE default
USING TEMPLATE data_ingestion.standard_client_load;
-- Load transaction data from Client B
COPY transactions_client_b
FROM 's3://amzn-s3-demo-bucket/client-b/transactions/'
IAM_ROLE default
USING TEMPLATE data_ingestion.standard_client_load;
-- Load product catalog from Client C
COPY products_client_c
FROM 's3:// amzn-s3-demo-bucket/client-c/products/'
IAM_ROLE default
USING TEMPLATE data_ingestion.standard_client_load;

Observe cuán limpios y fáciles de abastecer son estos comandos. Cada exposición COPY especifica sólo:

  1. La tabla de destino
  2. El Servicio de almacenamiento simple de Amazon (Amazon S3) ubicación de origen
  3. El rol predeterminado de AWS Identity and Access Management (IAM) para autenticación
  4. La narración de la plantilla.

Los complejos parámetros de formato y manejo de errores están perfectamente encapsulados en la plantilla, lo que facilita la coherencia entre las cargas de datos.

Decorado 2: Manejo de variaciones específicas del cliente con anulaciones de parámetros

AnyCompany tiene dos clientes (Cliente D y E) que envían archivos delimitados por comas en área de archivos delimitados por barras verticales. En área de crear una plantilla completamente separada, pueden anular parámetros específicos y al mismo tiempo utilizar otras configuraciones de la plantilla:

-- Load data from Client D with comma delimiter (overriding template)
COPY transactions_client_d
FROM 's3://amzn-s3-demo-bucket/client-d/transactions/'
IAM_ROLE default
DELIMITER ','  -- Override the template's pipe delimiter
USING TEMPLATE data_ingestion.standard_client_load;
-- Load data from Client E with comma delimiter and no header
COPY transactions_client_e
FROM 's3://amzn-s3-demo-bucket/client-e/transactions/'
IAM_ROLE default
DELIMITER ','      -- Override delimiter
IGNOREHEADER 0     -- Override header setting
USING TEMPLATE data_ingestion.standard_client_load;

Esto demuestra la subordinación de parámetros de las plantillas de Redshift:

  1. Parámetros específicos del comando (prioridad más inscripción): Los parámetros especificados explícitamente en su comando COPY tienen prioridad
  2. Parámetros de plantilla (prioridad media): Los parámetros definidos en la plantilla se utilizan cuando no se anulan.
  3. Parámetros predeterminados de Amazon Redshift (prioridad más depreciación): Los títulos predeterminados se aplican cuando ni el comando ni la plantilla especifican un valía

Este enfoque de tres niveles proporciona el estabilidad consumado entre estandarización y flexibilidad. Mantiene la coherencia donde importa y al mismo tiempo conserva la capacidad de manejar las excepciones con elegancia.

Decorado 3: mantenimiento de plantilla simplificado

Seis meses luego de implementar las plantillas, el equipo de calidad de datos de AnyCompany recomienda aumentar el comienzo de error de 100 a 500 para manejar mejor los problemas ocasionales de calidad de los datos de los sistemas ascendentes. Con las plantillas, este cambio es trivial:

-- Update the template to increase error tolerance
ALTER TEMPLATE data_ingestion.standard_client_load
SET MAXERROR TO 500;

Este único comando actualiza instantáneamente el comportamiento de manejo de errores para futuras operaciones COPY usando esta plantilla sin privación de despabilarse en cientos de scripts ETL o pasar el peligro de perder actualizaciones en algunas canalizaciones. Todavía pueden amplificar nuevos parámetros a medida que evolucionan sus requisitos:

-- Add compression parameter to improve load performance
ALTER TEMPLATE data_ingestion.standard_client_load
ADD GZIP;

Para eliminar una plantilla cuando ya no es necesaria:

DROP TEMPLATE data_ingestion.standard_client_load;

Decorado 4: Plantillas específicas del entorno para avance y producción

AnyCompany mantiene plantillas separadas para entornos de avance y producción, con diferentes niveles de tolerancia a errores:

-- Development template with lenient error handling
CREATE TEMPLATE data_ingestion.dev_client_load
FOR COPY
AS
DELIMITER '|'
IGNOREHEADER 1
ENCODING UTF8
MAXERROR 1000        -- More lenient for testing
COMPUPDATE OFF
STATUPDATE OFF;      -- Skip stats updates in dev
-- Production template with strict error handling
CREATE TEMPLATE data_ingestion.prod_client_load
FOR COPY
AS
DELIMITER '|'
IGNOREHEADER 1
ENCODING UTF8
MAXERROR 50          -- Stricter for production
COMPUPDATE OFF
STATUPDATE ON;       -- Keep stats current in prod

Este enfoque ayuda a asegurar que los problemas de calidad de los datos se detecten tempranamente en la producción y, al mismo tiempo, permite flexibilidad durante el avance y las pruebas.

Beneficios esencia

Los beneficios esencia de usar plantillas incluyen:

  • Coherencia y estandarización: Las plantillas ayudan a abastecer la coherencia entre diferentes operaciones al asegurar que se utilice siempre el mismo conjunto de parámetros y configuraciones. Esto es particularmente valioso en organizaciones grandes donde varios usuarios trabajan en las mismas canalizaciones de datos.
  • Facilidad de uso y reducción de tiempo: En área de especificar manualmente los parámetros para cada ejecución de comando, los usuarios pueden consultar una plantilla predefinida. Esto ahorra tiempo y reduce las posibilidades de errores causados ​​por la entrada manual.
  • Flexibilidad con anulaciones de parámetros: Si admisiblemente las plantillas brindan estandarización, no sacrifican la flexibilidad. Puede anular un parámetro de plantilla directamente en su comando COPY cuando maneja excepciones o casos especiales.
  • Mantenimiento simplificado: cuando es necesario realizar cambios en parámetros o configuraciones, la modernización de la plantilla correspondiente propaga los cambios en todas las instancias en las que se utiliza la plantilla. Esto reduce significativamente el esfuerzo de mantenimiento en comparación con la modernización manual de cada comando individualmente.
  • Colaboración e intercambio de conocimientos.: Las plantillas sirven como colchoneta de conocimientos, capturando las mejores prácticas y configuraciones optimizadas desarrolladas por usuarios experimentados. Esto facilita el intercambio de conocimientos y la incorporación de nuevos miembros del equipo, lo que reduce la curva de educación y facilita el uso consistente de configuraciones probadas.

Casos de uso adicionales en todas las industrias

Las plantillas se pueden utilizar en todas las industrias.

Servicios financieros: estandarización de cargas de datos regulatorios

Una institución financiera necesita cargar datos de transacciones de múltiples sucursales con requisitos de formato consistentes:

-- Create template for branch transaction loads
CREATE TEMPLATE compliance.branch_transaction_load
FOR COPY
AS
FORMAT CSV
DELIMITER ','
IGNOREHEADER 1
ENCODING UTF8
DATEFORMAT 'YYYY-MM-DD'
TIMEFORMAT 'YYYY-MM-DD HH:MI:SS'
MAXERROR 0           -- Zero tolerance for compliance data
COMPUPDATE OFF;
-- Load data from different branches
COPY branch_transactions_east
FROM 's3://amzn-s3-demo-source-bucket/east-branch/transactions/'
IAM_ROLE default
USING TEMPLATE compliance.branch_transaction_load;
COPY branch_transactions_west
FROM 's3://amzn-s3-demo-source-bucket/west-branch/transactions/'
IAM_ROLE default
USING TEMPLATE compliance.branch_transaction_load;

Atención sanitaria: carga de datos de pacientes con estándares estrictos

Una empresa de investigación de atención médica estandariza la ingesta de datos de sus pacientes en múltiples sistemas hospitalarios:

-- Create template for HIPAA-compliant data loads
CREATE TEMPLATE healthcare.patient_data_load
FOR COPY
AS
FORMAT CSV
DELIMITER '|'
IGNOREHEADER 1
ENCODING UTF8
ACCEPTINVCHARS
TRUNCATECOLUMNS
MAXERROR 10
COMPUPDATE OFF;
-- Apply to different hospital systems
COPY hospital_a_patients
FROM 's3://amzn-s3-demo-destination-bucket/hospital-a/patients/'
IAM_ROLE default
USING TEMPLATE healthcare.patient_data_load;
COPY hospital_b_patients
FROM 's3://amzn-s3-demo-destination-bucket/hospital-b/patients/'
IAM_ROLE default
USING TEMPLATE healthcare.patient_data_load;

Comercio minorista: estandarización de la carga de datos JSON

Una empresa minorista procesa catálogos de productos con formato JSON de varios proveedores:

-- Create template for JSON product data
CREATE TEMPLATE retail.json_product_load
FOR COPY
AS
FORMAT JSON 'automóvil'
TIMEFORMAT 'automóvil'
ENCODING UTF8
MAXERROR 100
COMPUPDATE OFF;
-- Load from different suppliers
COPY products_supplier_a
FROM 's3://amzn-s3-demo-logging-bucket/supplier-a/products/'
IAM_ROLE default
USING TEMPLATE retail.json_product_load;
COPY products_supplier_b
FROM 's3://amzn-s3-demo-logging-bucket/supplier-b/products/'
IAM_ROLE default
USING TEMPLATE retail.json_product_load;

Conclusión

En esta publicación, presentamos las plantillas Redshift y mostramos ejemplos de cómo pueden estandarizar y simplificar sus operaciones de carga de datos en diferentes escenarios. Al encapsular parámetros comunes del comando COPY en objetos de colchoneta de datos reutilizables, las plantillas ayudan a eliminar especificaciones de parámetros repetitivas, facilitan la coherencia entre los equipos y centralizan el mantenimiento. Cuando los requisitos evolucionan, una única modernización de plantilla se propaga rápidamente a través de las operaciones, lo que reduce la sobrecarga operativa y al mismo tiempo mantiene la flexibilidad para anular parámetros para casos de uso.

Comience a utilizar plantillas de Redshift para trocar sus flujos de trabajo de ingesta de datos. Cree su primera plantilla para su patrón de carga de datos más global y luego amplíe gradualmente la cobertura en sus canales. Su equipo se beneficiará inmediatamente de un código más expedito, una incorporación más rápida y un mantenimiento simplificado. Para obtener más información sobre las plantillas de Redshift y explorar opciones de configuración adicionales, consulte la Documentación de Amazon Redshift.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *