Creare pannelli di controllo con Envision - Software di ottimizzazione delle scorte

Creare pannelli di controllo con Envision












Home » Risorse » Qui

I pannelli di controllo Envision sono costituiti da unità più piccole chiamate caselle, di cui è possibile modificare dimensioni, colore e posizione all'interno del pannello. Envision favorisce pannelli ad alta produttività, in cui tutti i valori più importanti per l'analisi di un'attività sono raccolti in un'unica pagina. Anche i pannelli più complessi vengono creati in meno di un secondo. In questa pagina, vedremo come creare un pannello di controllo Envision partendo da zero.

Il primo pannello di controllo

Creeremo il nostro primo pannello di controllo usando i dati campione. Lo screenshot qui sotto è un'immagine di come dovrebbe essere il pannello di controllo sull'account Lokad.

Image

Il pannello qui sopra è stato generato con lo script qui di seguito. Sappiamo che lo script potrebbe sembrare un po' complesso; analizziamolo quindi riga per riga.
read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as Orders
read "/sample/Lokad_PurchaseOrders.tsv" as PO

show label "Hello World: my first dashboard" a1f1 tomato

show table "Items" a2 with sum(1)
show table "Orders" b2 with sum(Orders.1)
show table "Min selling price{$}" c2d2 with min(SellPrice)
show table "Max selling price{$}" e2f2 with max(SellPrice)

Week.oamount := sum(Orders.NetAmount)
Week.pamount := sum(PO.NetAmount)
show linechart "Weekly volumes{$}" a3f5 tomato with
  Week.oamount as "Sold" 
  Week.pamount as "Purchased"

show piechart "Sales by brand" a6c8 tomato with sum(Orders.NetAmount) group by Brand

show treemap "Stock value by supplier{$}" d6f8 tomato with 
  Name
  StockOnHand * BuyPrice
  Supplier

show table "Top Sellers" a9f12 tomato with
  Id as "Product ID"
  Supplier
  StockOnHand
  sum(Orders.NetAmount) as "Sold{$}"
  order by sum(Orders.NetAmount) desc
A questo punto, suggeriamo di accedere al proprio account Lokad. Cliccare su Create Envision Script (crea script Envision), copiare e incollare lo script qui sopra, quindi cliccare su Start Run (avvia esecuzione). Una volta completata l'esecuzione, cliccare il link verde che apparirà tra le Recent runs (esecuzioni recenti) sotto il pulsante Start Run. Dovrebbe apparire un pannello di controllo identico a quello qui sopra.

Il pannello comprende una sola pagina. Per ingrandire una delle caselle o il grafico, basta cliccare su di essi per espanderli. Per riportare la casella alle dimensioni originali, basta cliccare nella zona in nero intorno alla casella ingrandita.

Titolo, posizione e colore

La casella label (etichetta) è il tipo di casella più semplice tra quelli disponibili in Envision, ed è anche un buon punto di partenza per esaminare tutte le proprietà delle caselle (titolo, dimensioni e colore primario). La casella label mostra semplicemente il testo specificato all'interno della casella (le dimensioni del carattere sono regolate in base alle dimensioni della casella).
show label "Hello World: my first dashboard" a1f1 tomato
Tutte le caselle vengono mostrate usando l'istruzione show (mostra), seguita da 4 argomenti. Il primo è il tipo di casella: Envision supporta diversi tipi di casella, tra cui il tipo label. In questa sezione vedremo altri tipi di casella utilizzati in questo pannello di controllo.

Dopo il tipo di casella viene indicato il titolo della casella, definito da una serie di caratteri tra virgolette ("). Il titolo viene di solito indicato all'inizio della casella, anche se la sua posizione può variare a seconda del tipo di casella. Dopo il titolo, viene indicata la posizione della casella (a1f1 nell'esempio sopra). Envision segue le convenzioni di una tabella Excel, per cui le lettere indicano una colonna e i numeri una riga: quindi, a1f1 corrisponde alle celle che vanno dall'angolo in alto a sinistra A1 all'angolo in basso a destra F1. Envision non distingue tra maiuscole e minuscole, dunque A1F1 è equivalente a a1f1.

Infine abbiamo il colore (tomato nell'esempio sopra). Il colore è opzionale e, se omesso, viene usato il nero, che è il colore predefinito. Envision accetta tutti i colori web e ogni valore esadecimale, a condizione di omettere l'asterisco (#) (per esempio, 0099CC invece di #0099CC). Nella pratica, però, modificare il colore direttamente dall'editor di script è un'operazione abbastanza tediosa.

L'editor di caselle

Modificare colore e posizione delle caselle direttamente dall'editor di script è possibile, ma poco pratico, dato che l'editor di script non consente di vedere un'anteprima del risultato. Per questo, Envision include un altro editor pensato appositamente per modificare le caselle, che offre la possibilità di cambiare titolo, posizione e colore di ogni casella, oltre ad alcune funzionalità utili a modificare rapidamente l'intero pannello di controllo.

Image

Dall'account Lokad, tornare al pannello di controllo appena creato e cliccare Edit Tiles (modifica caselle). Su ogni casella apparirà un overlay scuro che indica la posizione della casella, espressa secondo le convenzioni di Excel, come abbiamo visto prima. Cliccare su una qualsiasi delle caselle (anche la casella label in alto andrà bene): si aprirà una finestra di dialogo, dalla quale sarà possibile modificare le proprietà della casella.

Sulla sinistra della pagina, appariranno dei pulsanti verdi con un +: cliccando su uno di questi pulsanti, viene aggiunta una riga di tabella vuota sopra il pulsante, per cui tutte le caselle si sposteranno verso il basso. Inserire una riga vuota è utile a spingere una sezione verso l'alto (e, di conseguenza, un'altra sezione verso il basso).

Image

Dopo aver cliccato su un pulsante verde +, sulla destra apparirà un pulsante rosso -, che consentirà di eliminare la riga vuota. I pulsanti rossi appaiono solo se la riga è vuota, per evitare di eliminare una riga che contiene ancora delle caselle. In linea di massima, consigliamo di non perdere troppo tempo a scegliere la posizione e il colore di ogni casella mentre si lavora allo script. Se anche le caselle dovessero sovrapporsi, Envision regolerà automaticamente la loro posizione, in modo da mantenerle tutte ben visibili. Non c'è motivo di precoccuparsi, quindi, di scegliere la posizione sbagliata. L'editor di caselle aiuterà a dare il tocco finale al pannello di controllo.

Mostrare indicatori a un solo valore

Mostrare milioni di numeri è facile, il difficile è selezionare 10 valori che valga davvero la pena di esaminare ogni giorno. Quando si crea un pannello di controllo, spesso si progettano caselle che contengono un unico valore, con la casella di tipo table (tabella). Questo tipo di casella è una tabella 1x1 che può contenere un singolo valore. Nello script qui sotto vediamo 4 diversi indicatori, uno per riga.
show table "Items" a2 with sum(1)
show table "Orders" b2 with sum(Orders.1)
show table "Min selling price{$}" c2d2 with min(SellingPrice)
show table "Max selling price{$}" e2f2 with max(SellingPrice)
L'istruzione show table (mostra tabella) comincia con l'indicare tipo, titolo, posizione e colore della casella, proprio come per la casella label. Troviamo, poi, la parola chiave with (con), che, nel caso delle caselle che contengono dati, indica che devono essere elencate le variabili da includere nella casella. In questo caso particolare, le nostre caselle contengono un solo valore, ma vedremo, nella prossima sezione, che una casella può contenere anche più valori.

Finora non abbiamo ancora parlato delle capacità di aggregazione di Envision. Senza entrare troppo nel dettaglio, ricordiamo che sum(), min() e max() sono aggregatori che funzionano più o meno come le loro controparti in Excel.

sum(1) e Orders.1 potrebbero tuttavia generare qualche perplessità. Come abbiamo visto durante i nostri primi calcoli, Envision opera soprattutto con i vettori. sum(1), quindi, non è altro che uno zucchero sintattico per la variante più lunga:
OnePerLine = 1
show table "Items" a2 with sum(OnePerLine)
Nello snippet qui sopra, viene definito il vettore OnePerLine (uno per riga), che, per convenzione, fa parte della tabella degli articoli. L'istruzione è quindi quella di assegnare il valore 1 a ogni articolo, ossia a ogni riga della tabella degli articoli. Di conseguenza, la somma di tutti questi valori sarà uguale al numero totale di articoli elencati nella tabella Items. Allo stesso modo, sum(Orders.1) equivale a questo snippet:
Orders.OnePerLine = 1
show table "Orders" b2 with sum(Orders.OnePerLine)
L'assegnamento è di nuovo un'operazione con dei vettori, in cui a ogni riga della tabella Orders viene assegnato un valore uguale a 1. Quando sommiamo tutti questi valori, abbiamo il numero totale di righe della tabella. Per ogni tabella, possiamo scrivere MyTable.42 come zucchero sintattico, in modo da assegnare il valore 42 a un vettore non meglio specificato.

Il prezzo minimo segue più o meno lo stesso schema per l'aggregazione. Tuttavia, a uno sguardo più attento, notiamo che il risultato visivo è leggermente diverso. Infatti, il prezzo di vendita è indicato con il segno del dollaro ($) come unità di misura. Osserviamo la riga di script corrispondente per capire com'è possibile.
show table "Min selling price{$}" c2d2 with min(SellingPrice)
Questo comportamento è possibile perché, alla fine del titolo, abbiamo il segno {$}: per convenzione, quando Envision trova un valore tra parentesi graffe all'interno di un titolo, lo considera come ‘’unità’’ applicabile. L'unità è posta di solito a destra del valore (es. 42 miles per 42 miglia), ma, soprattutto nel caso delle unità monetarie (come $ o £), è possibile trovarla a sinistra del valore. Envision, naturalmente, rispecchia questo schema.

Mostrare un grafico

Un altro tipo di casella molto usato è il grafico. In questo caso, i dati dovranno essere aggregati per periodo (giorno, settimana o mese). Questo tipo di casella è più difficile da utilizzare rispetto agli altri. Vediamo perché, con l'aiuto del nostro script.
Week.oamount := sum(Orders.NetAmount)
Week.pamount := sum(PO.NetAmount)
show linechart "Weekly volumes{$}" a3f5 tomato with
  Week.oamount as "Sold"
  Week.pamount as "Purchased" 
La tabella Week (settimana) non è una tabella vera e propria, nel senso che non è una tabella caricata con i dati. Le aggregazioni periodiche, però, sono così diffuse nel settore commerciale, che Envision riserva loro un trattamento particolare e consente di implementare le operazioni con le aggregazioni periodiche nel modo più semplice possibile. Tuttavia, questo specifico aspetto del linguaggio di Envision va oltre le finalità di questo tutorial. Basti sapere che Week è una sorta di recipiente in cui i dati vengono raggruppati per settimana.

Abbiamo, poi, uno speciale assegnamento :=, il cosiddetto assegnamento scalare: invece di calcolare un valore per articolo, come l'assegnamento =, l'assegnamento scalare calcola un solo valore indipendente da tutti gli articoli. In questo caso, nelle prime due righe calcoliamo un unico valore per l'intera settimana Week.oamount e un unico valore per l'intera settimana Week.pamount.

L'istruzione show linechart (mostra grafico) è un po' più lunga rispetto a quella per una semplice casella label. Per evitare un'istruzione lunga e poco leggibile, usiamo la sintassi a blocchi: la sintassi inizia con la parola chiave with, cui fanno seguito tutti gli argomenti della casella, elencati riga dopo riga.

Il titolo del grafico contiene anche il segno {$}, che indica un'unità monetaria, come abbiamo visto per gli indicatori a un solo valore.

Nell'ultima riga, abbiamo i due vettori Week.oamount e Week.pamount. Come abbiamo detto prima, with può introdurre una serie di variabili separate da una virgola. Queste variabili sono quelle che vedremo poi all'interno della casella: nel nostro caso, si tratta di due variabili. Teoricamente, un grafico è in grado di supportare più di due variabili, ma raccomandiamo comunque di non includerne più di 3, poiché i grafici tenderebbero a diventare illeggibili.

Queste variabili possono anche essere rinominate esplicitamente: basta inserire la parola chiave as e farla seguire dal nuovo nome tra virgolette. Ogni tipo di casella tende a gestire i nomi delle variabili a modo proprio, per migliorare l'aspetto della casella. Ad esempio, la casella grafico converte i nomi in una legenda sotto il grafico vero e proprio. A proposito, il meccanismo usato per rinominare le variabili con la parola chiave as è valido per tutti i tipi di caselle, non solo per linechart. La stringa che segue as può anche contenere un'unità di misura, che verrà gestita proprio come nel caso del titolo.

Per impostazione predefinita, il grafico seleziona una serie di colori sulla base del colore specificato per la casella. Volendo, è anche possibile applicare un colore diverso per ogni riga, attraverso la sintassi seguente:
show linechart "Weekly volumes{$}" a3f5 with
Week.oamount as "Sold" color: "blue"
Week.pamount as "Purchased" color: "red"

Mostrare una tabella

Lasciamo per il momento da parte piechart (grafico a torta) e treemap (diagramma ad albero) e approfondiamo gli usi più avanzati della tabella. Le tabelle, pur non essendo immediatamente visualizzabili, sono uno degli elementi più versatili all'interno del pannello di controllo. Sono utilizzate spesso per visualizzare liste di priorità delle azioni da compiere, ad esempio per i prodotti con troppe o troppo poche scorte a magazzino. Nello script qui sopra, abbiamo una tabella semicomplessa, definita alla fine dello script (la copiamo qui per maggiore chiarezza).
show table "Top Sellers" a9f12 tomato with
  Id as "Product ID"
  Supplier
  StockOnHand
  sum(Orders.NetAmount) as "Sold{$}"
  order by sum(Orders.NetAmount) desc 
Avremmo anche potuto scrivere questa istruzione in un'unica riga. Tuttavia, per renderla più leggibile, abbiamo fatto ricorso ancora una volta alla sintassi a blocchi. La sintassi segue le regole generali di Envision che abbiamo visto finora, con 4 variabili dopo with. L'istruzione termina con order by (ordina per), che vedremo più avanti nel dettaglio.

Envision ci consente di elencare non solo variabili, ma anche espressioni. Sfruttiamo questa possibilità nella riga 4 dello script qui sopra: sum(), infatti, calcola un aggregato a livello di articolo, il cui risultato è mostrato direttamente all'interno della casella. Avremmo anche potuto dichiarare prima di tutto il vettore, con:
Sold = sum(Orders.NetAmount)
show table "Top Sellers" a9f12 tomato with
  Id as "Product ID"
  Supplier
  StockOnHand
  Sold as "Sold{$}
  order by sum(Orders.NetAmount) desc 
Dichiarare un'espressione all'interno dell'istruzione di una casella rende lo script più compatto e facile sia da leggere che da gestire.

Infine, l'ultima riga include l'istruzione order by di cui abbiamo parlato prima: questa riga determina l'ordine in cui verranno mostrate le righe all'interno della tabella. desc indica che verrà usato un ordine discendente. Di contro, se desc viene omesso, verrà usato un ordine ascendente.