Eventstream nel workload Real-Time Intelligence
Eventstream è il componente di Microsoft Fabric Real-Time Intelligence che permette di ingerire, trasformare e instradare flussi di eventi senza scrivere codice, tramite un canvas visuale drag-and-drop. Lavora sul modello event-driven: gli eventi entrano da una o più sorgenti, attraversano un grafo di operatori di elaborazione e vengono scritti su una o più destinazioni. È il tassello che collega la telemetria in tempo reale al resto di Fabric (Eventhouse, Lakehouse, Data Activator).
Sorgenti supportate
Un eventstream può leggere da più tipi di source, tra cui:
- Azure Event Hubs — la sorgente classica per streaming ad alto throughput; richiede consumer group e connection/authentication.
- Azure IoT Hub — telemetria da dispositivi, con gestione della device identity.
- Sample data — dataset simulati (es. yellow taxi, stock market) utili per prototipare e per gli scenari d’esame.
- Custom endpoint (custom app) — un endpoint gestito che espone protocolli Event Hub / Kafka / AMQP, così un’applicazione può pubblicare eventi direttamente nell’eventstream.
Sono inoltre disponibili connettori CDC (Change Data Capture) per sorgenti come Azure SQL DB, PostgreSQL, Cosmos DB, per trasformare le modifiche a livello di riga in uno stream.
Trasformazioni no-code in streaming
Nella modalità Edit l’eventstream espone operatori che si applicano continuamente al flusso:
- Filter — scarta o mantiene eventi in base a condizioni.
- Aggregate — calcoli su tumbling/hopping/sliding window (SUM, AVG, COUNT su finestre temporali).
- Join — correla due stream su una chiave entro una finestra temporale.
- Expand — “esplode” un array annidato in più righe.
- Operatori di supporto: Manage fields, Union, Group by, Derived column.
Il punto architetturale ASSOCIATE è capire che queste trasformazioni sono stateful e temporali: una aggregazione richiede sempre una window definition, perché su uno stream infinito non esiste un “totale” senza una finestra.
Destinazioni
- Eventhouse / KQL database — destinazione primaria per l’analisi real-time; i dati diventano immediatamente interrogabili in KQL. Supporta ingestion diretta (bypassa gli operatori, latenza minima) oppure post-trasformazione.
- Lakehouse — scrive in formato Delta per l’analisi batch e l’integrazione con notebook Spark / semantic model.
- Data Activator (Activator) — instrada gli eventi verso regole di alerting e automazione (trigger su soglie, azioni verso Teams, email, Power Automate).
- Ulteriori destinazioni: Derived stream, Custom endpoint, Stream riutilizzabile a valle.
Scegliere il motore streaming
DP-700 verifica spesso quale engine usare per uno scenario:
- Eventstream — quando serve ingestione e routing no-code, con trasformazioni semplici e integrazione nativa con Eventhouse/Activator. È la scelta di default per pipeline real-time senza sviluppo.
- KQL (update policy / materialized view nell’Eventhouse) — quando la trasformazione va fatta dopo l’ingestion, sui dati già dentro Eventhouse, con logica analitica ricca (parsing, enrichment, aggregazioni continue lato query engine).
- Spark Structured Streaming (notebook su Lakehouse) — quando serve logica complessa/custom in codice (PySpark/Scala), machine learning inline, join con tabelle Delta di grandi dimensioni o output verso Delta con controllo fine su checkpoint e trigger.
Regola pratica: no-code + routing → Eventstream; analisi KQL sui dati caldi → Eventhouse; codice custom / ML / Delta pesante → Spark.
La trappola della destinazione Lakehouse
Anche se l’eventstream è “streaming”, la destinazione Lakehouse scrive i dati in Delta tramite micro-batch: gli eventi vengono bufferizzati e materializzati in tabelle Delta a intervalli. Questo introduce una latenza dell’ordine dei minuti, non millisecondi. Quindi il Lakehouse è ideale per analisi near-real-time e batch, non per dashboard o alert a latenza minima. Per il vero real-time la destinazione corretta è Eventhouse/KQL (o Data Activator per l’alerting immediato).
Trappole tipiche d’esame
- “Serve latenza sub-secondo e query KQL immediate sulla telemetria” → destinazione Eventhouse/KQL database, non Lakehouse (il Lakehouse micro-batcha in Delta con latenza di minuti).
- “Aggregare eventi ogni 5 minuti senza scrivere codice” → operatore Aggregate con tumbling window dentro Eventstream, non un notebook Spark.
- “Attivare un alert su Teams quando la temperatura supera una soglia” → destinazione Data Activator, non una query pianificata.
- “Join in streaming con logica ML custom e output su tabelle Delta grandi” → Spark Structured Streaming, perché Eventstream no-code non copre logica arbitraria/ML.
- “Un’app deve pubblicare eventi direttamente in Fabric” → source Custom endpoint (app) con protocollo Event Hub/Kafka/AMQP, non un file upload né IoT Hub.