Hola, hola gente:
Retomando el blog, después de mucho tiempo, en este caso para tratar un problema típico en las organizaciones que se dedican a la comercialización de productos, producción entre otros y que tienen inconvenientes comunes como: Qué comprar?, Cuándo comprar?, Dónde comprar?. Al final pueden ver el video de implementación: http://youtu.be/FWfRjkaiiwM . Bien empecemos!!!
MINERÍA DE DATOS CON SQL SERVER:
PROBLEMA DE INVENTARIOS.
PROBLEMA DE INVENTARIOS.
ENUNCIADO DEL
PROBLEMA
¿Cómo hacer para que los clientes siempre
encuentren los productos que requieran adquirir Y NO VAYAN A LA COMPETENCIA?
¿Cómo evitar tener inversiones “muertas” en nuestros almacenes como
consecuencia de stocks con poca rotación ?
Veamos el Grafico
01 que compara los stocks que oferta una organización –línea azul-, contra
la demanda que los clientes realizan cada vez que quieren adquirir productos.
En el Gráfico
02, observe momentos – ver períodos 3 al 4, 8 y 11 con color rojo - donde
los clientes demandan más productos y la empresa no puede atender: stock insuficiente,
se han perdido ventas. ¿Qué haría Ud.
como cliente, si necesita adquirir el producto?; lo más probable se irá a la
competencia...!!
En el Gráfico 03, observe que en algunos momentos se tiene stock, en cantidades mayores a la demanda de los clientes – ver color celeste, en períodos 2, 6, 7 y 10 -. ¿Qué haría Ud. como responsable de Finanzas? Si necesita adquirir otros productos demandados y no tiene liquidez..
Qué hacer frente a una demanda insatisfecha de clientes,
con riesgo de que vayan a la competencia? y
Qué hacer para evitar una sobre Oferta de stock de
productos, con inversiones sin movimiento?
En muchas organizaciones el futuro del conocimiento de los clientes es
una función crítica que recae en expertos de marketing y de finanzas usando
para ello técnicas tradicionales de series de tiempo para extrapolar [1] datos históricos acumulados.
El siguiente documento pretende presentar una nueva alternativa basada
en el análisis de series de tiempo incorporando la Minería de Datos como
herramienta de pronóstico.
El pronóstico está representado por valores continuos en el tiempo. Por ejemplo la venta de productos.
Se puede predecir tendencias basadas en
datos históricos.
Siguiendo la metodología propuesta por CRISP-DM [2] desarrollaremos algunos puntos importantes de
ella.
COMPRENDIENDO EL NEGOCIOObjetivos del Negocio
1. Cumplir con la demanda que los
clientes realizan oportunamente.
2. Adquirir productos en cantidades
suficientes, evitando
Analizando SituaciónSe tiene un catálogo de 10,000 productos aproximadamente de los cuales el 12% concentra el 58% de las ventas.
1.
Se considera los últimos 36 meses de movimiento.
2.
Se toman 4 sucursales.
Objetivos del Minado de Datos
1.
Crear un modelo de pronóstico para determinar las cantidades
necesarias a adquirir.
2.
Preparar un modelo de pronóstico para determinar en qué momento
comprar y en que parte de la organización comprar.
|
COMPRENDIENDO DATOS
Recolección de Datos
Se
consideran las siguientes:
·
Registro de Ventas (de cualquier tipo : presenciales,
delivery, web):
Se incluyen datos como fechas,
cantidades, productos comercializados, lugares donde se realizan las ventas,
entre otros
·
Datos de productos:
Son los que están presentes en las
ventas
·
Datos de Unidades de Negocio:
Son importantes, servirán para
conocer con exactitud los lugares y demandas respectivas.
Descripción de los Datos
Podemos
mencionar:
·
Cantidad de Datos:
o
Productos: alrededor de 10 mil
ítems ( se necesitarán datos del
producto y marca)
o
Detadoc: el análisis inicial incluye
una de las unidades de negocio y se pueden observar alrededor de 250,00
registros ( se necesitará conocer las
cantidades y montos vendidos por producto)
o
Documento: incluye un promedio de 60
mil ventas ( se necesita conocer el momento de la venta: fecha)
o
Tienda: almacena información de las
unidades de negocio y se pueden observar 8 (se necesita conocer los nombres y
ubicación de cada unidades de negocio)
·
Tipos de Valores:
Los tipos de datos son variados, tal
como podemos apreciar en el siguiente diagrama
· Esquemas de Codificación:
En la tabla documento se maneja un
campo estado, que contiene los códigos: C, A, P
PREPARANDO DATOS
Selección de Datos
Se
consideran los siguientes datos relevantes,
· * Los períodos de tiempo se obtienen con la siguiente orden:
select DISTINCT convert(char(6), fecha, 112
) AS Periodo
from DOCUMENTO order by 1
Tenga precaución que el dato del periodo , al momento de
aplicar el Algoritmo debe ser un valor numérico, de momento va como CHAR, el valor devuelto con CONVERT –formato 112-
es año y mes
200906
200907
200908
* · Lista de productos vendidos
SELECT dd.Producto, SUM(dd.Cantidad * dd.PrecUnit ) As Total,
sum(dd.cantidad) As Cantidad
FROM detadoc dd
INNER JOIN DOCUMENTO d
ON d.documento = d.Documento AND d.TipoDoc =dd.TipoDoc
WHERE d.Cliente IS NOT NULL
GROUP BY dd.Producto
* Datos
de ventas de productos con Tienda:
SELECT D.IdTienda+ '-'+ dd.Producto AS TiendaProducto, convert(char(6), fecha, 112 ) as Periodo, dd.Producto, SUM(dd.Cantidad
* dd.PrecUnit ) As Total,
sum(dd.cantidad) As Cantidad
FROM detadoc dd INNER JOIN DOCUMENTO d ON d.documento = d.Documento AND d.TipoDoc =dd.TipoDoc
WHERE d.Cliente IS NOT NULL
GROUP BY D.idtienda, dd.Producto,convert(char(6), fecha, 112 )
Construir Datos
Preparar
las condiciones respectivas
SELECT D.IdTienda+ '-'+ dd.Producto AS TiendaProducto, convert(char(6), fecha, 112 ) as Periodo,
dd.Producto, SUM(dd.Cantidad
* dd.PrecUnit ) As Total,
sum(dd.cantidad) As Cantidad, dd.Producto
FROM detadoc dd INNER JOIN DOCUMENTO d ON d.documento = d.Documento AND d.TipoDoc =dd.TipoDoc
WHERE d.Cliente IS NOT NULL AND d.Estado <> 'A'
GROUP BY D.idtienda, dd.Producto,convert(char(6), fecha, 112 )
Note que se están excluyendo los que
tienen Estado (A) que son las ventas anuladas.
MODELANDO DATOS
Nos apoyaremos en los Servicios de Analysis Multidimensionales y Data Mining del SQL Server 2014, por medio del SQL Data Tools, Veamos a continuación el Video respectivo
EVALUANDO DATOS
Es una labor desarrollada por el especialista en nuestro caso le estamos dando la posibilidad de analizar la información en 12 períodos siguiente. Verificar última parte del video.
En nuestra siguiente entrega, veremos como analizar los resultados a partir de una aplicación en .NET
Hasta la próxima..!!