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