Condividi tramite


Esercitazione: Scrivere una funzione C# definita dall'utente per il processo di Analisi di flusso di Azure (anteprima)

Importante

Le funzioni definite dall'utente .NET Standard per Analisi di flusso di Azure verranno ritirate il 30 settembre 2024. Dopo tale data, non sarà possibile usare la funzionalità. Passare alle funzioni javaScript definite dall'utente per Analisi di flusso di Azure.

Le funzioni personalizzate C# create in Visual Studio consentono di estendere il linguaggio di query di Azure Stream Analytics con funzioni definite dall'utente. È possibile riutilizzare il codice esistente (incluse le DLL) e usare logica matematica o complessa con C#. Esistono tre modi per implementare le UDF (funzioni definite dall'utente):

  • I file CodeBehind in un progetto di Stream Analytics
  • Funzioni definite dall'utente da un progetto C# locale
  • Funzioni definite dall'utente da un pacchetto esistente da un account di archiviazione.

Questa esercitazione usa il metodo CodeBehind per implementare una funzione C# di base. La funzionalità UDF per i Stream Analytics è attualmente in anteprima e non deve essere usata nei carichi di lavoro di produzione.

In questa esercitazione si apprenderà come:

  • Creare una funzione C# definita dall'utente usando CodeBehind.
  • Testare il progetto di Analisi di flusso in locale.
  • Pubblica il lavoro in Azure.

Prerequisiti

Prima di iniziare, assicurarsi di aver completato i prerequisiti seguenti:

Creare un contenitore nell'account di archiviazione di Azure

Il contenitore creato viene usato per archiviare il pacchetto C# compilato. Se si crea un processo Edge, questo account di archiviazione viene usato anche per distribuire il pacchetto nel dispositivo IoT Edge. Usare un contenitore dedicato per ogni processo di Analisi di flusso. Il riutilizzo dello stesso contenitore per più processi Edge di Analisi di flusso non è supportato. Se si dispone già di un account di archiviazione con contenitori esistenti, è possibile usarli. In caso contrario, è necessario creare un nuovo contenitore.

Creare un progetto di Analisi di flusso in Visual Studio

  1. Avvia Visual Studio.

  2. Selezionare File > Nuovo > Progetto.

  3. Nell'elenco dei modelli a sinistra, selezionare Stream Analytics, quindi selezionare Applicazione Edge di Azure Stream Analytics oppure Applicazione di Azure Stream Analytics.

  4. Immettere il nome del progetto, il percorso e il nome della soluzione e selezionare OK.

    Creare un progetto Edge di Analisi di flusso di Azure in Visual Studio

Configurare il percorso del pacchetto assembly

  1. Aprire Visual Studio e passare a Esplora soluzioni.

  2. Fare doppio clic sul file di configurazione del processo, JobConfig.json.

  3. Espandi la sezione User-Defined Code Configuration e compila la configurazione con i seguenti valori suggeriti:

    impostazione Valore suggerito
    Risorsa delle impostazioni globali di archiviazione Scegliere la fonte di dati dall'account corrente
    Sottoscrizione delle impostazioni di archiviazione globale < sottoscrizione >
    Global Storage Settings Storage Account (Account di archiviazione impostazioni di archiviazione globali) < il tuo account di archiviazione >
    Risorsa delle impostazioni di archiviazione del codice personalizzato Scegliere la fonte di dati dall'account corrente
    Custom Code Storage Settings Storage Account (Account di archiviazione impostazioni di archiviazione codice personalizzato) < il tuo account di archiviazione >
    Contenitore delle impostazioni di archiviazione per il codice personalizzato < il tuo contenitore di archiviazione >

Scrivere una UDF C# con CodeBehind

Un file CodeBehind è un file C# associato a un singolo script di query ASA. Gli strumenti di Visual Studio comprimono automaticamente il file CodeBehind e lo caricano nell'account di archiviazione di Azure al momento dell'invio. Tutte le classi devono essere definite come pubbliche e tutti gli oggetti devono essere definiti come pubblici statici.

  1. In Esplora Soluzioni, espandi Script.asql per trovare il file Script.asaql.cs CodeBehind.

  2. Sostituire il codice con l'esempio seguente:

        using System; 
        using System.Collections.Generic; 
        using System.IO; 
        using System.Linq; 
        using System.Text; 
    
        namespace ASAEdgeUDFDemo 
        { 
            public class Class1 
            { 
                // Public static function 
                public static Int64 SquareFunction(Int64 a) 
                { 
                    return a * a; 
                } 
            } 
        } 
    

Implementare la funzione definita dall'utente

  1. In Esplora soluzioni aprire il file Script.asaql .

  2. Sostituire la query esistente con la query seguente:

        SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint))
        INTO Output
        FROM Input 
    

Test locali

  1. Scaricare il file di dati di esempio del simulatore di temperatura.

  2. In Esplora soluzioni espandere Input, fare clic con il pulsante destro del mouse suInput.jsone scegliere Aggiungi input locale.

    Aggiungere input locale al processo di Stream Analytics in Visual Studio

  3. Specificare il percorso del file di input locale per i dati di esempio scaricati e Salva.

    Configurazione dell'input locale per il processo di Analisi di flusso in Visual Studio

  4. Fare clic su Esegui localmente nell'editor di script. Dopo che l'esecuzione locale ha salvato correttamente i risultati dell'output, premere un tasto qualsiasi per visualizzare i risultati in formato tabella.

    Eseguire il processo di Analisi di flusso di Azure in locale con Visual Studio

  5. È anche possibile selezionare Apri cartella risultati per visualizzare i file non elaborati in formato JSON e CSV.

    Visualizzare i risultati del processo di Analisi di flusso di Azure locale con Visual Studio

Eseguire il debug di una funzione definita dall'utente

È possibile eseguire il debug della funzione C# definita dall'utente in locale esattamente come si esegue il debug di codice C# standard.

  1. Aggiungere punti di interruzione nella funzione C#.

    Aggiungere punti di interruzione alla funzione definita dall'utente di Analisi di flusso in Visual Studio

  2. Premere F5 per avviare il debug. Il programma si arresta nei punti di interruzione come previsto.

    Visualizzare i risultati del debug delle funzioni definite dall'utente di Analisi di flusso

Pubblica l'attività in Azure

Dopo aver testato la query in locale, selezionare Invia ad Azure nell'editor di script per pubblicare il processo in Azure.

Invia il lavoro di Stream Analytics Edge ad Azure da Visual Studio

Implementare sui dispositivi IoT Edge

Se si sceglie di creare un processo Edge di Analisi di flusso, può ora essere distribuito come modulo IoT Edge. Seguire la guida introduttiva di IoT Edge per creare un hub IoT, registrare un dispositivo IoT Edge e installare e avviare il runtime IoT Edge nel dispositivo. Seguire poi l'esercitazione per distribuire il processo per distribuire il processo di Analisi di flusso come modulo IoT Edge.

Passaggi successivi

In questa esercitazione è stata creata una semplice funzione C# definita dall'utente usando CodeBehind, è stato pubblicato il processo in Azure e il processo è stato distribuito nel dispositivo Azure o IoT Edge.

Per altre informazioni sui diversi modi per usare le funzioni definite dall'utente C# per i processi di Analisi di flusso, continuare con questo articolo: