Como bien sabemos, el modelado dimensional está compuesto por dos tipos de tablas. Por un lado, las tablas de hechos, cuya función es la de almacenar datos relacionados con el registro de eventos. Y por otro, las tablas de dimensión, qué relacionadas con las anteriores, permiten desglosar y agrupar las métricas que estás contienen por diversos atributos.
¿Cómo mantener la consistencia de los datos?
Una vez desarrollado un modelo de estas características, mantener la consistencia de los datos frente al origen, es una tarea compleja que se acentúa si se trata de una tabla de hechos. Una mala gestión en este caso, puede ocasionar muchos problemas de rendimiento y almacenamiento. Por este motivo, es imprescindible realizar un análisis previo al desarrollo, estudiando la forma en la que se deben disponer los datos, y cómo estos deben actualizarse periódicamente para que el mantenimiento de la consistencia no dificulte la utilización del modelo que se va a implantar.
Las tablas de hechos basadas en gestión de Stocks, suelen causar problemas de este tipo y la manera más óptima de implementarlas depende de la forma en la que se originan los datos en el sistema que registra el stock, y de la volumetría que este genera día tras día.
Alternativas para controlar la gestión de stocks con tablas de hechos
A continuación vamos a mostrar varias formas de gestionar el stock en una tabla de hechos, de forma que el mantenimiento de la consistencia afecte al rendimiento lo menos posible:
– Registro de entradas/salidas: Este es el método más básico y conocido de gestión de stocks, ya que consiste en registrar únicamente las entradas y salidas que se producen en un almacén. Se producirán tantos registros como movimientos se lleven a cabo. De esta forma, puede que un día no se inserten registros para un producto determinado, ó por el contrario, se inserten varios. El funcionamiento y la forma de calcular el stock, son idénticos a cómo se hace con el saldo de una cuenta corriente en el ámbito bancario.
Tal y como se aprecia en la tabla, la granularidad está a nivel de almacén, producto y fecha. Esto conlleva que cada producto de cada almacén tiene su propio contador de entradas y salidas, y en caso de que se produzca un movimiento luego de varios días sin actividad relacionada con dicha mercancía, se retoma el contador sumando o restando la cantidad del movimiento en cuestión.
Para determinar la cantidad de stock de un producto en un día concreto, se deberán acumular los movimientos producidos hasta la fecha de análisis. En este punto reside el posible problema con esta forma de implementar la gestión de stocks. El hecho de tener que acumular los datos de esta columna hasta la fecha de análisis puede ocasionar problemas computacionales si la volumetría es muy grande.
– Snapshots: Esta alternativa tal y como su nombre indica, consiste en proporcionar una “imagen” del estado del stock para cada día. Es decir, cada producto de cada almacén tendrá un registro para cada día informando del número de existencias que quedan en el almacén. En caso de que no se produzcan movimientos para un producto concreto en un día determinado, se tendrá que forzar la creación del snapshot en cuestión que contendrá el mismo dato que el del día anterior para el producto vinculado. Este tipo de situaciones implican una cierta complejidad en el desarrollo de soluciones mediante snapshots.
De esta forma, se genera una tabla en la cual solo podrá haber métricas semi-aditivas relacionadas con el stock. Estas métricas podrán agregarse por las dimensiones que haya en el modelo, excepto por la dimensión de fecha. Esto significa que para saber cuantas existencias había a día 31 de enero de 2019, no se podrá acumular la columna “Stock”, sino que se tendrá que acceder al snapshot relacionado con este último día del mes de enero.
Uno de los principales problemas que presenta esta forma de gestionar el stock radica en el número de registros que se pueden generar a lo largo de los años. Cualquier empresa destinada al retail puede llegar fácilmente a generar cientos de millones de registros con tal de mantener un histórico de los movimientos que se produjeron en almacén.
Como se puede apreciar en la tabla anterior, una empresa compuesta por 200 tiendas y 7000 productos puede acabar manejando 5.110 millones de registros.
– Tabla delta: La implementación de este sistema, también llamado modelo de compensación, implica una forma híbrida de solucionar la gestión de stocks combinando características de los dos modelos anteriormente comentados.
Tal y como se muestra en la imagen, la utilización de tablas delta permite agrupar las entradas y salidas de cada producto en un único registro diario, pudiéndose dar el caso de que no haya filas relacionadas con un determinado día si no se produjeron movimientos.
La forma de calcular el stock de un producto en un determinado momento es igual que en el sistema de registro de entradas y salidas, es decir, se deben sumar todos los movimientos realizados hasta la fecha de análisis. En este caso, la complejidad para obtener este dato es inferior qué en el otro sistema, debido a que este tipo de tablas contienen un menor número de filas, pero a cambio, es necesario un desarrollo más complejo que agregue los movimientos diarios de cada producto.
Por otra parte, cuando en una tabla delta se almacenan los datos de movimientos durante varios años, cabe la posibilidad de replicar el comportamiento de una tabla de snapshots con el objetivo de resumir la información histórica y facilitar así el cálculo de las métricas que estén vinculadas a la tabla.
De esta forma se combinan las dos aproximaciones anteriores en una única tabla, tratando así de buscar un equilibrio entre la complejidad computacional y el número de registros que se insertan día tras días en un sistema de gestión de stocks. Cabe destacar que el desarrollo de esta solución es bastante más complejo que la implementación de las anteriores.
Cada uno de los sistemas analizados en este artículo presenta una serie de ventajas e inconvenientes que junto con las necesidades del cliente pueden adaptarse mejor o peor en función de las características que tenga el entorno en el que se tenga que implantar la solución de gestión de stocks.
¿Necesitas mejorar en tus conocimientos de Business Intelligence? Infórmate sobre todos nuestros cursos de Power BI ?