Contesto

Per un cliente del settore media, l’obiettivo era alimentare la reportistica con dati Salesforce sempre coerenti e allineati, unendo esigenze molto diverse: report near-real-time aggiornati ogni 10–15 minuti e consolidamenti periodici affidabili.

Sorgenti e orchestrazione

L’orchestrazione è stata realizzata con Azure Data Factory, che gestiva l’estrazione da Salesforce di diverse tabelle e il recupero di file CSV ed Excel. Le estrazioni da Salesforce usavano una logica delta, movimentando pochi dati a ogni esecuzione e garantendo così una frequenza di aggiornamento costante e tempi ridotti.

Architettura a livelli (medallion)

I dati sono stati organizzati in un’architettura bronze / silver / gold su Azure Synapse Analytics, con costruzione del layer semantico. Il dato elaborato confluiva in SQL Server, che fungeva da punto di esposizione degli oggetti per il consumo analitico.

Tre flussi complementari sulle stesse tabelle

Le medesime tabelle erano aggiornate da tre flussi coordinati:

  • Near-real-time — catena Event Hubs → Azure Stream Analytics → Azure Functions, alimentata dal CDC (Change Data Capture) di Salesforce, che scriveva direttamente su SQL Server. Aggiornamento ogni 10–15 minuti per i report più time-sensitive.
  • Delta frequente (ogni 30 minuti) — estrazione delta diretta da Salesforce per le tabelle di supporto, anagrafiche e di relazione.
  • Giornaliero (18:30) — consolidamento dell’intera giornata con logica delta, per chiudere e allineare il dato.

Esposizione e consumo

I dati consolidati erano esposti tramite viste e table-valued function e alimentavano:

  • report Power BI;
  • due report nativi in Salesforce;
  • un’estrazione verso una tabella Oracle con dati consolidati a valle di varie logiche.

Disegno architetturale

Batch · giornaliero (18:30) + delta ogni 30 min

  1. Sorgenti

    • SalesforceCRM / dati sorgente
    • File CSV / Excel
  2. Ingestion

    • Azure Data FactoryEstrazione delta
  3. Medallion

    • Azure Synapse
      • Bronze
      • Silver
      • Gold
  4. Convergenza

    • SQL Server3 flussi: NRT · delta 30' · giornaliero
  5. Consumo

    • Power BIReportistica
    • Report nativiSalesforce
    • OracleDati consolidati

Near-real-time · 10–15 min

  1. Sorgente

    • Salesforce CDCChange Data Capture
  2. Eventi

    • Event Hubs
  3. Streaming

    • Stream Analytics
  4. Elaborazione

    • Azure Functions
  5. Convergenza

    • SQL ServerStesso serving layer del batch
Flusso batch: Salesforce e file CSV estratti da Azure Data Factory (giornaliero alle 18:30 e delta ogni 30 minuti) verso Azure Synapse con livelli bronze, silver e gold, poi SQL Server. Flusso near-real-time: CDC Salesforce tramite Event Hubs, Stream Analytics e Azure Functions verso lo stesso SQL Server. Da SQL Server i dati alimentano Power BI, i report nativi Salesforce e Oracle.Apri lo schema come immagine ↗

Il mio ruolo

Ho seguito in autonomia sviluppo, implementazione e correzioni, oltre all’applicazione delle logiche di trasformazione e alle ottimizzazioni dei flussi.