Ir al contenido principal

Carga de una dimensión de tipo 2 de cambio lento de un almacén de datos mediante Matillion en la plataforma Databricks Lakehouse

Administración de SCD tipo 2 con Matillion en Databricks

Loading a Data Warehouse Slowly Changing Dimension Type 2 Using Matillion on Databricks Lakehouse Platform

Publicado: 25 de enero de 2023

Socios5 min de lectura

Esta es una publicación colaborativa entre Databricks y Matillion. Agradecemos a David Willmer, Product Marketing en Matillion, por sus contribuciones.

 

A medida que más y más clientes modernizan su Enterprise Data Warehouse heredado y las plataformas ETL más antiguas, buscan adoptar una pila de datos en la nube moderna utilizando Databricks Lakehouse Platform y Matillion para ETL basado en GUI. La plataforma ELT visual y de bajo código de Matillion facilita que cualquiera pueda integrar datos de cualquier fuente en Databricks SQL Warehouse, lo que hace que los datos de análisis e IA estén listos para el negocio y sean más rápidos.

Este blog le mostrará cómo crear una canalización ETL que cargue una Dimensión de Variación Lenta (SCD) Tipo 2 usando Matillion en Databricks Lakehouse Platform. Matillion tiene una interfaz de usuario moderna basada en navegador con funcionalidad ETL/ELT push-down. Puede integrar fácilmente sus warehouses de Databricks SQL o clusters con Matillion. Ahora bien, si se pregunta cómo conectarse a Matillion usando Databricks, la forma más fácil de hacerlo es usar Partner Connect, que simplifica el proceso de conectar un SQL warehouse o cluster existente en su espacio de trabajo de Databricks a Matillion. Aquí están los pasos detallados.

¿Qué es una Dimensión de Variación Lenta (SCD) tipo 2?

Una SCD Tipo 2 es una técnica común para preservar el historial en una tabla de dimensiones utilizada en cualquier arquitectura de modelado/almacenamiento de datos. Las filas inactivas tienen un indicador booleano, como la columna ACTIVE_RECORD establecida en 'F' o una fecha de inicio y finalización. Todas las filas activas se muestran al devolver una consulta donde la fecha de finalización es nula o ACTIVE_RECORD no es igual a 'F'

Dimension Table before SCD2 Changes - This data warehouse table represents a typical scenario of tagging Inactive records with an "End Date".
Dimension Table before SCD2 Changes - This data warehouse table represents a typical scenario of tagging Inactive records with an “End Date”.

Matillion ETL for Delta Lake on Databricks utiliza un enfoque de dos pasos para administrar las Dimensiones de Variación Lenta de Tipo 2. Este enfoque de dos pasos implica primero identificar los cambios en los registros entrantes y marcarlos en una tabla o vista temporal. Una vez que todos los registros entrantes están marcados, se pueden tomar medidas en la tabla de dimensiones de destino para completar la actualización.

Ahora, echemos un vistazo más de cerca a la implementación de las transformaciones SCD Tipo 2 usando Matillion, donde su destino es una tabla Delta Lake y la opción de cálculo subyacente utilizada es un Databricks SQL Warehouse.

Paso 1: Preparación de los cambios de dimensión

A medida que observamos el Paso 1 a continuación, la canalización ETL lee los datos de nuestra tabla de dimensiones Delta Lake existente e identifica solo los registros más actuales o activos (este es el flujo de datos inferior). Al mismo tiempo, leeremos todos nuestros datos nuevos, asegurándonos de que la clave principal prevista sea única para no interrumpir el proceso de detección de cambios (este es el flujo de datos superior). Estos dos caminos luego convergen en el componente de detección de cambios.

Step 1: Detect Changes - This pipeline compares new data records with existing data records already in a dimension table of your Lakehouse. Using the Detect Change Component within Matillion ETL, records are flagged as New, Changed or Deleted and written to an intermediate view.
Step 1: Detect Changes - This pipeline compares new data records with existing data records already in a dimension table of your Lakehouse. Using the Detect Change Component within Matillion ETL, records are flagged as New, Changed or Deleted and written to an intermediate view.

Dentro de Matillion ETL, el componente Detect Changes es un mecanismo central para determinar las actualizaciones e inserciones de los registros modificados. Compara un conjunto de datos entrante con un conjunto de datos de destino y determina si los registros son Idénticos, Cambiados, Nuevos o Eliminados mediante el uso de una lista de columnas de comparación configuradas dentro del componente. Cada registro del nuevo conjunto de datos se evalúa y se le asigna un campo indicador en la salida del componente Detect Changes: 'I' para Idéntico, 'C' para Cambiado, 'N' para Nuevo y 'D' para Eliminado.

Data Warehouse Staging Table - This table represents a typical staging table in a data warehouse that populates a "Change Code" field after comparing incoming data with a target table and determining if the records are Identical, Changed, New or Deleted.
Data Warehouse Staging Table - This table represents a typical staging table in a data warehouse that populates a “Change Code” field after comparing incoming data with a target table and determining if the records are Identical, Changed, New or Deleted.

La acción final en el Paso 1 de este enfoque de dos pasos es agregar una fecha de carga a cada registro antes de escribir cada nuevo registro, ahora marcado con su indicador de cambio, en una tabla temporal de dimensiones Delta Lake. Esto se convertirá en la entrada del Paso 2.

LÍDER 5X

Gartner®: Databricks, líder en bases de datos en la nube

Paso 2: Finalización de los cambios de dimensión

A medida que avanzamos al Paso 2, comenzamos leyendo la tabla de dimensiones intermedia o temporal en nuestro lakehouse. Usaremos el campo indicador que se derivó del componente Detect Changes y crearemos 3 rutas separadas usando un componente de filtro simple. No haremos nada para los registros idénticos (identificados con una 'I') ya que no son necesarios cambios, por lo que estos registros se filtran. Para ser explícitos en nuestra explicación dentro de este blog, hemos dejado este camino. Aún así, sería innecesario para fines prácticos a menos que fuera necesario hacer algo específico con estos registros.

Step 2: Write to Dimension Table - Reading from the intermediate table, Matillion filters the records based on their respective change flag and takes appropriate actions to write the new data to the dimension table.
Step 2: Write to Dimension Table - Reading from the intermediate table, Matillion filters the records based on their respective change flag and takes appropriate actions to write the new data to the dimension table.

La siguiente ruta, para registros Nuevos o Cambiados, generará un nuevo registro actual para cada registro nuevo o cambiado identificado. El componente de filtro procesa solo aquellos registros con una 'N' (para Nuevo) o 'C' (para Cambiado) según lo identificado por el componente Detect Changes. El componente Rename actúa como un asignador de columnas para asignar los datos modificados de los campos de los nuevos registros (identificados por el prefijo compare_) a los nombres de columna reales definidos por la tabla de dimensiones de destino de Delta Lake. Finalmente, el componente "New fields" es un componente Calculator configurado para establecer la marca de tiempo de vencimiento de los registros activos en "infinito", identificándolos así como el registro más actual.

Rename Component - The Rename Component acts as a column mapper to map the changed data from the new records fields (identified by the compare_ prefix) to the actual column names of the target dimension table within the Lakehouse.
Rename Component - The Rename Component acts as a column mapper to map the changed data from the new records fields (identified by the compare_ prefix) to the actual column names of the target dimension table within the Lakehouse.

La ruta final es cerrar o hacer que caduquen los registros existentes identificados como Cambiados o Eliminados. Recuerde, en SCD2, los cambios se agregan como un nuevo registro (como se describe en la ruta Nuevo o Cambiado anterior) y, por lo tanto, cada registro anterior debe marcarse como caducado o inactivo. Del mismo modo, los registros eliminados necesitan una fecha de vencimiento para que ya no se identifiquen como activos. Aquí, la ruta Cambiado o Eliminado procesa cada 'C' (para Cambiado) o 'D' (para Eliminado) asignando las columnas apropiadas que identifican de forma única el registro para su vencimiento. Una vez identificado, la fecha de vencimiento se establece en la marca de tiempo actual y la actualización se realiza dentro de la tabla de dimensiones de destino de Delta Lake.

Dimension Table after SCD2 Updates - This table represents the final data warehouse dimension table once all transactions from the staging table have been applied.
Dimension Table after SCD2 Updates - This table represents the final data warehouse dimension table once all transactions from the staging table have been applied.

Conclusión

Le mostramos cómo implementar dimensiones de variación lenta en la plataforma Databricks Lakehouse utilizando la integración de datos de bajo código/sin código de Matillion. Es una excelente opción para todas aquellas organizaciones que prefieren las herramientas ETL basadas en GUI, como Matillion, para implementar y mantener la ingeniería de datos, la ciencia de datos y las canalizaciones de machine learning en la nube. Realmente desbloquea el poder de Delta Lake en Databricks y mejora la productividad de los datos, brindándole el rendimiento, la velocidad y la escalabilidad para impulsar su análisis de datos en la nube.

Si desea obtener más información sobre la integración de Matillion y Databricks, no dude en consultar la documentación detallada aquí.

Pruebe Databricks gratis durante 14 días.

(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original

No te pierdas ninguna publicación de Databricks.

Suscríbete a nuestro blog y recibe las últimas publicaciones en tu bandeja de entrada.