Tutorial: Escrever uma função definida pelo usuário em C# para o trabalho do Azure Stream Analytics (Visualização)

Importante

As funções definidas pelo usuário do .Net Standard para o Azure Stream Analytics serão desativadas em 30 de setembro de 2024. Após essa data, não será possível utilizar o recurso. Faça a transição para funções JavaScript definidas pelo usuário para o Azure Stream Analytics.

As funções definidas pelo utilizador (UDFs) de C# criadas no Visual Studio permitem-lhe expandir a linguagem de consulta do Azure Stream Analytics com as suas próprias funções. Pode reutilizar o código existente (incluindo DLLs) e utilizar a lógica de matemática ou complexa com o C#. Há três maneiras de implementar UDFs:

  • Arquivos CodeBehind em um projeto do Stream Analytics
  • UDFs de um projeto C# local
  • UDFs de um pacote existente de uma conta de armazenamento.

Este tutorial utiliza o método CodeBehind para implementar uma função de C# básica. O recurso UDF para trabalhos do Stream Analytics está atualmente em visualização e não deve ser usado em cargas de trabalho de produção.

Neste tutorial, irá aprender a:

  • Criar uma função definida pelo utilizador de C# através do CodeBehind.
  • Teste seu trabalho do Stream Analytics localmente.
  • Publique seu trabalho no Azure.

Pré-requisitos

Antes de começar, confirme que concluiu os seguintes pré-requisitos:

Criar um contentor na Conta de Armazenamento do Azure

O contêiner criado é usado para armazenar o pacote C# compilado. Se você criar um trabalho de Borda, essa conta de armazenamento também será usada para implantar o pacote em seu dispositivo IoT Edge. Utilize um contentor dedicado para cada tarefa do Stream Analytics. Não há suporte para a reutilização do mesmo contêiner para vários trabalhos do Stream Analytics Edge. Se já tiver uma conta de armazenamento com contentores existentes, poderá utilizá-los. Se não, você precisa criar um novo contêiner.

Criar um projeto do Stream Analytics no Visual Studio

  1. Inicie o Visual Studio.

  2. Selecione Arquivo > Novo > Projeto.

  3. Na lista de modelos à esquerda, selecione Stream Analytics e, em seguida, selecione Aplicativo de Borda do Azure Stream Analytics ou Aplicativo do Azure Stream Analytics.

  4. Introduza o Nome do projeto, a Localização e o Nome da solução e selecione OK.

    Create an Azure Stream Analytics Edge project in Visual Studio

Configurar o caminho de assemblagem do pacote

  1. Abra o Visual Studio e navegue até ao Explorador de Soluções.

  2. Faça duplo clique no ficheiro de configuração da tarefa, JobConfig.json.

  3. Expanda a secção Configuração do Código Definido Pelo Utilizador e preencha a configuração com os seguintes valores sugeridos:

    Definição Valor Sugerido
    Recurso de configurações globais de armazenamento Escolha a origem de dados na conta atual
    Subscrição de Definições Globais de Armazenamento < a sua subscrição >
    Conta de armazenamento de configurações globais de armazenamento < A sua conta de armazenamento >
    Recurso de configurações de armazenamento de código personalizado Escolha a origem de dados na conta atual
    Conta de armazenamento de configurações de armazenamento de código personalizado < A sua conta de armazenamento >
    Contêiner de configurações de armazenamento de código personalizado < o seu recipiente de armazenamento >

Escrever UDF de C# com o CodeBehind

Um arquivo CodeBehind é um arquivo C# associado a um único script de consulta ASA. As ferramentas do Visual Studio compactam automaticamente o arquivo CodeBehind e o carregam em sua conta de armazenamento do Azure após o envio. Todas as classes têm de ser definidas como públicas e todos os objetos têm de ser definidos como públicos estáticos.

  1. No Explorador de Soluções, expanda Script.asql para localizar o ficheiro CodeBehind Script.asaql.cs.

  2. Substitua o código pelo exemplo seguinte:

        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; 
                } 
            } 
        } 
    

Implementar a UDF

  1. No Explorador de Soluções, abra o ficheiro Script.asaql.

  2. Substitua a consulta existente pela seguinte consulta:

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

Testes locais

  1. Faça o download do arquivo de dados de exemplo do simulador de temperatura.

  2. No Explorador de Soluções, expanda Entradas, clique com o botão direito do rato em Input.json e selecione Adicionar Entrada Local.

    Add local input to Stream Analytics job in Visual Studio

  3. Especifique o caminho do ficheiro de entrada local para os dados de exemplo que transferiu e selecione Guardar.

    Local input configuration for Stream Analytics job in Visual Studio

  4. Clique em Executar Localmente no editor de scripts. Assim que a execução local tenha guardado com êxito os resultados de saída, prima qualquer tecla para ver os resultados no formato de tabela.

    Run Azure Stream Analytics job locally with Visual Studio

  5. Também pode selecionar Abrir Pasta de Resultados para ver os ficheiros sem formato no formato JSON e CSV.

    View results of local Azure Stream Analytics job with Visual Studio

Depurar uma UDF

Pode depurar a UDF de C# localmente da mesma forma que depura o código C# padrão.

  1. Adicione pontos de interrupção à função C#.

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. Prima F5 para iniciar a depuração. O programa para nos seus pontos de interrupção, conforme esperado.

    View Stream Analytics user-defined function debugging results

Publicar a tarefa no Azure

Após ter testado a sua consulta localmente, selecione Submeter para o Azure no editor de scripts para publicar a tarefa no Azure.

Submit your Stream Analytics Edge job to Azure from Visual Studio

Implementar em dispositivos IoT Edge

Se você optar por criar um trabalho do Stream Analytics Edge, ele agora pode ser implantado como um módulo do IoT Edge. Siga o início rápido do IoT Edge para criar um Hub IoT, registar um dispositivo IoT Edge e instalar e iniciar o runtime do IoT Edge no dispositivo. Em seguida, siga o tutorial implementar a tarefa para implementar a sua tarefa do Stream Analytics como um módulo do IoT Edge.

Próximos passos

Neste tutorial, você criou uma função simples C# definida pelo usuário usando o CodeBehind, publicou seu trabalho no Azure e implantou o trabalho no dispositivo Azure ou IoT Edge.

Para saber mais sobre as diferentes maneiras de usar funções definidas pelo usuário em C# para trabalhos do Stream Analytics, continue neste artigo: