Funzioni definite dall'utente in Analisi di flusso di Azure

Il linguaggio di query simile a SQL in Analisi di flusso di Azure semplifica l'implementazione della logica di analisi in tempo reale sui dati di streaming. Analisi di flusso offre maggiore flessibilità tramite funzioni personalizzate richiamate nella query. L'esempio di codice seguente è una funzione definita dall'utente chiamata sampleFunction che accetta un parametro, ovvero ogni record di input ricevuto dal processo, e il risultato viene scritto nell'output come sampleResult.

SELECT 
    UDF.sampleFunction(InputStream) AS sampleResult 
INTO 
    output 
FROM 
    InputStream 

Tipi di funzione

Analisi di flusso di Azure supporta i quattro tipi di funzione seguenti:

  • Funzioni javaScript definite dall'utente
  • Aggregazioni javaScript definite dall'utente
  • Funzioni definite dall'utente C# (con Visual Studio)
  • Azure Machine Learning (Apprendimento Automatico di Azure)

È possibile usare queste funzioni per scenari come l'assegnazione dei punteggi in tempo reale usando modelli di Machine Learning, manipolazioni di stringhe, calcoli matematici complessi, codifica e decodifica dei dati.

Importante

Le funzioni definite dall'utente in C# per Azure Stream Analytics verranno ritirate il 30 settembre 2024. Dopo tale data, non sarà possibile usare la funzionalità.

Limitazioni

Le funzioni definite dall'utente sono senza stato e il valore restituito può essere solo un valore scalare. Non è possibile chiamare endpoint REST esterni da queste funzioni definite dall'utente, perché probabilmente influirà sulle prestazioni del processo.

Azure Stream Analytics non mantiene un record di tutte le invocazioni delle funzioni e dei risultati restituiti. Per garantire la ripetibilità, ad esempio la ripetizione dell'esecuzione del processo dal timestamp precedente produce di nuovo gli stessi risultati, non usare funzioni come Date.GetData() o Math.random(), perché queste funzioni non restituiscono lo stesso risultato per ogni chiamata.

Log delle risorse

Tutti gli errori di runtime vengono considerati irreversibili e vengono visualizzati tramite log attività e risorse. È consigliabile che la funzione gestisca tutte le eccezioni e tutti gli errori e restituisca un risultato valido alla query. Ciò impedirà al processo di passare a uno stato di errore.

Gestione delle eccezioni

Qualsiasi eccezione durante l'elaborazione dei dati è considerata un errore irreversibile quando si usano dati in Analisi di flusso di Azure. Le funzioni definite dall'utente hanno un potenziale più elevato per generare eccezioni e causare l'arresto dell'elaborazione. Per evitare questo problema, usare un blocco try-catch in JavaScript o C# per intercettare le eccezioni durante l'esecuzione del codice. Le eccezioni rilevate possono essere registrate e gestite senza causare un errore di sistema. Si consiglia di eseguire sempre il wrapping del codice personalizzato in un blocco try-catch per evitare di generare eccezioni impreviste al motore di elaborazione.

Passaggi successivi