Migrazione da SAS a Microsoft Fabric ― Guida in otto passi

Indice dei contenuti
Migrazione da SAS a Microsoft Fabric: guida in otto passi
Obiettivo di questa guida
- Decidere che cosa migrare e che cosa lasciare, senza "riscrivere tutto per principio"
- Seguire un metodo in otto passi dalla raccolta del codice al passaggio in produzione
- Conoscere le cinque differenze tra SAS e Spark che cambiano silenziosamente i risultati
- Preparare la documentazione che serve a validazione modelli e audit
- Vedere come Pulse Convert automatizza la conversione (70%–90% di conversione automatica iniziale)
- Contatti: Admin@innovationalofficesolution.com
1. Perché migrare il codice SAS proprio ora
In molte banche e compagnie assicurative italiane SAS è da vent'anni il motore di calcolo del rischio di credito, delle riserve, delle segnalazioni e delle analisi clienti. Il codice è affidabile e più volte verificato. I motivi per cui oggi si pianifica la migrazione sono di natura diversa:
- Competenze: i nuovi data engineer e data scientist arrivano con Python e SQL; la manutenzione delle macro SAS dipende sempre più da poche persone senior.
- Posizione dei dati: se i dati sono già in Azure e in Microsoft 365, copiarli su server SAS solo per analizzarli aggiunge costi, tempi e rischi.
- Elasticità: i picchi di calcolo di fine mese e fine trimestre costringono a dimensionare i server SAS sul massimo carico, lasciandoli inutilizzati il resto del tempo.
- Governance dei dati personali: con il GDPR conviene ridurre il numero di copie dei dati dei clienti e gestire permessi e tracciabilità in un'unica piattaforma.
Una precisazione importante: SAS e Microsoft Fabric non sono solo alternativi, ma possono anche collaborare. SAS ha reso disponibile il proprio workload SAS Decision Builder all'interno di Fabric e offre connettori verso OneLake. In questa guida ci concentriamo sulla migrazione del codice di preparazione e trasformazione dei dati, che è la parte più ampia del patrimonio SAS nella maggior parte delle aziende.
2. Che cosa migrare: la classificazione del codice
| Categoria | Esempi | Indicazione |
|---|---|---|
| Preparazione dei dati | DATA step, PROC SQL, SORT, MERGE | Migrare a PySpark / Spark SQL |
| Riepiloghi e report | PROC MEANS, FREQ, TABULATE, REPORT | Migrare a Spark SQL e Power BI |
| Modelli statistici | PROC LOGISTIC, REG, GENMOD | Valutare modello per modello con la validazione |
| Orchestrazione | %INCLUDE, LIBNAME, script batch | Pipeline Fabric e struttura del Lakehouse |
| Codice non più utilizzato | Programmi non eseguiti da oltre un anno | Dismettere |
3. Il metodo in otto passi
Passo 1 – Raccolta: recuperare tutti i file .sas, i progetti Enterprise Guide, le catene %INCLUDE e le definizioni dei job dallo scheduler.
Passo 2 – Lineage: ricostruire quali programmi leggono e scrivono quali dataset, per capire l'ordine di migrazione.
Passo 3 – Espansione delle macro: risolvere le macro per ottenere il codice realmente eseguito, che è quello da convertire.
Passo 4 – Struttura del Lakehouse: definire Bronze, Silver e Gold in OneLake e mappare le librerie SAS (LIBNAME) su tabelle Delta.
Passo 5 – Conversione: DATA step e PROC in PySpark e Spark SQL, macro in funzioni Python e notebook parametrizzati.
Passo 6 – Migrazione dei dati: convertire i dataset .sas7bdat in tabelle Delta, curando tipi numerici e date.
Passo 7 – Riconciliazione: confrontare automaticamente i risultati di SAS e Fabric su ogni programma.
Passo 8 – Orchestrazione e rilascio: trasformare i job batch in pipeline Data Factory, eseguire almeno una chiusura mensile in parallelo e poi spegnere il job SAS.
4. Le cinque differenze che cambiano i risultati
1. Valori mancanti. In SAS un valore numerico mancante è considerato il più piccolo possibile: la condizione "if x < 0" è vera. In Spark il confronto con NULL restituisce NULL e la riga viene esclusa. Nei modelli di credito, dove le soglie sono ovunque, ogni condizione va verificata.
2. MERGE e JOIN. Il MERGE con BY in SAS non produce un prodotto cartesiano nei casi molti-a-molti; il JOIN SQL sì. Prima di convertire bisogna verificare l'unicità delle chiavi.
3. Ordinamento implicito. L'elaborazione BY in SAS presuppone dati ordinati; FIRST. e LAST. dipendono da quell'ordine. Spark non garantisce alcun ordine: va sempre esplicitato con le funzioni finestra.
4. Date. SAS memorizza le date come numero di giorni dal 1° gennaio 1960: la conversione va fatta con attenzione, soprattutto sui valori limite.
5. Precisione numerica. SAS usa numeri in virgola mobile a 8 byte; per importi e premi in Fabric conviene dichiarare DECIMAL con precisione esplicita, per evitare differenze di arrotondamento.
5. Tabella di corrispondenza SAS – Microsoft Fabric
| SAS | Microsoft Fabric |
|---|---|
| DATA step | Notebook PySpark |
| FIRST. / LAST. / RETAIN / LAG | Funzioni finestra |
| MERGE con BY | join / MERGE su Delta |
| PROC SQL | Spark SQL / T-SQL del Warehouse |
| PROC SORT NODUPKEY | dropDuplicates con ordinamento esplicito |
| PROC MEANS / FREQ / TRANSPOSE | groupBy().agg() / crosstab / pivot |
| PROC FORMAT | Tabelle di mapping Delta |
| Macro (%MACRO, %LET, CALL SYMPUT) | Funzioni Python / notebook parametrizzati |
| Dataset .sas7bdat | Tabelle Delta in OneLake |
| LIBNAME | Lakehouse e schemi |
| Job batch e scheduler | Pipeline Data Factory |
| Output ODS | Report Power BI |
6. Esempio applicativo: Emulus Consulting
Emulus Consulting ha seguito questo metodo per una compagnia assicurativa del ramo danni:
- 1.320 programmi SAS e 290 macro analizzati; il 14% dismesso
- 1.060 programmi di preparazione dati e reportistica migrati in Fabric
- 2.100 condizioni con valori mancanti verificate e riscritte
- Conversione automatica iniziale dell'80%, durata del progetto 24 settimane
- Elaborazione mensile dei dati sinistri ridotta da 11 ore a 1 ora e 25 minuti
- Costo complessivo di server e licenze SAS ridotto del 46%
7. Come Pulse Convert accelera la migrazione
- Parsing del codice SAS: DATA step, PROC e macro vengono trasformati in un albero sintattico, con espansione delle macro
- Conversione automatica: generazione di PySpark e Spark SQL leggibili, con una conversione automatica iniziale del 70%–90%
- Lineage: mappa automatica di programmi, dataset e dipendenze, per pianificare le ondate di migrazione
- PulseQA: confronto di conteggi, chiavi, totali per colonna, valori mancanti e distribuzioni delle variabili principali
- Pacchetto di evidenze: documentazione pronta per la validazione modelli e per l'audit interno
Domande frequenti (FAQ)
Iniziate oggi
- POC gratuito: POC gratuito (Pulse Convert)
- Sito web: innovationalofficesolution.com
- Email: Admin@innovationalofficesolution.com
Porta il codice SAS su Microsoft Fabric e PySpark
Migra i tuoi programmi SAS (DATA step, PROC SQL, macro e job batch) verso notebook PySpark e Lakehouse in OneLake con prova matematica che i risultati non cambiano. Conversione automatica iniziale del 70%–90%.