ETL y Late Arriving Dimensions

 

Las cargas de datos (ETL, de Extract-Tranformation-Load en inglés), permiten mover datos de un sistema informático a otro. Durante este proceso, es habitual realizar modificaciones tanto en los datos (limpieza, estandarización de formatos, etc.) como en el modelo de datos (paso de un modelo transaccional a uno dimensional).

El diseño e implementación de una ETL es una tarea compleja. Existen una gran cantidad de situaciones a tener en cuenta para que ésta sea robusta y eficiente, y proporcione el resultado deseado.

Una de estas situaciones a tener en cuenta es la de la que se produce al cargar datos en un Data Warehouse, cuando una dimensión no está disponible en el momento de procesar un registro de una tabla de hechos. Es lo que se conoce en inglés como Late Arriving Dimension.

Late Arriving Dimension

La ejecución de una ETL, a grandes rasgos, procesa inicialmente las dimensiones para finalizar con las tablas de hechos. De esta manera, al procesar éstos, disponemos de los registros de las dimensiones referenciados en éstos.

Hasta aquí, perfecto. Sin embargo, ¿qué sucede cuando un escenario no es perfecto?

Una ETL simple obtiene todos los datos de un mismo origen. En este caso, es lógico pensar que dimensiones y hechos pueden ser tratados como una única unidad de información atómica. Por tanto, o bien todos los datos se obtendrán en la fase de extracción, o ninguno de ellos. En este último caso, al producirse un error en la extracción de datos, no tendremos ni dimensiones ni hechos. Y ese caso se solucionará restaurando el acceso al sistema origen de los datos.

Sin embargo, en una ETL que obtenga datos de diferentes orígenes, puede darse la situación en que la extracción de uno de ellos no sea posible, mientras que no haya ningún problema con los otros. En este caso, si no hemos podido obtener una dimensión, es posible que los registros de hechos hagan referencia a registros de dimensión que no hayan sido procesados en el sistema. Por tanto, ese registro de hechos no podrá enlazar a la información correcta.

Diseño complejo

Ante una situación así, debemos plantearnos diferentes soluciones en función del escenario.

La primera cuestión a plantearse es: ¿Es necesario disponer de toda la información para poder cargar los datos?

Si éste es el caso, la ETL debería finalizar con error. El siguiente paso sería solucionar el acceso a los datos. Y finalizaríamos ejecutando la ETL nuevamente para así poder cargar todos los datos en el sistema destino.

En caso contrario, procederíamos a cargar el registro de la tabla de hechos, referenciando un registro de dimensión donde únicamente las claves primaria y natural estuviesen informadas con información real (el resto serían valores por defecto). En el futuro, al cargar el registro de dimensión, modificaríamos ese registro inicial.

Pero habría que tener en cuenta también si esa dimensión requiere cambios en el tiempo (Slowly Changing Dimension Type 2, según la metodología Kimball). En ese caso, el proceso de inserción de una nueva versión de la dimensión no debería producirse inicialmente, ya que esta situación dejaría los registros de hechos referenciando a una versión incompleta de la dimensión.

Otra situación especial ocurre cuando no existe un único origen de datos para la confección de una dimensión. Es decir, a pesar de disponer de un maestro para una dimensión, ésta es enriquecida con datos provenientes de otros sistemas origen. La situación es similar a la anteriormente citada con los registros de hechos, pero no es exactamente la misma.

Conclusión

Una ETL debe ser robusta y tiene que proporcionar información correcta y consistente.

En un mundo ideal, todo funcionará siempre a la perfección. Sin embargo, eso es una utopía. La realidad es que a lo largo del tiempo sucederán situaciones de riesgo que una ETL debe tener controladas.

La mitigación de estas situaciones de riesgo es responsabilidad del arquitecto de la ETL. Un buen diseño debe ser capaz de sobreponerse a situaciones no habituales (que no inesperadas), alineando el comportamiento de la ETL a los requerimientos de ésta.

El caso de las Late Arriving Dimensions es uno de estos riesgos a controlar en una ETL. De ello depende que los usuarios puedan disponer o no de información para tomar sus decisiones en el día a día.

Predecir el futuro es posible

 

La toma de decisiones es crucial para el éxito de una organización. Estas decisiones pueden estar basadas en la experiencia o en la observación y análisis de datos históricos.

En este último caso, la predicción analítica nos permite tomar decisiones con un nivel de confianza predeterminado, a partir del análisis de grandes cantidades de datos y variables. Algo que escapa a la mente humana, por mucha experiencia que alguien pueda tener.

La responsabilidad de las organizaciones es definir un marco de trabajo para que sus empleados (desde los directivos hasta los operarios) puedan tomar decisiones con fundamento.

¿Qué es la predicción analítica?

La predicción analítica es como una bola de cristal que nos permite saber, con cierto grado de probabilidad, qué va a suceder. Ésta se basa en el análisis de datos históricos y en la determinación de patrones que se repiten en esos datos (por decirlo de una manera muy simple). El objetivo es la creación de un modelo predictivo que tiene como finalidad asignar una probabilidad de que algo suceda.

Este modelo es creado a partir de diferentes técnicas, en función del escenario de negocio. Estas técnicas incluyen el uso de estadística avanzada y algoritmos de Inteligencia Artificial entre otras. Algunos de los métodos usados en predicción analítica son las regresiones, árboles de decisión, clustering y redes neuronales. Estadística predictiva, Machine Learning y Deep Learning, entre otros, son términos asociados con el análisis de grandes volúmenes de datos para la creación de modelos de predicción analítica.

Grandes volúmenes de datos

El análisis parte de un gran volumen de datos. Este volumen vendrá determinado por el número de registros. A mayor conjunto de datos, mejor predicción.

¿Tomaríamos una decisión basada en una experiencia prácticamente inexistente? Seguramente no. El motivo es que no dispondríamos de suficiente respaldo para esa decisión. Lo mismo sucede con la predicción analítica.

Es posible generar modelos predictivos a partir de conjuntos pequeños de datos. Sin embargo, estos modelos no proporcionan una confianza lo suficientemente alta.

Imaginad que lanzamos un dado 6 veces y obtenemos las siguientes puntuaciones:

PuntuaciónNúmero de tiradas
10
23
30
41
50
62

Un modelo predictivo basado en este conjunto de observaciones, nos diría que probabilidad de que salga un número par al lanzar este dado en particular es del 100% (contra un 0% de que salga un número impar).

En este caso, la toma de decisiones basada en este modelo sería muy arriesgada (por sentido común).

Sin embargo, ¿qué confianza nos daría un modelo con esas probabilidades si el número de observaciones fuera 100? ¿Y 1000? ¿Y 1.000.000? Obviamente, la confianza sería mucho más alta. Y en este caso, seguramente nos plantearíamos si el dado está trucado.

Grandes conjuntos de variables

El número de variables a analizar determina el modelo de predicción. Un número muy bajo de variables es lo que hace que la gente se atreva a predecir qué va a suceder. En este caso, el comportamiento humano tiende a simplificar escenarios prescindiendo de variables, obviar casos que no se ciñan a lo esperado, etc. Esto deriva en una predicción falseada que afecta a la toma de decisiones.

Al incrementar el número de variables de un escenario, ese análisis se complica. Es en ese momento en el cual es necesario utilizar técnicas complejas de análisis que permitan analizar todas las variables disponibles.

El uso de un gran número de variables no significa que el modelo de predicción se base en todas ellas. Existen correlaciones y dependencias entre variables, lo cual hace que algunas de ellas impliquen los valores de otras. Por tanto, es posible que algunas, o gran parte de ellas no aparezcan en el modelo predictivo.

Conclusión

La predicción analítica permite obtener respuestas a qué va a suceder en el futuro con una probabilidad concreta en cada caso. El umbral del índice de confianza designado por el usuario para ese modelo determinará la toma de decisión final.

Para obtener un modelo de predicción con un alto nivel de confianza, es necesario disponer de un gran volumen de datos.

El gran número de variables permite generar un modelo de predicción más ajustado, ya que no obviamos información que puede acabar de determinar esa probabilidad final en cada caso.

La creación de un modelo de predicción requiere el uso de estadística avanzada o algoritmos de Inteligencia Artificial. Por tanto, es necesario contar con expertos en alguna de estas áreas que dispongan de la experiencia necesaria para poder obtener un modelo válido que aporte valor y sea válido para la toma de decisiones en una organización.