Event log per Process Mining: come crearlo

Cosa imparerai

In questa guida imparerai a creare da zero un event log di Process Mining. Tratteremo le tre colonne indispensabili per ogni event log, vedremo un esempio concreto e ti mostreremo come costruire il tuo primo event log sia con Excel sia con SQL.

Che cos’è un event log di Process Mining?

Correlati: Scopri di più sul miglioramento dei processi e trova i modelli di dati per il tuo sistema. Leggi anche perché evitiamo i connettori out-of-the-box a favore di semplici modelli di dati.

Un event log di Process Mining è semplicemente una tabella che registra ciò che è accaduto nel tuo processo. Pensalo come un diario che traccia ogni passaggio di ogni caso che attraversa il sistema. Il software di Process Mining legge questo diario e crea diagrammi che mostrano come il processo funziona davvero.

Ogni event log deve contenere tre informazioni essenziali per riga:

ColonnaSignificatoEsempio
Case IDUn identificativo univoco che raggruppa gli eventi correlatiOrdine n. 12345
TimestampQuando è avvenuto l’evento2025-01-15 09:30:00
ActivityChe cosa è successo”Ordine effettuato”

Tutto qui. Con solo queste tre colonne puoi iniziare a fare Process Mining. Tutto il resto, come nomi dei clienti, valore dell’ordine o ID dei dipendenti, sono extra opzionali chiamati “attributi” che arricchiscono l’analisi.

Capire la differenza: eventi vs attività

Prima di andare oltre, facciamo chiarezza su un dubbio comune.

Un’attività è un tipo di azione, come “Ordine spedito” o “Pagamento ricevuto”. Pensala come una categoria o un’etichetta.

Un evento è il verificarsi concreto di quell’attività. Quando l’Ordine #12345 viene spedito il 15 gennaio alle 14:30, quello è un evento.

Il tuo event log contiene eventi, ma ogni evento ha un nome di attività. Nella pratica questi termini si usano spesso in modo intercambiabile, e va bene. Ricorda: le attività sono il “cosa” e gli eventi sono il “quando è successo e a chi”.

Il nostro esempio: il sistema ordini di Pizza Palace

Per rendere la guida concreta, lavoriamo su un sistema fittizio. Immagina di gestire Pizza Palace, una pizzeria di quartiere con un sistema di ordini online. I clienti ordinano dal sito, il personale prepara le pizze e gli autisti le consegnano.

Il sistema di Pizza Palace ha diverse tabelle che tracciano parti diverse del flusso d’ordine:

  • orders - Informazioni di base sull’ordine (ID ordine, cliente, ora di creazione)
  • order_items - Cosa è stato ordinato (pizze, contorni, bevande)
  • kitchen_queue - Quando gli ordini entrano ed escono dalla cucina
  • delivery_assignments - Assegnazioni agli autisti e tracciamento della consegna
  • payments - Registrazioni dei pagamenti

Obiettivo: creare un event log che mostri il percorso completo di ogni ordine, dalla creazione alla consegna.

Tipi di eventi: diretti e dedotti

Quando costruisci un event log, incontrerai due tipi di eventi:

Eventi diretti

Gli eventi diretti sono registrati esplicitamente nel tuo sistema. Quando qualcuno fa clic su un pulsante o il sistema registra un’azione, il timestamp è già presente nel database.

Esempi da Pizza Palace:

  • Order placed (timestamp nella tabella orders)
  • Payment received (timestamp nella tabella payments)
  • Delivery completed (timestamp nella tabella delivery_assignments)

Eventi dedotti

Gli eventi dedotti non hanno un timestamp proprio, ma puoi capire quando sono avvenuti in base ad altri dati.

Esempi da Pizza Palace:

  • “Order Assigned to Driver” potrebbe non avere un timestamp, ma la tabella delivery_assignments ha il campo created_at che indica quando è stata effettuata l’assegnazione
  • ”Pizza Ready” può essere dedotto dal momento in cui lo stato della coda di cucina passa a “completed”

La differenza principale: gli eventi diretti sono registrati esplicitamente, mentre gli eventi dedotti richiedono di interpretare altri campi del dataset. Entrambi sono validi e utili per il process mining.

Pianificare il tuo event log

Prima di estrarre i dati, definisci quali eventi vuoi catturare. Per Pizza Palace, tracciamo queste attività:

  1. Ordine effettuato – Il cliente invia l’ordine
  2. Pagamento ricevuto – Il pagamento va a buon fine
  3. Ordine inviato in cucina – L’ordine entra in coda di preparazione
  4. Ordine pronto – La cucina marca l’ordine come completato
  5. Assegnato all’autista – Un autista viene assegnato alla consegna
  6. Consegna completata – L’ordine è consegnato al cliente

Per ogni evento, individua:

  • Quale tabella contiene i dati
  • Quale campo fornisce il timestamp
  • Qual è il Case ID (nel nostro caso, l’ID ordine)

Ecco la nostra mappatura:

AttivitàTabella di origineCampo TimestampCampo Case ID
Ordine effettuatoorderscreated_atid
Pagamento ricevutopaymentspayment_timeorder_id
Ordine inviato in cucinakitchen_queuequeue_entry_timeorder_id
Ordine prontokitchen_queuecompleted_timeorder_id
Assegnato all’autistadelivery_assignmentsassigned_atorder_id
Consegna completatadelivery_assignmentsdelivered_atorder_id

Aggiungere attributi di case ed evento

Anche se Case ID, Timestamp e Attività sono obbligatori, gli attributi rendono l’analisi molto più potente. Sono colonne aggiuntive che forniscono contesto.

Attributi del caso

Gli attributi di caso descrivono l’intero ordine e sono uguali per tutti gli eventi dello stesso caso:

  • Nome del cliente
  • Valore totale dell’ordine
  • Indirizzo di consegna
  • Numero di articoli ordinati

Attributi di evento

Gli attributi di evento sono specifici per ciascun evento:

  • Nome del driver (rilevante solo per gli eventi di consegna)
  • Metodo di pagamento (rilevante solo per gli eventi di pagamento)
  • Postazione in cucina (rilevante solo per gli eventi di cucina)

Consiglio pratico: va benissimo includere tutte le colonne degli attributi in ogni riga, anche se alcune non si applicano a certi eventi. Ad esempio, nella riga “Order Placed” la colonna “Driver Name” può rimanere vuota. Così mantieni un event log semplice e piatto, che gli strumenti di process mining adorano.

Costruire l’event log: la struttura semplice

L’event log finale dovrebbe essere un’unica tabella in cui ogni riga rappresenta un evento. Ecco come apparirà l’event log di Pizza Palace:

Case IDTimestampAttivitàClienteValore ordineAutistaMetodo di pagamento
10012025-01-15 18:30:00Ordine effettuatoJohn Smith45.99
10012025-01-15 18:30:15Pagamento ricevutoJohn Smith45.99Carta di credito
10012025-01-15 18:31:00Ordine inviato in cucinaJohn Smith45.99
10012025-01-15 18:45:00Ordine prontoJohn Smith45.99
10012025-01-15 18:46:00Assegnato all’autistaJohn Smith45.99Maria Garcia
10012025-01-15 19:05:00Consegna completataJohn Smith45.99Maria Garcia
10022025-01-15 18:35:00Ordine effettuatoJane Doe28.50
10022025-01-15 18:35:20Pagamento ricevutoJane Doe28.50PayPal

Nota come gli attributi di caso (Cliente, Valore ordine) si ripetono per ogni evento dello stesso caso. Questa duplicazione è voluta e rende i dati più facili da usare.

Metodo 1: creare un event log in Excel

Se puoi esportare i dati in un foglio di calcolo, puoi costruire un event log manualmente. Questo approccio funziona benissimo per dataset piccoli o quando stai imparando.

Passo 1: Esporta ciascun tipo di evento su un foglio separato

Crea un foglio di lavoro per ogni tipo di attività:

Foglio 1: Ordine effettuato

Case IDTimestampAttivitàClienteValore ordine
10012025-01-15 18:30:00Ordine effettuatoJohn Smith45.99
10022025-01-15 18:35:00Ordine effettuatoJane Doe28.50

Foglio 2: Pagamento ricevuto

Case IDTimestampAttivitàClienteValore ordineMetodo di pagamento
10012025-01-15 18:30:15Pagamento ricevutoJohn Smith45.99Carta di credito
10022025-01-15 18:35:20Pagamento ricevutoJane Doe28.50PayPal

Passo 2: Uniforma le colonne

Assicurati che tutti i fogli abbiano le stesse colonne nello stesso ordine. Aggiungi colonne vuote dove serve:

Foglio 1: Ordine effettuato (aggiornato)

Case IDTimestampAttivitàClienteValore ordineDriverMetodo di pagamento
10012025-01-15 18:30:00Ordine effettuatoJohn Smith45.99

Passo 3: Unisci tutti i fogli

Crea un nuovo foglio “Event Log”. Copia e incolla tutte le righe da ciascun foglio di attività in questo foglio unificato, una dopo l’altra.

Passo 4: Ordina per Case ID, poi per Timestamp

Seleziona tutti i tuoi dati e ordina per:

  1. Case ID (crescente)
  2. Timestamp (crescente)

In questo modo gli eventi risultano in ordine cronologico all’interno di ogni caso, e puoi seguire facilmente il percorso di ciascun ordine.

Passo 5: Esporta in CSV

Salva il foglio unificato come file CSV. È un formato compatibile con praticamente tutti gli strumenti di process mining.

Consigli per Excel:

  • Usa VLOOKUP/XLOOKUP (CERCA.VERT/CERCA.X) per recuperare gli attributi di caso (es. nome cliente) dal foglio degli ordini
  • Usa un formato data/ora coerente (YYYY-MM-DD HH:MM:SS è l’ideale)
  • Rimuovi eventuali eventi duplicati prima di esportare

Metodo 2: creare un event log con SQL

Per dataset più grandi o estrazioni periodiche, SQL è più efficiente e ripetibile. La tecnica chiave è usare UNION ALL per unire più query in un unico set di risultati.

Capire UNION ALL

UNION ALL impila i risultati di più istruzioni SELECT una sopra l’altra. Ogni SELECT diventa un blocco di righe nel risultato finale. Tutte le SELECT devono avere lo stesso numero di colonne con tipi di dato compatibili.

Esempio SQL completo

Qui sotto trovi una query SQL che genera un event log per Pizza Palace:

-- Event Log Extraction for Pizza Palace
-- This query combines multiple event types into a single event log
-- Each SELECT block represents one activity type

-- Event 1: Order Placed
-- Source: orders table
-- This captures when customers submit their orders
SELECT 
    o.id AS case_id,                          -- The order ID is our case identifier
    o.created_at AS timestamp,                -- When the order was placed
    'Order Placed' AS activity,               -- The activity name (hardcoded)
    o.customer_name AS customer,              -- Case attribute: who ordered
    o.total_amount AS order_value,            -- Case attribute: order value
    NULL AS driver,                           -- Not applicable for this event
    NULL AS payment_method                    -- Not applicable for this event
FROM orders o
WHERE o.created_at >= '2025-01-01'            -- Filter to your desired date range

UNION ALL

-- Event 2: Payment Received
-- Source: payments table
-- This captures successful payment processing
SELECT 
    p.order_id AS case_id,
    p.payment_time AS timestamp,
    'Payment Received' AS activity,
    o.customer_name AS customer,              -- Join to get case attributes
    o.total_amount AS order_value,
    NULL AS driver,
    p.payment_method AS payment_method        -- Event-specific attribute
FROM payments p
JOIN orders o ON p.order_id = o.id            -- Join to get order details
WHERE p.payment_time >= '2025-01-01'
  AND p.status = 'successful'                 -- Only include successful payments

UNION ALL

-- Event 3: Order Sent to Kitchen
-- Source: kitchen_queue table
-- This captures when the kitchen starts working on the order
SELECT 
    k.order_id AS case_id,
    k.queue_entry_time AS timestamp,
    'Order Sent to Kitchen' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.queue_entry_time >= '2025-01-01'

UNION ALL

-- Event 4: Order Ready
-- Source: kitchen_queue table (different timestamp field)
-- This is an inferred event based on when the kitchen marked it complete
SELECT 
    k.order_id AS case_id,
    k.completed_time AS timestamp,            -- Different timestamp than entry
    'Order Ready' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.completed_time >= '2025-01-01'
  AND k.completed_time IS NOT NULL            -- Only include completed orders

UNION ALL

-- Event 5: Assigned to Driver
-- Source: delivery_assignments table
-- This captures when a driver is assigned to deliver the order
SELECT 
    d.order_id AS case_id,
    d.assigned_at AS timestamp,
    'Assigned to Driver' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,                  -- Event-specific attribute
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.assigned_at >= '2025-01-01'

UNION ALL

-- Event 6: Delivery Completed
-- Source: delivery_assignments table (different timestamp field)
-- This captures when the order was delivered to the customer
SELECT 
    d.order_id AS case_id,
    d.delivered_at AS timestamp,
    'Delivery Completed' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.delivered_at >= '2025-01-01'
  AND d.delivered_at IS NOT NULL              -- Only include completed deliveries

-- Final ordering: by case, then by time
-- This makes the event log easy to read and follow
ORDER BY case_id, timestamp;

Come estendere questa query

Per aggiungere altri eventi al tuo log:

  1. Copia uno dei blocchi SELECT come modello
  2. Cambia il nome della tabella con la tabella sorgente
  3. Aggiorna il campo timestamp con la colonna corretta
  4. Modifica il nome dell’attività per descrivere l’evento
  5. Adatta gli attributi secondo necessità
  6. Aggiungi le condizioni WHERE appropriate per filtrare i dati

Ad esempio, per aggiungere un evento “Delivery Attempted”:

UNION ALL

-- Event 7: Delivery Attempted
-- Add this to track failed delivery attempts
SELECT 
    d.order_id AS case_id,
    d.attempt_time AS timestamp,
    'Delivery Attempted' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_attempts d
JOIN orders o ON d.order_id = o.id
WHERE d.attempt_time >= '2025-01-01'

Best practice per creare un event log

1. Parti dal semplice, aggiungi complessità più avanti

Inizia con le tre colonne obbligatorie e poche attività chiave. Una volta creato e caricato con successo un event log di base in uno strumento di Process Mining, potrai tornare ad arricchirlo con ulteriori eventi e attributi.

2. Valida i tuoi dati

Prima di iniziare l’analisi, controlla l’event log e verifica i problemi più comuni:

  • Timestamp mancanti - Eventi senza timestamp compromettono il process mining
  • Eventi duplicati - Lo stesso evento registrato due volte altera i risultati
  • Eventi fuori sequenza - Un “Order Ready” prima di “Order Placed” segnala problemi di qualità dei dati
  • Eventi orfani - Eventi con case ID che non compaiono in altre attività

3. Documenta la tua estrazione

Annota sempre:

  • Quali tabelle hai usato
  • Quali filtri hai applicato
  • Quando hai eseguito l’estrazione
  • Quali ipotesi hai fatto

Questa documentazione torna utilissima quando dovrai aggiornare o risolvere problemi al tuo event log.

4. Usa una nomenclatura coerente

Mantieni i nomi delle attività coerenti tra un’estrazione e l’altra:

  • Meglio usare sempre “Order Placed” invece di alternare “Order Created” e “New Order”
  • Definisci una convenzione di naming e seguila

5. Gestisci i fusi orari

Se i dati provengono da più sistemi o regioni, assicurati che tutti i timestamp siano nello stesso fuso orario. UTC è spesso la scelta più sicura per mantenere la coerenza.

Sfide comuni e come risolverle

Sfida: lo stesso evento da più fonti

A volte lo stesso evento viene tracciato in più tabelle. Ad esempio, sia il sistema ordini sia l’ERP possono registrare quando un ordine viene spedito.

Soluzione: Scegli una fonte come “single source of truth” e usa solo quella. Documenta la tua scelta.

Illustrazione delle sfide più comuni nella creazione di event log per il Process Mining

Sfida: eventi senza timestamp

Alcuni eventi potrebbero non avere un proprio timestamp. Per esempio, “Order Approved” potrebbe essere solo un flag booleano.

Soluzione: Cerca timestamp collegati. Magari esiste un campo “approved_at”, oppure puoi usare il timestamp “modified_at” del momento in cui il flag “approved” è cambiato.

Sfida: volume di eventi molto elevato

Se hai diversi milioni di eventi, le query possono diventare lente o andare in errore durante l’estrazione.

Soluzione:

  • Aggiungi filtri per data per limitare il periodo di estrazione
  • Estrai in batch (un mese alla volta) e unisci i file in seguito
  • Valuta l’uso di strumenti ETL dedicati per estrazioni su larga scala

E adesso? Carica il tuo event log in uno strumento di Process Mining

Una volta creato l’event log come file CSV o export dal database, sei pronto a caricarlo in uno strumento di Process Mining. La procedura, in genere, è questa:

  1. Fai l’upload del file o collega lo strumento ai dati estratti.
  2. Mappa le colonne (Case ID, Timestamp, Attività)
  3. Configura gli attributi aggiuntivi
  4. Genera la mappa di processo

Gli strumenti moderni di Process Mining come ProcessMind rendono il tutto semplice: fai l’upload dell’event log e lo strumento visualizza automaticamente il processo, mettendo in luce colli di bottiglia, varianti e opportunità di miglioramento.

Conclusione

Creare un event log per il Process Mining non richiede strumenti specializzati né competenze tecniche avanzate. In sostanza, stai organizzando i tuoi dati in una tabella con tre colonne essenziali: Case ID, Timestamp e Attività.

Che tu usi Excel per dataset più piccoli o SQL per estrazioni più grandi e complesse, i principi restano gli stessi:

  1. Identifica gli eventi che vuoi tracciare
  2. Trova il timestamp per ogni tipo di evento
  3. Unisci tutto in un’unica tabella
  4. Aggiungi attributi per arricchire l’analisi

La parte più difficile non è l’estrazione tecnica: è conoscere il processo abbastanza bene da capire quali eventi contano. Parti da quelli evidenti (ordine effettuato, ordine completato) e aggiungi dettagli man mano che scopri insight con il tuo strumento di Process Mining.

Vuoi approfondire? Esplora le nostre pagine sul miglioramento continuo dei processi dove trovi dettagli su attività e requisiti dati per processi come Purchase to Pay, Order to Cash e Accounts Payable. Troverai anche modelli di dati per sistemi diffusi come SAP, Oracle e Microsoft Dynamics: un ottimo punto di partenza per creare il tuo event log.

Inizia oggi

Non aspettare l’event log perfetto. Parti da ciò che hai, impara dalle mappe di processo che crei e itera. Anche un event log semplice, con attività di base, può svelare insight sorprendenti su come funzionano davvero i tuoi processi.

Articoli correlati del blog

Ricevi consigli degli esperti su process mining e ottimizzazione del workflow direttamente nella tua inbox
Come analizzare il tuo processo: guida pratica agli insight

Come analizzare il tuo processo: guida pratica agli insight

Trasforma le dashboard di Process Mining in insight operativi. Un approccio passo per passo per capire i dati, esplorare gli schemi e trovare vere opportunità d…

Perché evitiamo i connettori pronti all'uso (e cosa facciamo al loro posto)

Perché evitiamo i connettori pronti all'uso (e cosa facciamo al loro posto)

Promettono avvio rapido nel Process Mining, ma i connettori pronti all'uso creano complessità, ritardi e lock‑in. Meglio i data template.

Guida Strategica al Miglioramento dei Processi Data-Driven

Guida Strategica al Miglioramento dei Processi Data-Driven

Guida completa su come usare i dati per ottimizzare i processi e trasformare il business.

Alternative a Celonis Process Mining: perché ProcessMind è la scelta smart

Alternative a Celonis Process Mining: perché ProcessMind è la scelta smart

Celonis o ProcessMind? Confronto 2025: scopri quale process mining software si adatta meglio alla tua azienda.

Sfida te stesso: raggiungi miglioramenti nei processi in meno di 30 giorni!

Accesso immediato, senza carta di credito e senza attese. Scopri come mapping, mining e simulation lavorano insieme per decisioni più smart e veloci.

Esplora ogni funzione, trova insight preziosi e semplifica le tue operations dal primo giorno.

Prova gratis Process Intelligence ora e vedi miglioramenti reali in meno di 30 giorni!