Skip to main content
Skip table of contents

Key Performance Indicators

INDICE


Definizione

I KPI o “Key Performance Indicators” (indicatori chiave di prestazione) sono degli indici utilizzati per monitorare con facilità i processi aziendali e per interpretare l’andamento di una attività in un dato periodo di tempo. Si tratta quindi di indicatori chiave riguardanti i principali obiettivi dell’attività di business e i risultati ad essi correlati.

POSible mette a disposizione i principali KPI utilizzati nel mercato retail, ma grazie alla flessibilità di Vibecode, l’utente ha la possibilità di crearne di nuovi, in modo da rispondere puntualmente alle necessità di monitoraggio di uno specifico processo o area di business.

Vibecode, infatti, consente di definire liberamente le regole (formule) per calcolarne i valori. 

In POSible i KPI vengono visualizzati in una apposita pagina, accessibile direttamente dalla Homepage dell’applicazione. In questa pagina i KPI vengono raggruppati in pannelli (board) per fare in modo di avere, in una unica panoramica, tutti i dati tra loro attinenti (per tipologia, fruibilità, destinazione d’uso o altro ancora).

Per ogni KPI è possibile definire la tipologia di visualizzatore da utilizzare. I KPI in POSible possono essere rappresentati sotto forma di valori numerici, valori discreti o di grafico.

È inoltre possibile predefinire il livello di aggregazione temporale di ogni KPI (ad esempio giornaliero, settimanale, mensile, ecc.).

Nota:

Le operazioni di calcolo dei KPI, per quanto ottimizzate, sono un processo che impiega considerevoli risorse sia di elaborazione che di spazio di memorizzazione. Occorre quindi valutare con attenzione il livello di aggregazione necessario.

Impostare i KPI

Vibecode separa la definizione ed il calcolo dei valori dei KPI dalla loro rappresentazione grafica.

In Vibecode i dati sorgente dei KPI, nonché la definizione dei KPI stessi, sono raggruppati in “containers”. Ogni “container” comprende dati omogenei a livello di chiavi di raggruppamento e totalizzazione. Questo consente di ridurre il numero di record che l’applicazione dovrà elaborare a beneficio dei tempi di risposta.

La rappresentazione grafica invece è definita mediante dei parametri di rendering inseriti in una tabella dedicata.

Tutti i dati sorgente per il calcolo dei KPI sono contenuti in una tabella “cubo” in Vibecode, che è il risultato dell’elaborazione delle query per l’estrazione dei dati da analizzare.

La tabella “cubo” è definita da “fatti numerici” (misure) classificati per aspetti (dimensioni).

Le dimensioni sono rappresentate dalle chiavi di raggruppamento e totalizzazione, come ad es. store, sales operator, date, hour, ecc.  

Le misure sono rappresentate dalle quantità misurabili, come ad es. importo vendite, numero scontrini, quantità venduta, importo netto, ecc.

Per creare la tabella “cubo” l’utente dovrà impostare i dati a partire dalla tabella kKPIContainer di Vibecode, che conterrà la definizione delle dimensioni nel ContainerGrid “Keys” e la definizione delle regole (rules) per il calcolo delle misure, nel relativo ContainerGrid “Regole”.

Il numero di record nella tabella “cubo” è il risultato della combinazione delle chiavi per l’estrazione dei dati.

Esempio di tabella “cubo”:

Esempio di tabella kKPIContainer:

Esempio di ContainerGrid “Keys” con le dimensioni definite per il container “POSibleKPI”:

Il ContainerGrid “Keys” visualizza e permette di gestire i record della tabella kKPIContainer_Keys.

Esempio di ContainerGrid “Regole” con le regole definite per il container “POSibleKPI”:

Il ContainerGrid “Regole” visualizza e permette di gestire i record della tabella kKPIContainer_Rules.

Popolamento del container

Il popolamento dei dati del container, definito nella tabella kKPIContainer , può essere eseguito dall’utente in real time utilizzando il comando “Populate Container” presente tra i pulsanti in fondo alla pagina.

L’utente ha anche la possibilità di schedulare il processo di popolamento, in modo che venga eseguito periodicamente in automatico, utilizzando il comando “Schedule Populate Container” che crea un elemento nelle code di Vibecode, inserendo un record nella tabella kProcessQueue a cui si può accedere dall’albero di Vibecode:

Amministratore > Activity Monitor > Code > Manage Process Queues

Una volta eseguito il comando “Schedule Populate Container”, è necessario verificare la presenza del processo in Manage Process Queues e modificare il record inserendo i parametri per la schedulazione, come descritto nel documento “Schedulazione processi in Vibecode“.

Creazione delle REGOLE

All’interno della tabella kKPIContainer_Rules sono presenti altri due ContainerGrid (“Keys” e “Valori”) che permettono all’utente di definire le chiavi delle regole e le formule di calcolo dei valori.

Per impostare correttamente le regole porre attenzione ai seguenti campi della tabella:

  • Calculated: indica se la regola sarà risolta nell’applicazione Client, ad. es. POSible, oppure se sarà risolta direttamente dal motore di calcolo dei KPI di Vibecode (Sì/No). Se impostato a Sì, la regola sarà risolta dal Client

  • SourceClass: è la tabella di origine o fonte del dato; deve essere specificata obbligatoriamente se il campo Calculated è impostato a No

  • Filtro: in questo campo è contenuta la formula che consente di selezionare i dati che saranno utilizzati per calcolare i valori. Il filtro viene applicato alla classe specificata nel campo SourceClass, quando il campo Calculated è impostato a No.

  • Abilitato: indica se la regola viene utilizzata (Sì/No)

Esempi di filtro, per la sintassi è possibile consultare il documento “Filtri”; in entrambe gli esempi la SourceClass è la tabella degli scontrini (kReceipt).

a)

CODE
field(product) in(cluster value(NORMALIZED) class(kProduct) key(code))

b)

CODE
field(parentid.loyaltycustomer) nn('')

Nel primo esempio (a) vengono estratti tutti gli id dei prodotti (field(product)) che sono presenti nella vista creata sul Cluster dei Prodotti (cluster value(NORMALIZED) class(kProduct) key(code)) nel caso in cui il codice (key(code)) è uguale a NORMALIZED.

Nel Cluster dei Prodotti (tabella kProduct_C) è definito il seguente filtro che indica che tutti i prodotti appartengono all’elenco dei prodotti “NORMALIZED”:

CODE
field(code) eq(code)

Nel secondo esempio (b) vengono estratti tutti gli scontrini che hanno il campo loyaltycustomer diverso da null (parametro “nn”).

Esempio di ContainerGrid “Keys” con le chiavi per le regole:

Il ContainerGrid “Keys” visualizza e permette di gestire i record della tabella kKPIContainer_Rules_Keys.

Esempio di ContainerGrid “Valori” con le formule per il calcolo dei valori:

Il ContainerGrid “Valori” visualizza e permette di gestire i record della tabella kKPIContainer_Rules_Value.

Per impostare correttamente le formule per il calcolo dei valori porre attenzione ai seguenti campi:

  • Descrizione: corrisponde al nome della colonna nella tabella “cubo”

  • Referenza: formula per il trattamento del dato

  • CustomType: tipo del valore: classe o tipo di dati di Vibecode (es. “tkValue”, “tkYesNo”, ecc.)

  • Autogroup: indica se utilizzare una funzione di raggruppamento alternativa a quella presente nel campo Groupingfunction (Sì/No) 

  • Groupingfunction: Nome della funzione di raggruppamento dati che verrà utilizzata (es. “Somma”)

  • Abilitato: determina se il valore sarà calcolato (Sì/No)

Esempio di formule contenute nel campo Referenza:

a) SalesAmountNormalized

CODE
mult(case(eq(parentid.receipttype,1),1,-1),Amount.Value)

b) AvgFidelityCustomer

CODE
case(eq(parentid.receipttype,1),parentid.loyaltycustomer,'*null*')

Nel primo esempio (a), la formula nel campo Referenza serve per cambiare di segno al valore dell’importo della vendita (Amount.Value), quindi:

se il campo parentid.receipttype è uguale a 1, il campo Amount.Value non cambierà segno perché sarà moltiplicato per 1;

se invece il campo parentid.receipttype è diverso da 1, il campo Amount.Value diventerà negativo perché verrà moltiplicato per -1;

Nel secondo esempio (b), la formula nel campo Referenza serve a selezionare il loyalty customer collegato allo scontrino, se il campo parentid.receipttype è uguale a 1, altrimenti non verrà selezionato alcun valore.

Esempio di regola che ha il campo Calculated impostato con “Sì”:

Con il campo Calculated impostato con “Sì”, i campi SourceClass e Filtro non vengono considerati e la formula contenuta nel campo Referenza, del ContainerGrid “Valori”, non viene risolta dal motore di calcolo dei KPI di Vibecode ma viene inviata all’applicazione Client, che la utilizza per trattare i dati del KPI.

Esempio di formula nel campo Referenza:

CODE
case(eq(sum(ReceiptCount),0),0,div(sum(SalesAmountNormalized),sum(ReceiptCount)))

In questo caso la formula serve per calcolare l’importo medio delle vendite normalizzate, e il calcolo, cioè la somma degli importi delle vendite normalizzate [sum(SalesAmountNormalized)] divisa per la somma del numero degli scontrini [sum(ReceiptCount)], avviene solo se la somma del numero degli scontrini è diversa da zero.

ReceiptCount e SalesAmountNormalized sono due KPI calcolati in altre regole del container e sono presenti in tabella kKPIContainer_Rules_Value.

Ad es. ReceiptCount viene calcolato nella regola che si chiama Receipt:

Rappresentazione grafica dei KPI

Per quanto riguarda la rappresentazione grafica, l’utente dovrà impostare i dati a partire dalla tabella kKPIBoard di Vibecode.

Ogni elemento del ContainerGrid “Elementi” rappresenta un KPI e la sua “veste” grafica.

Esempio di tabella kKPIBoard :

Esempio di ContainerGrid “Elementi” con l’elenco delle board disponibili:

Il ContainerGrid “Elementi” visualizza e permette di gestire i record della tabella kKPIBoard_Items.

Esempio di ContainerGrid “AutoUpdateFilter” per l’auto-aggiornamento dei container elencati al momento della visualizzazione nel Client:

Ogni riga del ContainerGrid “Elementi” ha, al suo interno, altri due ContainerGrid: “Series” e “RendererParams”. Il primo racchiude tutti i dati di un ben determinato grafico; il secondo racchiude tutti i parametri che l’utente può impostare per caratterizzare la visualizzazione del grafico nell’applicazione Client.

Per impostare correttamente i dati per ogni elemento, cioè per ogni singola board, porre attenzione ai seguenti campi:

  • Nome: nome della singola board

  • Container: nome del container dei dati a cui appartiene la board; deriva dalla tabella kKPIContainer

  • Keys: elenco delle chiavi (dimensioni) che si riferiscono al container dei dati (campo Container); deriva dalla tabella kKPIContainer_Keys

  • Titolo: nome del grafico che sarà visualizzato nell’applicazione Client

  • Renderer: tipo di rappresentazione grafica della board nel Client; deriva dalla tabella kBoardItemRenderer

  • TimeUOM: parametro temporale per il raggruppamento dei dati del grafico

  • DefaultPeriodFrom/DefaultPeriodTo: parametri che definiscono il periodo temporale di riferimento per i dati del grafico

  • Filtro: regola o formula che si applica in generale ai dati del grafico

  • Abilitato: determina se il grafico è attivo e visualizzabile (Sì/No)

Esempio di parametri utilizzabili nei campi DefaultPeriodFrom/DefaultPeriodTo:

d0 = data odierna

d-6 = periodo temporale che va dalla data corrente fino a sei giorni indietro (la settima precedente quindi)

d-3 = trimestre precedente

y-1 = anno precedente

Per impostare correttamente questi parametri si può utilizzare il tool “Date Formula” presente nel menu dei campi DefaultPeriodFrom/DefaultPeriodTo che si attiva cliccando sui tre puntini verticali:

Esempio di ContainerGrid “Series”:

Il ContainerGrid “Series” visualizza e permette di gestire i record della tabella kKPIBoard_Items_Series.

Per impostare correttamente i dati delle serie porre attenzione ai seguenti campi:

  • KPI: nome del KPI inviato al Client; deriva dalla tabella kKPIContainer_Rules_Value

  • Titolo: nome della serie che comparirà nella legenda del grafico, se presente, sul Client

  • CompareTo: nominativo della serie di dati per effettuare un confronto, deriva dalla tabella kKPIBoard_Items_Series

  • DateTranslateFormula: Parametro che definisce il periodo temporale di riferimento dei dati del grafico (es. “d0”, “m-3”,”y-1”, ecc.). Anche per questo campo è a disposizione il tool “Date Formula”

Esempio di ContainerGrid “RendererParams”:

Per impostare correttamente la visualizzazione del grafico è necessario impostare i parametri nel ContainerGrid “RendererParams”:

Ogni parametro può assumere un certo valore, che va impostato a seconda dell’effetto che si vuol ottenere.

I parametri derivano dalla tabella kKPIBoard_Items_RendererParams.

Parametri

Il parametro principale è Size che può assumere due valori: “small” o “large”; indica la dimensione del pannello contenente il grafico, visualizzato nell’applicazione Client, ad es in POSible.

I pannelli con size “large” vengono sempre collocati nella parte alta della pagina e si potranno scorrere orizzontalmente; quelli con size “small”, vengono collocati al di sotto di quello “large”, se presente, e sono sempre disposti su due colonne, per tutta la lunghezza della pagina.

Alcuni parametri possono assumere solamente i valori 1 e 0; 1 sta ad indicare che il parametro verrà considerato nella creazione del pannello; ad es. se Show chart è impostato ad 1, nel pannello sulla app Client verrà mostrato un grafico, se è uguale a 0 o non è presente, non ci sarà alcun grafico.

Esempio 1:

In questo caso si vuole ottenere un pannello piccolo (Size = “small”) senza grafico, che mostri il valore corrente (Show value = 1; Value = current) che sarà formattato come indicato con il parametro Value format e avrà come suffisso il simbolo dell’euro (Value suffix = €).

Queste impostazioni corrispondono, in POSible, ad una visualizzazione di questo tipo:

Esempio 2:

In questo caso si vuole ottenere un pannello piccolo (Size = “small”) con un grafico (Show chart = 1) che mostri il valore corrente (Show value = 1; Value = current) sottoforma di istogramma (Chart type = Column), il valore esposto sarà formattato come indicato con il parametro Value format e avrà come suffisso il simbolo dell’euro (Value suffix = €).

Queste impostazioni corrispondono, in POSible, ad una visualizzazione di questo tipo:


Visualizzare i KPI in POSible

L’utente può accedere alla pagina dei KPI con un tap sull’icona in alto a destra nella Homepage:

L’icona è attiva se nel setup di POSible (tabella kPOS_Setup) l’utente ha inserito, nel campo-lista “KPI Boards”, almeno una board definita nella tabella kKPIBoard, come descritto nel presente documento.

Esempio di pagina dei KPI in POSible:

Sequenza di caricamento delle tabelle in Vibecode

L’ordine di importazione dei dati per valorizzare le tabelle KPI in Vibecode è il seguente:

  1. kBoardItemRendererParam - tabella dei parametri per i grafici KPI

  2. kBoardItemRenderer - tabella del tipo di grafico per il KPI

  3. kKPIContainer - tabella container dei dati

  4. kKPIBoard - tabella delle board dei grafici KPI

Esempio di file “Core Object”:

KPI.zip

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.