A medida que las organizaciones consolidan las cargas de trabajo de descomposición a Databricks, a menudo necesitan adaptar técnicas tradicionales de almacén de datos. Esta serie explora cómo implementar el modelado dimensional, específicamente, esquemas de estrellas, en Databricks. El primer blog se centró en el diseño de esquemas. Este blog camina a través de tuberías ETL para tablas de dimensiones, incluidas las dimensiones que cambian lentamente (SCD) patrones tipo-1 y tipo 2. El zaguero blog le mostrará cómo construir tuberías ETL para tablas de datos.
Dimensiones cambiantes lentamente (SCD)
En el zaguero blogdefinimos nuestro esquema de sino, incluida una tabla de hechos y sus dimensiones relacionadas. Destacamos una tabla de una dimensión en particular, dimcustomer, como se muestra aquí (con algunos atributos eliminados para conservar el espacio):
Los últimos tres campos en esta tabla, es sostener, Iniciar, Endscar y Islatearrivingrepresentan metadatos que nos ayudan con registros de versiones. Como el ingreso de un cliente determinado, el estado civil, la propiedad de la vivienda, el número de niños en el hogar u otras características cambian, querremos crear nuevos registros para ese cliente para que hechos como nuestras transacciones de ventas en camino en Factinternetsales están asociados con la representación correcta de ese cliente. El esencia natural (igualmente conocida como negocios), CustomereralTherateKeyserá el mismo en estos registros, pero los metadatos diferirán, lo que nos permitirá conocer el período para el cual esa interpretación del cliente era válida, al igual que el llavín sustituta, Clientepermitiendo que nuestros hechos se vinculen a la interpretación correcta.
NOTA: Correcto a que la esencia sustituta se usa comúnmente para vincular hechos y dimensiones, las tablas de dimensión a menudo se agrupan en función de esta esencia. A diferencia de las bases de datos relacionales tradicionales que utilizan índices de árbol B en registros ordenados, Databricks implementa un método de agrupación único conocido como agrupación de líquidos. Si acertadamente los detalles de la agrupación de líquidos están fuera del repercusión de este blog, usamos constantemente el clúster por cláusula en la esencia sustituta de nuestras tablas de dimensiones durante su definición para explotar esta característica de guisa efectiva.
Este patrón de registros de dimensión de versiones como cambio de atributos se conoce como el Tipo 2 Cambio lentamente de dimensión (o simplemente el patrón de tipo 2 SCD). Se prefiere el patrón SCD tipo-2 para aprender datos de dimensiones en la metodología dimensional clásica. Sin secuestro, hay otras formas de discutir con los cambios en los registros de dimensiones.
Una de las formas más comunes de discutir con los títulos de dimensión cambiantes es refrescar los registros existentes en su oficio. Solo se crea una interpretación del registro, por lo que la esencia de negocios sigue siendo el identificador único para el registro. Por varias razones, entre las cuales el rendimiento y la consistencia, aún implementamos una esencia sustituta y vinculamos nuestros registros de hechos con estas dimensiones en esas claves. Aún así, el Iniciar y Endscar Los campos de metadatos que describen los intervalos de tiempo sobre los cuales no se considera un registro de dimensión entregado activo. Esto se conoce como el Tipo-1 SCD patrón. La dimensión de promoción en nuestro esquema STAR proporciona un buen ejemplo de una implementación de la tabla de dimensiones tipo 1:
Pero, ¿qué pasa con el Islatearriving ¿Campo de metadatos manido en la dimensión del cliente tipo 2 pero desidia en la dimensión de promoción Tipo 1? Este campo se usa para marcar los registros como llegando tardía. A récord de arribada tardía es uno para el cual aparece la esencia de negocios durante un ciclo ETL de hecho, pero no hay registro para esa esencia ubicada durante el procesamiento de dimensiones anteriores. En el caso de los SCD tipo 2, este campo se usa para denotar que cuando los datos para un registro de arribada tardío se observan por primera vez en un ciclo de Dimensión ETL, el registro debe actualizarse en su oficio (al igual que en un patrón SCD Tipo 1) y luego se verifica a partir de ese punto. En el caso de los SCD de tipo 1, este campo no es necesario porque el registro se actualizará en su oficio.
NOTA: El asociación Kimball reconoce patrones SCD adicionales, la mayoría de los cuales son variaciones y combinaciones de los patrones tipo 1 y tipo 2. Correcto a que los SCD de tipo 1 y tipo 2 son los implementados con decano frecuencia de estos patrones y las técnicas utilizadas con las otras están estrechamente relacionadas con lo que se emplea con estos, estamos limitando este blog a solo estos tipos de dos dimensiones. Para obtener más información sobre los ocho tipos de SCD reconocidos por el asociación Kimball, consulte el Técnicas de dimensión cambiantes lentamente sección de este documento.
Implementación del patrón SCD Tipo-1
Con los datos actualizados en su oficio, el patrón de flujo de trabajo SCD Type-1 es el más sencillo de los patrones ETL bidimensionales. Para apoyar este tipo de dimensiones, simplemente:
- Extraiga los datos requeridos de nuestros sistemas operativos
- Realice cualquier operación de castidad de datos requerida
- Compare nuestros registros entrantes con los que ya están en la tabla de dimensiones
- Desempolvar cualquier registro existente donde los atributos entrantes difieran de lo que ya está fototipia
- Inserte cualquier registro entrante que no tenga un registro correspondiente en la tabla de dimensiones
Para ilustrar una implementación de SCD de tipo 1, definiremos el ETL para la población en curso de la Dimpromoción mesa.
Paso 1: Extraiga datos de un sistema activo
Nuestro primer paso es extraer los datos de nuestro sistema activo. Como nuestro almacén de datos está modelado posteriormente de la almohadilla de datos de muestra AdventureWorksdw proporcionada por Microsoft, estamos utilizando el estrechamente asociado Colchoneta de datos de muestra AdventureWorks (OLTP) como nuestra fuente. Esta almohadilla de datos se ha implementado en una instancia de almohadilla de datos de Azure SQL y se ha hecho accesible interiormente de nuestro entorno de Databricks a través de un consulta federada. La cuna se facilita con una consulta simple (con algunos campos redactados para conservar el espacio), con los resultados de la consulta persistidos en una tabla en nuestra puesta en ambiente esquema (que se hace accesible solo para los ingenieros de datos en nuestro entorno a través de la configuración del permiso que no se muestra aquí). Esta es solo una de las muchas maneras en que podemos aceptar a los datos del sistema de origen en este entorno:
Paso 2: Compare los registros entrantes con los de la tabla
Suponiendo que no tenemos pasos de castidad de datos adicionales para realizar (que podríamos implementar con un ACTUALIZAR u otro Crear tabla como testimonio), luego podemos tocar nuestras operaciones de aggiornamento de datos de dimensión/insertar en un solo paso utilizando un Información fusionarcoincidir con nuestros datos de escenificación y datos de dimensión en la esencia de negocio:
Una cosa importante a tener en cuenta sobre la testimonio, como se ha escrito aquí, es que actualizamos cualquier registro existente cuando se encuentra una coincidencia entre los datos de la tabla de dimensiones organizadas y publicadas. Podríamos adicionar criterios adicionales a la cláusula cuando coinciden para demarcar las actualizaciones de esas instancias en que un registro en la puesta en ambiente tiene información diferente de lo que se encuentra en la tabla de dimensiones, pero entregado el número relativamente pequeño de registros en esta tabla particular, hemos favorito gastar la razonamiento relativamente más flaca que se muestra aquí. (Usaremos la razonamiento adicional cuando coincida con Dimcustomer, que contiene muchos más datos).
El patrón SCD tipo 2
El patrón SCD tipo 2 es un poco más arduo. Para apoyar este tipo de dimensiones, debemos:
- Extraiga los datos requeridos de nuestros sistemas operativos
- Realice cualquier operación de castidad de datos requerida
- Desempolvar cualquier registro de miembros de la tarea tardía en la tabla de destino
- Expirar cualquier registro existente en la tabla de destino para la cual se encuentran nuevas versiones en la puesta en ambiente
- Inserte cualquier nueva (o nueva versiones) de registros en la tabla de destino
Paso 1: Extraer y aniquilar datos de un sistema de origen
Como en el patrón SCD Tipo-1, nuestros primeros pasos son extraer y aniquilar datos del sistema de origen. Utilizando el mismo enfoque que el precedente, emitimos una consulta federada y persistimos los datos extraídos en una tabla en nuestra puesta en ambiente esquema:
Paso 2: Comparar con una tabla de dimensiones
Con estos datos aterrizados, ahora podemos compararlo con nuestra tabla de dimensiones para realizar las modificaciones de datos requeridas. El primero de ellos es refrescar en su oficio los registros marcados como los procesos ETL de la tabla de datos precedente. Tenga en cuenta que estas actualizaciones se limitan a aquellos registros marcados como llegados tarde y el Islatearriving La bandera se está restableciendo con la aggiornamento para que estos registros se comporten como SCD de tipo 2 normales en el futuro:
Paso 3: Registros versionados de expirar
El próximo conjunto de modificaciones de datos es expirar cualquier registro que deba ser interpretación. Es importante que el Endscar valencia que establecemos para estas coincidencias el Iniciar De las nuevas versiones de registro implementaremos en el próximo paso. Por esa razón, estableceremos una marca de tiempo variable para ser utilizado entre estos dos pasos:
NOTA: Dependiendo de los datos disponibles para usted, puede designar gastar un Endscar Valencia originario del sistema de origen, momento en el que no necesariamente declarará una variable como se muestra aquí.
Tenga en cuenta los criterios adicionales utilizados en la cláusula cuando coinciden. Correcto a que solo estamos realizando una operación con esta testimonio, sería posible mover esta razonamiento a la cláusula ON, pero la mantuvimos separada de la razonamiento de coincidencia central, donde estamos coincidiendo con la interpretación flagrante del registro de dimensiones para decano claridad y mantenibilidad.
Como parte de esta razonamiento, estamos haciendo un gran uso del igual_null () función. Esta función devuelve serio cuando los títulos del primer y el segundo son los mismos o uno y otro nulos; De lo contrario, devuelve aparente. Esto proporciona una forma apto de despabilarse cambios en columna por columna. Para obtener más detalles sobre cómo Databricks admite una semántica nula, consulte este documento.
En esta etapa, las versiones anteriores de registros en la tabla de dimensiones que han expirado han sido fechadas.
Paso 4: Insertar nuevos registros
Ahora podemos insertar nuevos registros, tanto verdaderamente nuevos como recién versionados:
Como antaño, esto podría haberse implementado utilizando un Información de insertarpero el resultado es el mismo. Con esta testimonio, hemos identificado cualquier registro en la tabla de puesta en ambiente que no tiene un registro correspondiente no vencido en las tablas de dimensiones. Estos registros simplemente se insertan con un Iniciar valencia consistente con cualquier registro caducado que pueda existir en esta tabla.
Siguientes pasos: Implementación de la tabla de datos ETL
Con las dimensiones implementadas y pobladas con datos, ahora podemos centrarnos en las tablas informativas. En el próximo blog, demostraremos cómo se puede implementar el ETL para estas tablas.
Para obtener más información sobre Databricks SQL, visite nuestro sitio web o lea la documentación. Asimismo puedes consultar el Tour de producto para Databricks SQL. Supongamos que desea portar su almacén existente a un almacén de datos sin servidor de detención rendimiento con una gran experiencia de legatario y un costo total más bajo. En ese caso, Databricks SQL es la alternativa – probar injusto.