Руководство. Написание определяемой пользователем функции C# для задания Azure Stream Analytics (предварительная версия)

Внимание

Определяемые пользователем функции .Net Standard для Azure Stream Analytics будут прекращены 30 сентября 2024 года. По истечении этой даты невозможно использовать эту функцию. Перейдите к определяемым пользователем функциям JavaScript для Azure Stream Analytics.

Пользовательские функции C#, создаваемые в Visual Studio, позволяют расширить язык запросов Azure Stream Analytics за счет собственных функций. Вы можете повторно использовать уже существующий код (включая DLL), а также математическую или комплексную логику с C#. Существует три способа реализации пользовательских функций:

  • Файлы CodeBehind в проекте Stream Analytics
  • Определяемые пользователем функции из локального проекта C#
  • Определяемые пользователем функции из существующего пакета из учетной записи хранения.

В этом руководстве для реализации базовой функции C# используется метод кода программной части. Пользовательские функции для заданий Stream Analytics сейчас находятся на этапе предварительной версии, и их не следует использовать в рабочих нагрузках.

В этом руководстве описано следующее:

  • Создание пользовательской функции C# с помощью кода программной части
  • Тестирование задания Stream Analytics на локальном компьютере.
  • Публикация задания в Azure.

Необходимые компоненты

Прежде чем приступить к работе, выполните следующие предварительные требования:

Создание контейнера в учетной записи хранения

Создаваемый контейнер используется для хранения скомпилированного пакета C#. При создании задания Edge эта учетная запись хранения также используется для развертывания пакета на устройстве IoT Edge. Для каждого задания Stream Analytics используйте отдельный контейнер. Повторное использование одного контейнера для нескольких заданий Stream Analytics Edge не поддерживается. Если у вас уже есть учетная запись хранения с существующими контейнерами, вы можете их использовать. В противном случае необходимо создать новый контейнер.

Создание проекта Stream Analytics в Visual Studio

  1. Запустите среду Visual Studio.

  2. Выберите Файл > Новый > проект.

  3. Из списка шаблонов слева выберите Stream Analytics и щелкните Приложение Stream Analytics для пограничных устройств или Приложение Azure Stream Analytics.

  4. Введите в проектеИмя, Расположение и Имя решения, а затем нажмите кнопку ОК.

    Create an Azure Stream Analytics Edge project in Visual Studio

Настройка пути к пакету сборки

  1. Откройте Visual Studio и перейдите к обозревателю решений.

  2. Дважды щелкните файл конфигурации задания JobConfig.json.

  3. Разверните раздел Настройка пользовательского кода и укажите следующие предложенные значения в конфигурации:

    Параметр Рекомендуемое значение
    Ресурс параметров глобального хранилища Выберите источник данных из текущей учетной записи
    Подписка на параметры глобального хранилища < ваша подписка >
    Учетная запись хранения параметров глобального хранилища < ваша учетная запись хранения >
    Ресурс параметров хранилища настраиваемого кода Выберите источник данных из текущей учетной записи
    Учетная запись хранения параметров хранилища настраиваемого кода < ваша учетная запись хранения >
    Контейнер параметров хранилища настраиваемого кода < ваш контейнер хранилища >

Написание пользовательской функции C# с помощью кода программной части

Файл кода программной части — это файл C#, связанный с одним сценарием запросов в ASA. Средства Visual Studio автоматически запаковывает файл CodeBehind и отправляет его в учетную запись хранения Azure после отправки. Все классы должны быть определены как public, а объекты — как static public.

  1. В обозревателе решений разверните Script.asql и найдите файл кода программной части Script.asaql.cs.

  2. Замените код на приведенный ниже:

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

Реализация пользовательской функции

  1. В обозревателе решений откройте файл Script.asaql.

  2. Замените существующий запрос следующим запросом:

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

Локальное тестирование

  1. Скачайте файл данных с примером симулятора температуры.

  2. В обозревателе решений разверните Входные данные, щелкните правой кнопкой мыши Input.json и выберите команду Добавить локальный ввод.

    Add local input to Stream Analytics job in Visual Studio

  3. Укажите путь к локальному файлу входных данных с загруженным вами примером и нажмите Сохранить.

    Local input configuration for Stream Analytics job in Visual Studio

  4. В редакторе запросов нажмите Запустить локально. После того как локальное выполнение успешно сохранит выходные данные, нажмите любую клавишу, чтобы отобразить результаты в виде таблицы.

    Run Azure Stream Analytics job locally with Visual Studio

  5. Вы также можете выбрать команду Открыть папку результатов, чтобы увидеть необработанные файлы в формате JSON и CSV.

    View results of local Azure Stream Analytics job with Visual Studio

Отладка пользовательской функции

Отладку пользовательских функций C# можно выполнять локально, точно так же, как отладку стандартного кода C#.

  1. Добавьте точки останова в функцию C#.

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

  2. Нажмите клавишу F5, чтобы запустить отладку. Программа останавливается в точках останова, как ожидалось.

    View Stream Analytics user-defined function debugging results

Публикация задания в Azure

Протестировав свой запрос локально, выберите команду Отправить в Azure в редакторе сценариев, чтобы опубликовать задание в Azure.

Submit your Stream Analytics Edge job to Azure from Visual Studio

Развертывание на устройствах IoT Edge

Если вы решили создать задание Stream Analytics Edge, его теперь можно развернуть как модуль IoT Edge. Согласно краткому руководству по IoT Edge создайте центр IoT, зарегистрируйте устройство IoT Edge, а затем установите и запустите среду выполнения IoT Edge на своем устройстве. Далее в соответствии с руководством по развертыванию заданий разверните задание Stream Analytics как модуль IoT Edge.

Следующие шаги

В этом руководстве вы создали простую пользовательскую функцию C#, используя код программной части, опубликовали и развернули задание в Azure или на устройствах IoT Edge.

Дополнительные сведения о различных способах использования пользовательских функций C# для заданий Stream Analytics см. в этой статье: