La cadena de suministro cuantitativa requiere una elaboración y una visualización de los datos exhaustiva. Envision incluye ambas funciones y, a continuación, presentaremos un script simple como modo práctico para familiarizarse con Envision. Este script genera un panel de información que reúne algunas estadísticas descriptivas simples sobre los datos. Con este ejemplo, se familiarizará con los conceptos claves relativos a Envision.
Edición de su primer script
Si aún no tiene una, tendrá que
abrir una cuenta de Lokad, que viene con una prueba gratuita de 30 días. Una vez que haya abierto su cuenta de Lokad, tendrá que cargar el
conjunto de datos de ejemplo de Envision Este conjunto de datos representa los datos históricos de un pequeño minorista imaginario, y esos son los datos que utilizaremos a continuación. El modo más rápido para agregar estos archivos a su cuenta de Lokad es hacer clic en el botón
Connect data source
(conectar fuente de datos) y luego seleccionar los datos de ejemplo al principio de la lista. La ejecución de la fuente de datos copia automáticamente los archivos a su cuenta, sin que sea necesario pasar por el proceso de descarga/carga.
Una vez que haya importado los archivos de ejemplo a su cuenta, haga clic en la pestaña "Projects" (proyectos). Una vez en la página del proyecto, haga clic en el enlace
Create Envision script
(crear script de Envision) que se encuentra al final de la página y elija un título. Debería ver una página nueva casi completamente vacía. La vista se llama
editor de código, y le permite editar un script de Envision. Copie el código a continuación, y haga clic en el botón verde
Start Run
(comenzar ejecución) que se encuentra a la derecha.
/// ¡Es es mi primer script de ejemplo!
read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as O
read "/sample/Lokad_PurchaseOrders.tsv" as PO
oend := max(O.Date)
// Principales indicadores del conjunto de datos
show label "This is a sample script" a1f1 tomato
show table "Product Lines" a2b2 with
sum(1)
show table "Order Lines" c2d2 with
sum(O.1)
show table "Purchase Order Lines" e2f2 with
sum(PO.1)
// Dos gráficos de líneas
Week.sold := sum(O.NetAmount)
Week.purchased := sum(PO.NetAmount)
lastDay := monday(oend)
firstDay := lastDay - 52 * 7
when date >= firstDay & date < lastDay
show linechart "Purchased & sold" a3f4 tomato with
Week.sold as "Sold"
Week.purchased as "Purchased"
// Inventario con peor rotación
lastYear := oend - 365
UnitSold = sum(O.Quantity) when date > lastYear
UnitStock = max(1, StockOnHand + StockOnOrder)
Turns = UnitSold / UnitStock
show table "Slowest inventory turns" a5f8 with
Id
Name
Turns
UnitSold
order by Turns
Una vez que se ha completado la ejecución de script, aparecerá una nueva línea verde
debajo del botón
Start Run
. El color
verde indica que la operación se ha completado correctamente. Haga clic en este línea, que lo llevará hasta el panel de información que se acaba de generar. Haga clic en el botón
Edit Script
(editar script) que se encuentra sobre el panel de información para regresar al editor de código. Ahora sabe cómo navegar entre la vista del panel y la del editor de código.
Comprendiendo el contenido del script
En este punto, dependiendo de su familiaridad con los conceptos de programación, el script anterior podrá seguir pareciendo bastante críptico. Revisemos este script línea por línea para comprender su contenido.
Vemos que la línea 1 comienza con
//
Todas las líneas de ese tipo son comentarios. No desempeñan ninguna función en la lógica del script, y se proporcionan solo con fines de legibilidad. La primera línea puede incluso tener una triple barra
///
. Con esta triple barra, esta línea se convierte en el subtítulo del proyecto, y se muestra debajo del título del proyecto en la vista del listado de proyectos.
Entre las líneas 2 y 4, tenemos tres instrucciones
read
que cargan los datos necesarios para crear el panel de información. Cada una de estas instrucciones carga un archivo.
En la línea 6, definimos una variable que almacena la fecha del último pedido realizado. Es útil definirla, porque esta fecha se utilizará varias veces en el resto del script.
En las líneas 8 y 15, tenemos las dos primeras líneas del panel de información, que abarca 4 mosaicos en total. El mosaico de más arriba es simplemente una etiqueta, mientras que los tres mosaicos debajo son las tablas 1X1 simples que contienen solo un indicador. Como veremos más abajo, las tablas también pueden utilizarse para mostrar datos tabulados reales, no solo un solo valor por vez.
Entre las líneas 17 y 25, definimos el gráfico de líneas que se muestra inmediatamente debajo de los tres mosaicos pequeños. Comenzamos calculando los totales semanales de compras y ventas en las líneas 18 y 19. Definimos en las líneas 20 y 21 la fecha más actual y la más antigua que deseamos considerar: el último lunes y el lunes de 52 semanas completas atrás, respectivamente. En la línea 22, filtramos los datos para mantener solo las últimas 52 semanas completas. La lógica es un poco compleja, pero se resume en una condición de inicio y una condición de finalización. La línea 23 comienza con 2 espacios al principio de la línea. Esos espacios son importantes: el
when
define un bloque, y todo lo que está
dentro de ese bloque, es decir, todas las líneas que tienen 2 espacios adicionales, se filtran de consecuencia. Por último, el gráfico de líneas se define entre las líneas 23 y 25.
En la línea 23, establecemos el título, el color y la posición del gráfico. Entre las líneas 24 y 25, definimos las dos curvas que se muestran. Note que ambas líneas comienzan con 4 espacios: 2 espacios necesarios para el bloque
when
y 2 espacios adicionales para el bloque
show
.
Entre las líneas 27 y 37, tenemos la tabla que viene después del gráfico de líneas. Esta tabla muestra la lista principal de productos que están rotando al menos dentro de su inventario. En las líneas 28 y 29, calculamos la cantidad de unidades vendidas de cada producto en los últimos 365 días. En la línea 30, calculamos el inventario para cada unidad. La función
max()
se utiliza simplemente para evitar divisiones por cero en la línea 31 si un producto resulta tener cero inventario. En la línea 31, calculamos los ciclos de inventario, es decir, la cantidad de rotaciones de inventario en un año. Entre las líneas 32 y 37, tenemos la instrucción de visualización de tabla misma. En la línea 32, establecemos el título y su posición. Entre la línea 33 y la línea 36, definimos todas las columnas de la tabla: una línea por columna, de derecha a izquierda. Por último, en la línea 37, utilizamos la opción
order by
para colocar las rotaciones más bajas al principio de la tabla.
Pasos siguientes
A menos que ya esté familiarizado con la programación, la cantidad de información de este primer script probablemente sea un poco abrumadora. Sin embargo, como puede ver, en solo 37 líneas de código, es posible componer un panel de información para nada trivial que incluye KPI, cierta visualización de datos y una lista de acción priorizada de productos que probablemente requiere algo de atención para evitar que estos productos atesten su inventario. Utilizando menos de 40 líneas de script, ya hemos ido bastante lejos.
Generalmente, la sintaxis utilizada para componer expresiones de cálculo es muy similar a la utilizada en Excel. Por ejemplo, el valor de existencias total teniendo en cuenta tanto las existencias disponibles como las pedidas podría escribirse como
sum(PurchasePrice * (StockOnHand + StockOnOrder))
. No dude en experimentar con este ejemplo, modificando algunas partes del script y observando inmediatamente los efectos correspondientes en sus paneles de información apenas creados.