Este mes de diciembre viene cargado de varias novedades interesantes; además de la versión preliminar de Copilot de la que ya hablé en un artículo anterior y de la nueva APP móvil de disponible de inventario, de la que grabaré un video corto próximamente, Microsoft ha lanzado la nueva solución de Planificación de la Demanda, esta vez como solución en Power Platform en vez de la solución anterior que se gestionaba enteramente desde FO.
El concepto es básicamente el mismo que ya teníamos en la solución anterior; utilizar las capacidades de Azure Machine Learning para elaborar pronósticos basados en nuestros datos reales, pero ahora la solución nos permite diseñar escenarios mas complejos como por ejemplo añadir pronósticos mas optimistas o pesimistas, o quizás realizar una simulación de aperturas de nuevas delegaciones, o escenarios de caída de un cliente estratégico, etc. Y además, y esto es realmente algo espectacular, añadir de forma sencilla fuentes de datos externas como por ejemplo SAP u Oracle, lo que significa que esta solución es agnóstica al ERP.
Y todo esto en un entorno muchísimo mas amigable que el anterior, en donde la complejidad para la adopción de la solución por los planificadores será mucho mas baja.
Vamos a revisar todos sus componentes y lo sencillo que es configurarlo de forma básica para que funcione con FO. Lo primero será instalar la solución en nuestro entorno de Dataverse. Aquí no importa que no sea el mismo que el de FO ya que no sincroniza datos usando DW o Entidades virtuales. La guía para su instalación está aquí: Instalar, habilitar y configurar la aplicación de planificación de la demanda (versión preliminar) – Supply Chain Management | Dynamics 365 | Microsoft Learn
Una vez instalada la solución obtendremos esto:

No os recomiendo que probéis la nueva interface por que fallan algunos campos (por lo menos a mi)
En esta pantalla además de videos introductorios, Microsoft ha añadido tutoriales para poder configurar el modulo. La primera vez que lo instalemos el propio sistema nos va a añadir datos de ejemplo, que para una primera revisión o para hacer una demo está ok, pero si queremos empezar de cero, al final de la pagina encontraremos la opción de eliminarlos:

Con el entorno limpio ya podemos empezar a configurarlo, el proceso es el siguiente:

Habría que añadir que antes de crear los forecast y después de generar las transformaciones, hay que crear los cálculos, por ejemplo, si queremos no solo calcular cantidades, si no también importes, tendremos que añadir el precio de coste y el pvp del producto y crear el calculo de cantidad * precio.
Importación de datos
Lo primero que tenemos que hacer es importar nuestros datos a la solución, aquí disponemos de varias opciones:

En nuestro caso las mas interesantes es FO, pero como el sistema está abierto podríamos incorporar datos de cualquier fuente, por ejemplo por que tengamos un AX 2012 y queramos añadir todo el histórico combinado con el de FO.
Si elegimos mas proveedores tendremos el siguiente asistente:

Lo primero que haremos es seleccionar la entidad de destino, como se puede apreciar tenemos varias entidades disponibles, la importación de FO estándar rellenará la mayoría de ellas, pero aquellas relacionadas con precios tendremos que rellenarlas nosotros por nuestra cuenta si queremos usarlas.
Como inciso al proceso, comentar que antes de seleccionar que entidad queremos rellenar, podremos ir a la Tabla en cuestión y añadir nuevas columnas si esto es necesario para nosotros:

Una vez que tengamos la Tabla de destino configurada a nuestras necesidades, y de vuelta en nuestro asistente de importación, seleccionamos la tabla de destino y ya podremos seleccionar cualquier origen de datos:


Aquí es donde vemos que podemos seleccionar tanto el conector de Oracle como el de SAP, así que imaginemos las posibilidades en compañías multi ERP que esto tiene. No parece existir un conector directo contra Business Central pero entiendo que a través del Dataverse o por Odata se podría hacer (la verdad es que no tengo demasiada idea de como va BC con este tema pero sería interesante que alguien que supiera de esto hiciera una PoC con un BC para ver que tal va)
Para seguir con nuestro ejemplo, configuremos el conector para FO, aquí no hay demasiado misterio, lo único que tenemos que hacer es poner la url de nuestro entorno y una vez conectado aparecerán las entidades disponibles:

Aquí se puede apreciar que son entidades nuevas creadas en FO por Microsoft y no tenemos que estar creando entidades personalizadas con consultas complejas. Si no aparecen en este punto, hay que ir a FO y refrescar las entidades:

En cada entidad se puede revisar el mapeo y modificarlo si se requiere:

Algo importante es que en ninguna de estas entidades hay valores económicos, solo cantidades, por lo tanto, como he comentado antes, si queremos tener dichos valores tendremos que añadir nuestras entidades manualmente desde FO. En mi caso he añadido la entidad de Relased Products para traer el precio base de cada producto:

Lo ideal hubiera sido traer los acuerdos comerciales o la activación de precios, pero para el ejemplo nos vale:

Terminada la configuración de la importación, ejecutamos el proceso por lotes y este rellenará las tablas necesarias:

En caso de tener errores podremos verlo dentro de la pantalla de Jobs de la conexión con FO:


En este caso tenemos valores duplicados y la entidad que usamos nos nos vale para este fin, así que toca corregirlo o si no tenemos una entidad que nos devuelva el precio por almacén y entidad legal como es nuestro caso, siempre podemos hacernos una PowerQuery tirando de Odata:

Desafortunadamente, y entendiendo que es una preview, a mi me daba error al guardar:

Probé incluso usando Excel y CSV pero con el mismo resultado, así que de momento dejaremos el ejemplo solo a datos de FO y nos olvidamos de ponerle precios al asunto 😦
Transformación
Una vez que tenemos nuestros datos importados procedemos a realizar las transformaciones necesarias. Lo que vamos a hacer es definir las dimensiones y las medidas de nuestros datos. Por ejemplo, queremos los datos semanales y no diarios o mensuales:

A partir de aquí el proceso es similar al de crear un Power BI; definimos las medidas de las tablas de hechos y las dimensiones de las tablas auxiliares, un ejemplo sería el siguiente:

Podremos crear tantos escenarios como queramos dependiendo de los diferentes origines de datos. En este caso yo he creado una transformación mensual y otra semanal con las mismas medidas y dimensiones.
Es importante comentar en este punto, que si queremos exportar los datos luego a FO necesitaremos como dimensiones los ID de los campos clave: Producto, Variante, Almacén, Cliente, etc. Si no los añadimos ahora, luego podremos hacerlo pero necesitaremos ejecutar de nuevo todos los modelos que se creen a partir de esta transformación.
cálculos
Con los datos transformados procedemos a realizar cálculos, esto es útil por ejemplo para los escenarios en los que queremos multiplicar las cantidades por precios y tener un forecast financiero.
Elegiremos los forecast creados anteriormente(podemos elegir varios de ellos, lo que en nuestro caso no tendría sentido al ser los mismos datos con diferente desglose temporal):

Una vez seleccionados los orígenes de la información podemos elegir un modelo completamente manual o modelos predefinidos como son +12mo Date Offset y Thredshold +/- 10%. El primero nos moverá las fechas actuales los meses que especifiquemos:

Mientras que el segundo valida si el valor calculado supera un umbral definido en %:

Si no usamos ningún modelo predefinido podremos crear el nuestro propio:

En este caso la cantidad especificada en la transformación que hemos añadido anteriormente es multiplicada por el precio de ventas que tendremos en esa tabla.
Pero también podremos hacer cosas como agregar datos si vienen de dos transformaciones diferentes (por ejemplo de un FO y un BC/SAP/ORACLE)

Las opciones en definitiva que tenemos para hacer cálculos son:

Una vez procesados todos los cálculos ya dispondremos de nuestros datos listos:

Si abrimos la serie temporal sin cálculos veremos lo siguiente:

En la imagen se puede apreciar que el articulo seleccionado tiene unidades vendidas desde octubre’15 hasta marzo’16. Si abrimos la serie temporal del mismo producto pero con el calculo de 12 meses añadidos veremos dicho cálculo:

Y finalmente si abrimos el calculo de la desviación del 10% veremos como indica 1 en aquellos unidades que cumplen dicho criterio:

Comentar que esta separación que se ve en el menú, solo hace referencia a la categoría que le pongamos a nuestros cálculos y trasformaciones:


PERFILES DE PREVISIÓN
Con las transformaciones y cálculos terminados el siguiente paso será crear un perfil de previsión, para ello elegiremos los periodos (mensual, semanal, diario) y el horizonte:

Después añadiremos los datos con los que queremos trabajar:

Y lo mas importante; elegiremos el modelo de previsión:

Aquí hagamos una pausa en la configuración para repasar los modelos, no os voy a engañar, esto lo ha escrito por mi la IA que yo de modelos estadísticos se mas bien poco, pero me pareció útil añadirlo para tenerlo a mano:
- Prophet: Es un modelo desarrollado por Facebook que utiliza el aprendizaje automático para estimar el comportamiento futuro de una serie temporal. El modelo se basa en la aplicación de la analítica avanzada, mediante la cual se entrena el modelo estadístico con los datos históricos y se establecen variables que puedan impactar en la demanda. El modelo Prophet tiene varias ventajas, como su facilidad de uso, su capacidad para capturar tendencias y estacionalidades, y su flexibilidad para adaptarse a diferentes tipos de datos. El modelo Prophet también ofrece una interfaz gráfica que permite visualizar las predicciones y los intervalos de confianza. Este modelo puede ser útil para realizar una planificación de la demanda en empresas de distribución que tienen datos históricos estables y predecibles, que quieren tener una visión general del comportamiento futuro y que no tienen mucha información sobre las variables externas que pueden afectar a la demanda.
- Auto ARIMA: Es un método que utiliza el algoritmo ARIMA (AutoRegressive Integrated Moving Average) para ajustar un modelo a los datos históricos. El algoritmo ARIMA es un modelo matemático que representa los valores pasados (p) y los errores pasados (q) usando sus valores pasados. Este modelo se basa en dos características principales: los valores pasados (p) y los errores pasados (q). El algoritmo ARIMA puede estimar estos parámetros automáticamente o mediante algún criterio manual. El método Auto ARIMA tiene la ventaja de ser simple y rápido, pero también tiene algunas limitaciones, como la necesidad de estandarizar la serie temporal para evitar problemas de estacionalidad o tendencia. Este método puede ser útil para realizar una planificación de la demanda en empresas de distribución que tienen datos históricos no estacionarios o con tendencias complejas, que quieren tener un control detallado del ajuste del modelo y que tienen suficiente información sobre las variables internas que pueden afectar a la demanda.
- Outlier STL + ETS forecast: Es un método que utiliza dos modelos diferentes: STL (State Space Model) y ETS (Exponential Smoothing with Trend and Seasonality). El modelo STL es un modelo estadístico que asume que la serie temporal sigue un proceso estocástico con estados finitos. Este modelo puede capturar tanto tendencias como estacionalidades, así como efectos aleatorios o no aleatorios. El método Outlier STL + ETS forecast tiene la ventaja de ser capaz de incorporar variables explicativas en el modelo, así como detectar y tratar anomalías o valores atípicos en los datos. Este método puede ser útil para realizar una planificación de la demanda en empresas de distribución que tienen datos históricos con características especiales o con incertidumbre sobre las variables externas e internas.
Una vez creados los Perfiles deseados podremos entrar a modificar sus opciones, tanto en el modelo Prophet como en Auto Arima, las únicas opciones disponibles de modificación son los periodos de tiempo, pero en el tercer modelo; Outlier STL, tenemos la capacidad de definir varias variables:

Existe un tercer acercamiento que es el de usar modelos manuales, para ello crearemos un perfil de previsión manual.
A partir de aquí tenemos 3 nuevas opciones; podemos elegir el modelo «Que mejor se ajuste» que como su nombre indica debe seleccionar por nosotros uno de los 3 modelos anteriores.

La siguiente opción es usar el AML de FO, esto es necesario si hemos estado usando la funcionalidad anterior de Demand Forecasting en FO y queremos seguir usando el mismo modelo. Los parámetros que aparecen son los que se configuran directamente en la solución antigua de FO:

La ultima opción sería la de utilizar un modelo de previsión creado por nosotros mismos, tal y como se hacia en la versión original usando Machine Learning Studio, en esta caso añadiremos las siguientes opciones:

Como yo no tengo ningún modelo, este último ejemplo no podré probarlo.
Para el resto, una cosa interesante que podemos hacer, es filtrar los datos que queremos utilizar antes de ejecutar los trabajos:

Una vez esto esté completado dejamos que se ejecuten los trabajos, esto llevará un poco de tiempo, en mi caso unos 20 minutos, pero una vez que terminen podremos revisar el resultado:
- Auto ARIMA:

- Prophet:

- Outlier STL + ETS:

Dentro de cada modelo podemos añadir el resto de modelos para compararlos entre sí, filtrar por un dato especifico y/o modificar los gráficos:

Además de comparar entre diferentes series temporales podremos poner indicadores gráficos dependiendo del resultado de los datos:

Por ejemplo, si hemos creado una serie temporal que nos indique un % de desviación, podemos añadir el condicional para que en base a este resultado nos muestre el formato que elijamos, para ello, en «Añadir datos» configuramos la serie que queremos como origen y su formato temporal:

Lo último que nos quedaría por hacer es ajustar los datos de forma manual:

Lo interesante aquí es que cualquier dato que ajustemos quedará grabado en el historial (aunque estaría bien un poco mas de detalle sobre que se ha modificado):

Hechos los cambios, podemos grabar esta vista como una hoja de trabajo, e incluso compartirla entre usuarios:

Exportación
Terminado de revisar los modelos, lo último que haremos es exportar los datos, esta vez la única opción es a FO, pero en realidad nada nos impediría exportarlos a SAP, BC o a cualquier otro sistema, solo que en este caso tendremos que ir a la serie temporal y exportarlo como CSV, obteniendo un fichero como este:

Ahora bien, si somos usuarios de FO, todo será mas directo; crearemos un perfil de exportación nuevo con los datos de nuestro entorno:

Luego seleccionaremos nuestra serie temporal, en este caso Auto ARIMA:

Mapearemos nuestros datos, es importante que como comentamos en puntos anteriores, tengamos añadidos los ID de los campos clave, ya que si solo tenemos añadidas las descripciones no podremos mapearlo con la entidad de FO.

Una vez mapeados los campos, añadiremos nuestro modelo de previsión por empresa y ejecutamos.

Cuando el JOB termine este podrá haber concluido sin errores o haber dado algún error:

Como se ve en este caso, el error ha dado debido a un problema con la secuencia numérica, si necesitamos mas información y dado que utiliza la importación estándar de FO (DMF) podremos ver el resultado en nuestra área de trabajo de importación de datos:

Corregidos los errores y ejecutado de nuevo, podremos ir a FO a ver el resultado de nuestra previsión, para ello en Planificación Maestra->Entrada manual de previsión->Líneas de previsión de la demanda:

Y con esto termino la revisión a esta nueva funcionalidad que promete ser muy interesante no solo para los usuarios de FO si no para cualquier cliente que busque aportar inteligencia a la creación de Forecast de forma relativamente sencilla.
Según documentación de Microsoft la solución estará en GA en 2024 y las características que se incluirán son:
- Comentarios en las celdas
- Roles de acceso por datos (Row level)
- Rolling Forecast
- Explicación de la elección del modelo cuando se selecciona la opción «Best Fit»
- Se añadirá la capacidad de gestionar tanto introducción de nuevos productos como productos que llegan al fin de su vida.
- COPILOT…
-Muchas gracias por leerme-


Deja un comentario