Problema: El manejo de sistemas fuente que carecen de registros con marca de tiempo puede complicar significativamente el proceso de diseño de ETL. En este artículo, discutiremos tres alternativas diferentes de captura de cambios y le guiaremos a través de la implementación utilizando Azure Data Factory V2 con flujos de datos.
Flujos de datos por ADF
Azure Data Factory (ADF) ofrece diversas metodologías para resolver el problema de captura de cambios, como Azure-SSIS Integrated Runtime (IR), Flujos de datos impulsados por Databricks IR o Procedimientos almacenados de SQL Server. En este escenario, utilizaremos Flujos de datos impulsados por Databricks IR.
Para comenzar, necesitará una instancia de Azure SQL Database y recursos como SSIS y Data Bricks IRs. Una vez que haya configurado los recursos necesarios, puede crear una vista en la base de datos fuente para generar los datos de ventas. La base de datos de destino servirá como el almacén de datos.
El propósito del proceso de ETL es realizar un seguimiento de los cambios entre dos tablas de bases de datos identificando de manera única cada registro utilizando atributos como SalesOrderID, OrderDateTime, ProductName, ProductCode, Color y Size. Esto es particularmente útil en escenarios donde los detalles del pedido se actualizan después de que se haya escrito la línea de pedido inicial en la base de datos ERP.
En la arquitectura de Flujos de datos, puede utilizar la transformación “Derived Column” para calcular una columna de identidad de valor hash (HashId) utilizando el algoritmo SHA512. Este valor hash se utilizará para coincidir y actualizar registros en la tabla de destino.
Procedimientos almacenados de SQL Server
Si prefiere utilizar Procedimientos almacenados de SQL Server, Azure Data Factory proporciona una actividad para ejecutar procedimientos almacenados en el motor de base de datos Azure SQL o Microsoft SQL Server. Puede copiar datos de una base de datos Azure SQL a otra utilizando la actividad Copy Data, seguida de un procedimiento almacenado que calcula el HashId.
El código T-SQL para el procedimiento almacenado utiliza la función HASHBYTES() para calcular el HashId basado en los mismos atributos mencionados anteriormente. El procedimiento almacenado realiza una operación de combinación para actualizar los registros existentes e insertar nuevos registros en la tabla de destino. También incluye un paso para truncar la tabla de preparación después de cada carga.
Azure-SSIS
Si prefiere utilizar Azure-SSIS, puede orquestar la ejecución de paquetes SSIS desde el repositorio SSISDB. Para configurar Azure-SSIS, deberá configurar un tiempo de ejecución integrado de Azure-SSIS en la página de descripción general de ADF.
En la arquitectura de Azure-SSIS, puede utilizar un componente de script SSIS de C#.NET para calcular el HashId utilizando el algoritmo SHA512. El script maneja excepciones NULL para los atributos de color y tamaño y actualiza la columna HashId en el flujo de datos.
Conclusión
Las tres arquitecturas de canalización de Azure tienen sus ventajas y desventajas cuando se trata de captura de cambios utilizando algoritmos de hash. La arquitectura de Flujos de datos se destaca como una mejor opción en términos de usabilidad y escalabilidad. Ofrece un enfoque limpio para los valores de atributos hash. Sin embargo, los enfoques de Procedimiento almacenado y Azure-SSIS brindan un mayor control sobre el flujo de datos y el proceso de desarrollo.
Al comprender estas alternativas de captura de cambios, puede elegir el mejor enfoque para sus requisitos específicos e implementar de manera efectiva el seguimiento de cambios en su entorno de SQL Server.