Краткое руководство. Создание задания Stream Analytics с использованием инструментов Azure Stream Analytics для Visual Studio Code

В этом кратком руководстве показано, как создать, запустить и отправить задание Azure Stream Analytics (ASA) с помощью расширения средств ASA для Visual Studio Code на локальном компьютере. Вы узнаете, как создать задание ASA, которое считывает данные потоковой передачи в режиме реального времени из Центр Интернета вещей и фильтрует события с температурой выше 27°. Выходные результаты отправляются в файл в хранилище BLOB-объектов. Входные данные, используемые в этом кратком руководстве, создаются онлайн-симулятором Raspberry Pi.

Примечание

Visual Studio Code средства не поддерживают рабочие места в регионах Восточный Китай, Северный Китай, Центральная Германия и Северный Восток Германии.

Предварительные требования

Установка расширения "Инструменты Azure Stream Analytics"

  1. Откройте Visual Studio Code (VS Code).

  2. В области Расширения в области слева найдите stream analytics и выберите Установить в расширении Средств Azure Stream Analytics .

    Снимок экрана: страница

  3. После установки щелкните значок Azure на панели действий и войдите в Azure.

    Снимок экрана: как выполнить вход в Azure.

  4. После входа вы увидите подписки в своей учетной записи Azure.

Примечание

Расширение средств ASA будет автоматически выполнять вход при каждом открытии VS Code. Если для вашей учетной записи настроена двухфакторная проверка подлинности, мы рекомендуем выполнять ее с использованием телефона, а не PIN-кода. Чтобы выйти из учетной записи Azure, нажмите Ctrl + Shift + P и введите Azure: Sign Out.

Подготовка входных данных

Прежде чем определить задание Stream Analytics следует подготовить входные данные. Данные датчиков в реальном времени принимаются в Центр Интернета вещей, который позже будет настроен как входные данные задания. Чтобы подготовить входные данные, необходимые для задания, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Выберите Создать ресурс > Internet of Things > Центр Интернета вещей.

    Снимок экрана: страница создания ресурса для Центра Интернета вещей.

  3. На странице Центр Интернета вещей введите следующие сведения:

    • Подписка, выберите подписку Azure.
    • Выберите существующую группу ресурсов или создайте новую группу ресурсов.
    • Имя Центра Интернета вещей. Введите имя центра Интернета вещей.
    • Регион, выберите ближайший к вам регион.

    Снимок экрана: страница Центра Интернета вещей для создания.

  4. Перейдите на страницу Управление , в разделе Цены и масштабируемая категория выберите F1: бесплатный уровень, если он по-прежнему доступен в вашей подписке. Дополнительные сведения см. на странице с ценами на Центр Интернета вещей Azure.

    Снимок экрана: страница управления Центр Интернета вещей.

  5. Выберите Review + create (Просмотреть и создать). Просмотрите сведения о центре Интернета вещей и щелкните Создать. Развертывание Центра Интернета вещей может занять несколько минут.

  6. После создания Центра Интернета вещей выберите Перейти к ресурсу, чтобы перейти на страницу Центр Интернета вещей. '

  7. На странице Центр Интернета вещей выберите Устройства в меню слева, а затем — + Добавить устройство.

    Снимок экрана: кнопка

  8. Введите идентификатор устройства и нажмите кнопку Сохранить.

    Снимок экрана: страница

  9. После создания устройство отобразится в списке устройств Интернета вещей. Нажмите кнопку Обновить на странице, если оно не отображается.

    Снимок экрана: выбор устройства на странице

  10. Выберите устройство из списка. Скопируйте основную строку подключения и сохраните ее в блокноте для последующего использования.

    Снимок экрана: основная строка подключения для созданного вами устройства.

Запуск IoT-симулятора

  1. Откройте Симулятор Raspberry Pi Azure IoT Online в новой вкладке браузера.

  2. Замените заполнитель в строке 15 реальной строкой подключения к устройству центра Интернета вещей, которую вы сохранили.

  3. Выберите Запуск. В выходных данных должны присутствовать показания датчика и сообщения, отправляемые в центр Интернета вещей.

    Снимок экрана: онлайн-симулятор Raspberry Pi для Интернета вещей Azure с выходными данными.

Создание хранилища BLOB-объектов

  1. В верхнем левом углу окна портала Azure щелкните Создать ресурс>Хранилище>Учетная запись хранения.

    Снимок экрана: меню создания учетной записи хранения.

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

    Снимок экрана: страница создания учетной записи хранения.

  3. На странице Учетная запись хранения выберите Контейнеры в меню слева, а затем выберите + Контейнер на панели команд.

    Снимок экрана: страница контейнеров.

  4. На странице Создание контейнера укажите имя контейнера, оставьте для параметра Уровень общедоступного доступа значение Закрытый (отсутствие анонимного доступа) и нажмите ОК.

    Снимок экрана: страница создания контейнера BLOB-объектов.

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

  1. В Visual Studio Code нажмите клавиши CTRL+SHIFT+P и введите ASA: Создать проект.

    Снимок экрана: выбор

  2. Введите имя проекта, например myASAproj, и выберите папку для этого проекта.

    Снимок экрана: ввод имени проекта ASA.

  3. Проект ASA добавляется в рабочую область. Он состоит из трех папок: "Входные данные", "Выходные данные" и "Функции". Также он включает скрипт запроса (*.asaql) , файл JobConfig.json и файл конфигурации asaproj.json.

    Снимок экрана: файлы проектов Stream Analytics в Visual Studio Code.

    Файл asaproj.json содержит входные, выходные данные и параметры конфигурации задания для отправки задания Stream Analytics в Azure.

    Примечание

    При добавлении входных и выходных данных с помощью палитры команд все соответствующие пути автоматически добавляются в файл asaproj.json. Если вы добавляете входные или выходные данные непосредственно на диск или удаляете их оттуда, используйте для этого файл asaproj.json. Вы можете поместить все входные и выходные данные в одно расположение, а затем создать ссылки на них в разных заданиях, указав пути в каждом файле asaproj.json.

Определение запроса преобразования

  1. Откройте файл myASAproj.asaql и добавьте следующий запрос:

    SELECT *
    INTO Output
    FROM Input
    WHERE Temperature > 27
    

    Снимок экрана: запрос преобразования.

Настройка входных данных для задания

  1. Щелкните правой кнопкой мыши папку Inputs в проекте Stream Analytics. Теперь выберите ASA: добавить входные данные в контекстном меню.

    Снимок экрана: меню

    Или нажмите клавиши CTRL+SHIFT+P , чтобы открыть палитру команд и ввести ASA: Добавить входные данные.

  2. Выберите в качестве типа входных данных Центр Интернета вещей.

    Снимок экрана: выбор центра Интернета вещей в палитре команд Visual Studio Code.

  3. Выберите скрипт ASA *.asaql и подписки Azure в раскрывающемся меню и нажмите клавишу ВВОД.

  4. В папке Inputs вы увидите, что создан файл IoTHub1.json . Замените параметры следующими предлагаемыми значениями и оставьте значения по умолчанию для полей, не упомянутых здесь.

    Параметр Рекомендуемое значение Описание
    Имя Ввод Это входное имя используется для инструкции FROM в запросе.
    IotHubNamespace spiothub Имя центра Интернета вещей. При выборе из подписки имена Центра Интернета вещей обнаруживаются автоматически.
    SharedAccessPolicyName iothubowner

    Снимок экрана: конфигурация Центр Интернета вещей в VS Code.

  5. Выберите Предварительный просмотр данных , чтобы проверить, успешно ли настроены входные данные для задания. Он получит пример Центр Интернета вещей и отобразится в окне предварительного просмотра.

    Снимок экрана: предварительный просмотр входных данных в центре Интернета вещей.

Настройка выходных данных для задания

  1. Нажмите клавиши CTRL+SHIFT+P , чтобы открыть палитру команд, и введите ASA: Добавить выходные данные.

  2. Выберите Data Lake Storage 2-го поколения/хранилище BLOB-объектов в качестве типа приемника.

  3. Выберите скрипт запроса, используя эти выходные данные.

  4. Введите BlobStorage1 в качестве имени выходного файла.

  5. Измените параметры, используя следующие значения. Сохраните значения по умолчанию для всех полей, которые не упомянуты здесь.

    Параметр Рекомендуемое значение Описание
    Имя Выходные данные Это имя выходных данных используется для инструкции INTO в запросе.
    Учетная запись хранения spstorageaccount0901 Выберите или введите имя учетной записи хранения. Имена учетных записей обнаруживаются автоматически, если они создаются в той же подписке.
    Контейнер spcontainer Выберите существующий контейнер, созданный в вашей учетной записи хранения.

Снимок экрана: конфигурация выходных данных для задания Stream Analytics.

Компиляция скрипта и отправка в Azure

При компиляции скрипта проверяется синтаксис и создаются шаблоны Azure Resource Manager для автоматического развертывания.

  1. Щелкните скрипт правой кнопкой мыши и выберите ASA: Compile Script (ADL: компилировать сценарий).

    Снимок экрана: сборник вариантов скриптов из обозревателя Stream Analytics в VS Code.

  2. После компиляции в проекте появится папка Deploy с двумя шаблонами azure Resource Manager. Эти два файла используются для автоматического развертывания.

    Снимок экрана: созданные шаблоны развертывания в папке проекта.

  3. Выберите Отправить в Azure в редакторе запросов.

    Снимок экрана: кнопка

    Затем следуйте инструкциям, чтобы завершить процесс: Выберите подписку > Выберите задание > Создать задание > Введите имя > задания Выберите группу ресурсов и регион.

  4. Выберите Опубликовать в Azure и завершите. Подождите, пока откроется новая вкладка Представление задания в облаке с состоянием задания.

    Снимок экрана: кнопка

Запуск задания Stream Analytics и просмотр выходных данных

  1. На вкладке Представление задания в облаке выберите Запустить , чтобы запустить задание в облаке. Этот процесс может занять несколько минут.

    Снимок экрана: кнопка запуска задания на странице

  2. Если задание запускается успешно, состояние задания изменяется на Выполняется. Вы можете увидеть логическую схему, показывающую, как выполняется задание ASA.

    Снимок экрана: состояние выполнения задания в VS Code.

  3. Чтобы просмотреть выходные результаты, можно открыть хранилище BLOB-объектов в расширении Visual Studio Code или в портал Azure.

    Снимок экрана: выходной файл в контейнере BLOB-объектов.

    Скачайте и откройте файл, чтобы просмотреть выходные данные.

    {"messageId":11,"deviceId":"Raspberry Pi Web Client","temperature":28.165519323167562,"humidity":76.875393581654379,"EventProcessedUtcTime":"2022-09-01T22:53:58.1015921Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:52:57.6250000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:52:57.6290000Z"}}
    {"messageId":14,"deviceId":"Raspberry Pi Web Client","temperature":29.014941877871451,"humidity":64.93477299527828,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:03.6100000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:03.6140000Z"}}
    {"messageId":17,"deviceId":"Raspberry Pi Web Client","temperature":28.032846241745975,"humidity":66.146114343897338,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:19.5960000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:19.5830000Z"}}
    {"messageId":18,"deviceId":"Raspberry Pi Web Client","temperature":30.176185593576143,"humidity":72.697359909427419,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:21.6120000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:21.6140000Z"}}
    {"messageId":20,"deviceId":"Raspberry Pi Web Client","temperature":27.851894248213021,"humidity":71.610229530268214,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:25.6270000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:25.6140000Z"}}
    {"messageId":21,"deviceId":"Raspberry Pi Web Client","temperature":27.718624694772238,"humidity":66.540445035685153,"EventProcessedUtcTime":"2022-09-01T22:53:58.2421545Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:53:48.0820000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:53:48.0830000Z"}}
    {"messageId":22,"deviceId":"Raspberry Pi Web Client","temperature":27.7849054424326,"humidity":74.300662748167085,"EventProcessedUtcTime":"2022-09-01T22:54:09.3393532Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:09.2390000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:09.2400000Z"}}
    {"messageId":28,"deviceId":"Raspberry Pi Web Client","temperature":30.839892925680324,"humidity":76.237611741451786,"EventProcessedUtcTime":"2022-09-01T22:54:47.8053253Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:47.6180000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:47.6150000Z"}}
    {"messageId":29,"deviceId":"Raspberry Pi Web Client","temperature":30.561040300759053,"humidity":78.3845172058103,"EventProcessedUtcTime":"2022-09-01T22:54:49.8070489Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:54:49.6030000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:54:49.5990000Z"}}
    {"messageId":31,"deviceId":"Raspberry Pi Web Client","temperature":28.163585438418679,"humidity":60.0511571297096,"EventProcessedUtcTime":"2022-09-01T22:55:25.1528729Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:55:24.9050000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:55:24.9120000Z"}}
    {"messageId":32,"deviceId":"Raspberry Pi Web Client","temperature":31.00503387156985,"humidity":78.68821066044552,"EventProcessedUtcTime":"2022-09-01T22:55:43.2652127Z","PartitionId":3,"EventEnqueuedUtcTime":"2022-09-01T22:55:43.0480000Z","IoTHub":{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"MyASAIoTDevice","ConnectionDeviceGenerationId":"637976642928634103","EnqueuedTime":"2022-09-01T22:55:43.0520000Z"}}
    

Очистка ресурсов

Ставшие ненужными группу ресурсов, задание Stream Analytics и все связанные ресурсы можно удалить. При удалении задания будет прекращена тарификация за единицы потоковой передачи, потребляемые заданием. Если вы планируете использовать это задание в будущем, вы можете остановить и перезапустить его позже. Если вы не собираетесь использовать это задание дальше, удалите все ресурсы, созданные в ходе работы с этим руководством, сделав следующее:

  1. В меню слева на портале Azure выберите Группы ресурсов, а затем щелкните имя созданного ресурса.

  2. На странице группы ресурсов щелкните Удалить. В следующем окне введите имя удаляемого ресурса и щелкните Удалить.

Дальнейшие действия

Дополнительные сведения о расширении средств ASA для Visual Studio Code см. в следующих статьях: