Руководство. Написание определяемой пользователем функции 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.
Необходимые компоненты
Прежде чем приступить к работе, выполните следующие предварительные требования:
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- Установите средства Stream Analytics для Visual Studio и рабочие нагрузки разработки Azure или службы хранения и обработки данных.
- Ознакомьтесь с существующим руководством по разработке Stream Analytics Edge, если вы создаете задание IoT Edge.
Создание контейнера в учетной записи хранения
Создаваемый контейнер используется для хранения скомпилированного пакета C#. При создании задания Edge эта учетная запись хранения также используется для развертывания пакета на устройстве IoT Edge. Для каждого задания Stream Analytics используйте отдельный контейнер. Повторное использование одного контейнера для нескольких заданий Stream Analytics Edge не поддерживается. Если у вас уже есть учетная запись хранения с существующими контейнерами, вы можете их использовать. В противном случае необходимо создать новый контейнер.
Создание проекта Stream Analytics в Visual Studio
Запустите среду Visual Studio.
Выберите Файл > Новый > проект.
Из списка шаблонов слева выберите Stream Analytics и щелкните Приложение Stream Analytics для пограничных устройств или Приложение Azure Stream Analytics.
Введите в проектеИмя, Расположение и Имя решения, а затем нажмите кнопку ОК.
Настройка пути к пакету сборки
Откройте Visual Studio и перейдите к обозревателю решений.
Дважды щелкните файл конфигурации задания
JobConfig.json
.Разверните раздел Настройка пользовательского кода и укажите следующие предложенные значения в конфигурации:
Параметр Рекомендуемое значение Ресурс параметров глобального хранилища Выберите источник данных из текущей учетной записи Подписка на параметры глобального хранилища < ваша подписка > Учетная запись хранения параметров глобального хранилища < ваша учетная запись хранения > Ресурс параметров хранилища настраиваемого кода Выберите источник данных из текущей учетной записи Учетная запись хранения параметров хранилища настраиваемого кода < ваша учетная запись хранения > Контейнер параметров хранилища настраиваемого кода < ваш контейнер хранилища >
Написание пользовательской функции C# с помощью кода программной части
Файл кода программной части — это файл C#, связанный с одним сценарием запросов в ASA. Средства Visual Studio автоматически запаковывает файл CodeBehind и отправляет его в учетную запись хранения Azure после отправки. Все классы должны быть определены как public, а объекты — как static public.
В обозревателе решений разверните Script.asql и найдите файл кода программной части Script.asaql.cs.
Замените код на приведенный ниже:
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; } } }
Реализация пользовательской функции
В обозревателе решений откройте файл Script.asaql.
Замените существующий запрос следующим запросом:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
Локальное тестирование
В обозревателе решений разверните Входные данные, щелкните правой кнопкой мыши Input.json и выберите команду Добавить локальный ввод.
Укажите путь к локальному файлу входных данных с загруженным вами примером и нажмите Сохранить.
В редакторе запросов нажмите Запустить локально. После того как локальное выполнение успешно сохранит выходные данные, нажмите любую клавишу, чтобы отобразить результаты в виде таблицы.
Вы также можете выбрать команду Открыть папку результатов, чтобы увидеть необработанные файлы в формате JSON и CSV.
Отладка пользовательской функции
Отладку пользовательских функций C# можно выполнять локально, точно так же, как отладку стандартного кода C#.
Добавьте точки останова в функцию C#.
Нажмите клавишу F5, чтобы запустить отладку. Программа останавливается в точках останова, как ожидалось.
Публикация задания в Azure
Протестировав свой запрос локально, выберите команду Отправить в Azure в редакторе сценариев, чтобы опубликовать задание в Azure.
Развертывание на устройствах 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 см. в этой статье: