lunes, 12 de enero de 2015

Problema de Inventarios - Data Mining con SQL Server 2014


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.

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 NEGOCIO

Objetivos del Negocio

1. Cumplir con la demanda que los clientes realizan oportunamente.
2. Adquirir productos en cantidades suficientes, evitando

Analizando Situación

Se 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..!!