Votre premier script avec Envision

Votre premier script Envision










Accueil » Ressources » Ici

L'optimisation quantitative d'une chaîne logistique nécessite une analyse poussée des données ainsi que leur visualisation. Envision permet les deux, comme l'illustre le script ci-dessous. Ce dernier génère un tableau de bord qui rassemble des statistiques descriptives simples sur les données. À travers cet exemple, vous allez vous familiariser avec des concepts clés d'Envision.

Créer votre premier script

Si vous n'en avez pas déjà un, vous devez ouvrir un compte Lokad, qui est gratuit pendant 30 jours d'essai. Une fois que vous avez votre compte Lokad, vous devez charger l'échantillon de données Envision. Ce dernier contient l'historique des données d'un petit distributeur imaginaire, que nous allons utiliser par la suite. Vous pouvez ajouter rapidement ces fichiers à votre compte Lokad en cliquant sur le bouton Connect data source, puis en sélectionnant l'échantillon de données en haut de la liste. En exécutant la source de données vous copiez automatiquement les fichiers dans votre compte, sans avoir à utiliser le processus de téléchargement.

Une fois que vous avez réussi à importer les fichiers de l'échantillon dans votre compte, cliquez sur l'onglet « Projects ». Sur la page des projets, cliquez en bas sur le lien Create Envision script et choisissez un titre. Vous devriez alors voir une nouvelle page presqu'entièrement vide. Cette page est appelée l'éditeur de code, et vous pouvez y coder vos scripts Envision. Copiez le code ci-dessous puis cliquez sur le bouton vert Start Run, sur la droite.
/// Voici mon premier script !
read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as O
read "/sample/Lokad_PurchaseOrders.tsv" as PO

oend := max(O.Date)

// Indicateurs portant sur les données
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)

// Graphique à deux courbes
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"

// Stock avec la plus faible rotation
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

Une fois que l'exécution du script est terminée, une nouvelle ligne verte devrait apparaître « en-dessous » du bouton Start Run. La couleur « verte » indique que l'opération s'est terminée avec succès. Cliquez sur cette ligne et le tableau de bord qui vient d'être généré apparaît. Cliquez sur le bouton Edit Script, au-dessus du tableau de bord pour retourner à l'éditeur de code. Vous savez maintenant naviguer entre le tableau de bord et l'éditeur de code.

Image

Explications

Selon que vous ayez ou non des notions de programmation, le script ci-dessus peut vous sembler plutôt énigmatique. Reprenons-le ligne par ligne et voyons ce qu'il s'y passe.

À la ligne 1, il y a une ligne qui commence par //. Toutes les lignes comme celle-ci sont des commentaires. Elles ne jouent aucun rôle dans la logique du script et sont là pour information uniquement. La toute première ligne peut même commencer par le signe ///. Ce signe indique le sous-titre du projet, qui apparaît sous le titre du projet dans liste des projets.

De la ligne 2 à 4, trois instructions read (lire) chargent les données nécessaires à la création du tableau de bord. Chacune de ces instructions chargent un fichier.

À la ligne 6, nous définissons une variable de stockage de la date de la dernière commande passée, car cette date sera utilisée plusieurs fois dans le reste du script.

Les lignes 8 à 15 correspondent aux deux premières lignes du tableau de bord, qui comprennent quatre vignettes au total. La vignette du haut est simplement une étiquette, tandis que les trois vignettes suivantes sont des tableaux 1x1 qui ne contiennent qu'un indicateur. Comme nous le verrons ci-dessous, les tableaux peuvent aussi être utilisés pour afficher des données tabulaires et pas seulement une seule valeur.

Des lignes 17 à 25, nous définissons le graphique affiché directement sous les trois petites vignettes. Nous commençons par calculer le total hebdomadaire des ventes et des achats sur les lignes 18 et 19. La plage de dates à prendre en compte est ensuite définie aux lignes 20 et 21 : entre lundi dernier et le lundi 52 semaines avant. À la ligne 22, nous filtrons les données pour ne conserver que les 52 dernières semaines complètes. La logique est un peu complexe mais se réduit à une condition de départ et une condition d'arrivée. La ligne 23 commence par deux espaces en début de ligne. Ces derniers sont importants : le when (lorsque) définit un bloc et tout ce qui se trouve dans ce bloc — c’est-à-dire toutes les lignes qui commencent par deux espaces supplémentaires — est filtré selon les critères définis. Enfin, le graphique est défini des lignes 23 à 25. À la ligne 23, nous définissons le titre, la couleur et la position du graphique. Aux lignes 24 et 25, nous définissons les deux courbes affichées. Notez que ces dernières commencent par 4 espaces : 2 pour le bloc when et 2 pour le bloc show.

Les lignes 27 à 37 correspondent à un tableau qui s'affiche directement sous le graphique. Ce tableau présente les produits pour lesquels la rotation de stock est la plus faible. Aux lignes 28 et 29, nous calculons le nombre d'unités vendues pour chaque produit sur les derniers 365 jours. À la ligne 30, est calculé le stock pour chaque article. La fonction max() est utilisée pour éviter une division par zéro à la ligne 31, s'il n'y a pas de stock pour un produit. À la ligne 31, nous calculons les rotations de stock, c'est à dire le nombre de rotations du stock sur une année. Les lignes 32 à 37 définissent l'affichage du tableau. À la ligne 32, nous définissons le titre et sa position. De la ligne 33 à 36, nous définissons toutes les colonnes de la table : une ligne par colonne, de droite à gauche. Enfin, à la ligne 37, l'option order by (classer par) permet d'afficher les rotations les plus faibles en premier.

Étape suivante

Si vous ne connaissez pas la programmation, ce premier script peut vous sembler impressionnant. Mais comme vous pouvez le voir, en seulement 37 lignes de code, il est possible d'élaborer un tableau de bord non trivial qui inclut des indicateurs clés, permet de visualiser des données et liste des produits sur lesquels l'entreprise devrait se pencher pour mettre de l'ordre dans son stock. Avec ce script de moins de 40 lignes, nous sommes déjà allés relativement loin.

De façon générale, la syntaxe utilisée pour écrire les calculs est très similaire à celle d'Excel. Par exemple, le calcul du stock total en prenant en compte le stock disponible et celui en commande peut être écrit de la façon suivante : sum(PurchasePrice * (StockOnHand + StockOnOrder)). N'hésitez pas à faire des expériences sur cet échantillon, en modifiant des parties du script et en observant les conséquences sur les tableaux de bord nouvellement générés.