Vai al contenuto

Dati, AI e piattaformaBI, AI e ML per l'azienda

Il calcolo che costa: CPU per progetto e flusso

Ogni notte un flusso ricalcola i margini e nessuno sa quanto gli costa. Muvia misura la CPU di ogni progetto, flusso e passo, mostra quale calcolo pesa di più e permette di riscriverlo e di confrontare prima e dopo sulle stesse esecuzioni.

Scenario illustrativo: descrive un caso tipo, non il progetto di un cliente.

Un calcolo lento non fa rumore. Consuma e basta.

Un flusso notturno che ricalcola i margini funziona: i numeri al mattino ci sono. Nessuno si accorge che scorre le righe una per una e usa cento volte la CPU che servirebbe, finché i flussi diventano dieci e la notte non basta più.

Per decidere cosa ottimizzare serve sapere quanto consuma ogni progetto, ogni flusso e ogni passo, e poter dimostrare che la versione riscritta dà gli stessi risultati.

Per chi
Responsabile della piattaforma dati, data engineer e chi scrive le funzioni; IT e direzione che decidono dove investire.
Le righe d'ordine dal gestionale su SQL Server, il listino in Excel e i clienti da Salesforce entrano in un flusso notturno di Muvia che calcola i margini con una funzione Python; ne escono la tabella dei margini, la pagina Utilizzo con la CPU, un cruscotto prima e dopo e un notebook con le decisioni.

In Muvia, passo per passo

Schermate vere del prodotto, registrate su un progetto con dati di esempio.

1 di 5

Il video · Ogni notte un flusso ricalcola i margini e nessuno sa quanto gli costa. Muvia misura la CPU di ogni progetto, flusso e passo, mostra quale calcolo pesa di più e permette di riscriverlo e di confrontare prima e dopo sulle stesse esecuzioni.

Cosa ottieni

Si sa dove va la CPU
Progetto, flusso e passo: il consumo si legge dall'alto verso il basso, senza strumenti a parte.
Si ottimizza ciò che pesa
Il calcolo più pesante salta all'occhio, e lo sforzo va dove serve invece che dove è comodo.
Il prima e il dopo si dimostrano
Le esecuzioni delle due versioni stanno nello stesso cruscotto, con le stesse righe in uscita.
La decisione resta scritta
Il notebook conserva perché il calcolo costava e cosa si è deciso, accanto ai numeri.

Per il team tecnico

Come si costruisce in Muvia

  1. 1

    Leggi l'utilizzo

    Nelle impostazioni dell'azienda, la pagina Utilizzo mostra la CPU del mese per progetto; da un progetto scendi al flusso e da lì ai singoli passi.

  2. 2

    Trova il calcolo più pesante

    Nel flusso dei margini notturni, alle 2:30, quasi tutta la CPU va nella funzione Python. Le esecuzioni dicono durata e versione di ogni passaggio.

  3. 3

    Riscrivi la funzione

    La nuova versione unisce e raggruppa invece di scorrere riga per riga; Athena può scriverne una prima bozza. Un'esecuzione di prova non scrive nulla, e il flusso usa la nuova versione dalla notte dopo.

  4. 4

    Confronta prima e dopo

    Un cruscotto legge il registro delle esecuzioni: secondi di CPU per esecuzione con la prima e la seconda versione, e le stesse righe in uscita.

  5. 5

    Scrivi cosa decidete

    Un notebook spiega perché costava, cosa è cambiato e quali altri flussi guardare, e resta nel progetto per chi verrà dopo.

Funzione Python

import pandas as pd

def transform(inputs, params, ctx):
    righe = inputs["righe"]
    listino = inputs["listino"][["articolo", "costo_unitario"]].drop_duplicates("articolo")
    df = righe.merge(listino, on="articolo", how="left")
    df["ricavo"] = df["prezzo"] * (1 - df["sconto_pct"] / 100) * df["quantita"]
    df["costo"] = df["costo_unitario"].fillna(0) * df["quantita"]
    df["giorno"] = pd.to_datetime(df["giorno"])
    out = (df.groupby(["giorno", "area", "categoria"], as_index=False)
             .agg(righe=("ricavo", "size"), ricavo=("ricavo", "sum"),
                  costo=("costo", "sum")))
    out["margine"] = out["ricavo"] - out["costo"]
    ricavo = out["ricavo"].where(out["ricavo"] != 0)
    out["margine_pct"] = (out["margine"] / ricavo * 100).round(2)
    ctx.logger.info("margini: %d righe d'ordine, %d gruppi", len(df), len(out))
    return {"rows": out}
La seconda versione: una sola unione e un raggruppamento al posto dei cicli riga per riga. Stesse righe in uscita, una frazione della CPU.
I dati che servono
  • Righe d'ordine con prezzo, sconto e quantità dal gestionale su SQL Server
  • Listino con il costo di ogni articolo, da un file Excel
  • Clienti e aree da Salesforce
  • Il consumo di CPU di ogni esecuzione, misurato da Muvia
Le parti di Muvia usate

Portaci una domanda a cui oggi non sai rispondere.

Partiamo da una domanda vera della tua azienda e ti mostriamo il percorso dalla fonte al cruscotto, con i tuoi sistemi e non con quelli di una demo.