Szybki start: tworzenie zadania usługi Stream Analytics przy użyciu programu Visual Studio Code
W tym przewodniku Szybki start utworzysz, uruchomisz i prześlesz zadanie usługi Azure Stream Analytics (ASA) przy użyciu rozszerzenia ASA Tools dla programu Visual Studio Code na komputerze lokalnym. Dowiesz się, jak utworzyć zadanie usługi ASA, które odczytuje dane przesyłane strumieniowo w czasie rzeczywistym z usługi IoT Hub i filtruje zdarzenia o temperaturze większej niż 27°. Wyniki wyjściowe są wysyłane do pliku w magazynie obiektów blob. Dane wejściowe używane w tym przewodniku Szybki start są generowany przez symulator online Raspberry Pi.
Uwaga
Narzędzia programu Visual Studio Code nie obsługują zadań w regionach Chiny Wschodnie, Chiny Północne, Niemcy Środkowe i Niemcy Północne.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Program Visual Studio Code
Instalowanie rozszerzenia narzędzi usługi Azure Stream Analytics
Otwórz program Visual Studio Code (VS Code).
W okienku po lewej stronie wyszukaj pozycję Stream Analytics i wybierz pozycję Zainstaluj w rozszerzeniu Narzędzi usługi Azure Stream Analytics.
Po zainstalowaniu wybierz ikonę platformy Azure na pasku działań i zaloguj się na platformie Azure.
Po zalogowaniu możesz zobaczyć subskrypcje na koncie platformy Azure.
Uwaga
Rozszerzenie ASA Tools automatycznie loguje się za każdym razem, gdy otworzysz program VS Code. Jeśli twoje konto ma uwierzytelnianie dwuskładnikowe, zalecamy użycie uwierzytelniania za pomocą telefonu zamiast używania numeru PIN. Aby wylogować się z konta platformy Azure, naciśnij Ctrl + Shift + P
i wprowadź .Azure: Sign Out
Uruchamianie symulatora IoT
Otwórz symulator Raspberry Pi Azure IoT Online Simulator.
Zamień symbol zastępczy w wierszu 15 na parametry połączenia urządzenia usługi Azure IoT Hub, które zostały zapisane w poprzedniej sekcji.
Wybierz Uruchom. Dane wyjściowe powinny pokazywać dane z czujników i komunikaty, które są wysyłane do usługi IoT Hub.
Ważne
Wybierz pozycję Resetuj po kilku minutach, aby zresetować parametry połączenia.
Tworzenie magazynu obiektów blob
W lewym górnym rogu witryny Azure Portal wybierz pozycję Utwórz konto> magazynu magazynu>zasobów.
W okienku Utwórz konto magazynu wprowadź nazwę konta magazynu, lokalizację i grupę zasobów. Wybierz tę samą lokalizację i grupę zasobów co utworzone centrum IoT. Następnie wybierz pozycję Przejrzyj i utwórz , aby utworzyć konto magazynu.
Na stronie Konto magazynu wybierz pozycję Kontenery w menu po lewej stronie, a następnie wybierz pozycję + Kontener na pasku poleceń.
Na stronie Nowy kontener podaj nazwę kontenera, pozostaw poziom dostępu publicznego jako Prywatny (bez dostępu anonimowego) i wybierz przycisk OK.
Tworzenie projektu usługi Stream Analytics
W programie Visual Studio Code naciśnij Ctrl+Shift+P i wprowadź ciąg ASA: Create New Project (Utwórz nowy projekt).
Wprowadź nazwę projektu, taką jak myASAproj, i wybierz folder dla projektu.
Projekt ASA jest dodawany do obszaru roboczego. Składa się z trzech folderów: Dane wejściowe, Dane wyjściowe i Funkcje. Zawiera również skrypt zapytania (*.asaql), plik JobConfig.json i plik konfiguracji asaproj.json.
Plik asaproj.json zawiera ustawienia konfiguracji danych wejściowych, wyjściowych i zadań do przesyłania zadania usługi Stream Analytics na platformę Azure.
Uwaga
Podczas dodawania danych wejściowych i wyjściowych z palety poleceń odpowiednie ścieżki są dodawane do asaproj.json automatycznie. Jeśli bezpośrednio dodasz lub usuniesz dane wejściowe lub wyjściowe na dysku, musisz ręcznie dodać je lub usunąć z asaproj.json. Możesz umieścić dane wejściowe i wyjściowe w jednym miejscu, a następnie odwołać się do nich w różnych zadaniach, określając ścieżki w każdym pliku asaproj.json .
Definiowanie zapytania przekształcenia
Otwórz plik myASAproj.asaql i dodaj następujące zapytanie:
SELECT * INTO Output FROM Input WHERE Temperature > 27
Konfigurowanie danych wejściowych zadania
Kliknij prawym przyciskiem myszy folder Inputs w projekcie usługi Stream Analytics. Następnie wybierz pozycję ASA: Dodaj dane wejściowe z menu kontekstowego.
Możesz też nacisnąć Ctrl+Shift+P , aby otworzyć paletę poleceń i wprowadzić ciąg ASA: Dodaj dane wejściowe.
Wybierz usługę IoT Hub dla typu danych wejściowych.
Wybierz pozycję Wybierz z subskrypcji platformy Azure z menu rozwijanego, a następnie naciśnij ENTER.
Wprowadź dane wejściowe dla nazwy, a następnie naciśnij ENTER.
W obszarze Folder Inputs (Dane wejściowe) zostanie utworzony plik IoTHub1.json .
W pliku JSON upewnij się, że w polu Input (Dane wejściowe ) określono wartość Name (Nazwa).
W edytorze JSON dla Input.json wybierz pozycję Wybierz z subskrypcji, a następnie wybierz subskrypcję platformy Azure z centrum IoT.
W edytorze JSON wybierz pozycję Wybierz centrum IoT Hub, a następnie wybierz utworzone centrum IoT.
Domyślnie
SharedAccessPolicyName
parametr powinien być ustawiony naiothubowner
wartość . Jeśli nie, wybierz link Wybierz nazwę zasad dostępu współdzielonego, a następnie wybierz pozycję iothubowner z listy rozwijanej.Wartość
SharedAccessPolicyKey
powinna być ustawiana automatycznie.Wybierz pozycję Podgląd danych , aby sprawdzić, czy dane wejściowe zostały pomyślnie skonfigurowane dla zadania. Spowoduje to pobranie próbki usługi IoT Hub i wyświetlenie jej w oknie podglądu.
Konfigurowanie danych wyjściowych zadania
- Kliknij prawym przyciskiem myszy pozycję Dane wyjściowe w eksploratorze i wybierz pozycję ASA: Dodaj dane wyjściowe.
- Wybierz pozycję Data Lake Storage Gen2/Blob Storage dla typu ujścia z listy rozwijanej.
- Wybierz pozycję Wybierz z subskrypcji platformy Azure
- Wprowadź wartość Output (Dane wyjściowe ) jako nazwę aliasu i naciśnij ENTER. Ta nazwa danych wyjściowych jest używana dla instrukcji INTO w zapytaniu.
- W edytorze JSON dla Output.json wybierz pozycję Wybierz z subskrypcji, a następnie wybierz subskrypcję platformy Azure, która ma konto usługi Azure Storage
- Jeśli musisz zmienić wypełnione automatycznie konto magazynu, wybierz pozycję Wybierz konto magazynu, a następnie wybierz konto usługi Azure Storage. Nazwy kont magazynu są wykrywane automatycznie, jeśli zostały utworzone w tej samej subskrypcji.
- Jeśli musisz zmienić nazwę kontenera, wybierz pozycję Wybierz kontener i wybierz utworzony kontener obiektów blob.
Kompilowanie skryptu i przesyłanie do platformy Azure
Kompilacja skryptu sprawdza składnię i generuje szablony usługi Azure Resource Manager na potrzeby automatycznego wdrażania.
Kliknij prawym przyciskiem myszy plik skryptu w oknie eksploratora, wskaż polecenie ASA: Skompiluj skrypt, a następnie wybierz pozycję ASA: szablon usługi ARM w wersji 2 (zalecane).
Po kompilacji zobaczysz folder Deploy w projekcie z dwoma szablonami usługi Azure Resource Manager. Te dwa pliki są używane do automatycznego wdrażania.
Wybierz pozycję Prześlij na platformę Azure w edytorze zapytań.
W oknie Prześlij wykonaj następujące kroki:
Wybierz swoją subskrypcję platformy Azure.
Wybierz grupę zasobów platformy Azure.
Wybierz region, w którym chcesz utworzyć zadanie usługi Stream Analytics.
Następnie wybierz pozycję Prześlij.
Wybierz pozycję Publikuj na platformie Azure i ukończ. Poczekaj na otwarcie nowej karty Widok zadania w chmurze z wyświetlonym stanem zadania.
Uruchamianie zadania usługi Stream Analytics i sprawdzanie danych wyjściowych
Na karcie Widok zadania w chmurze wybierz pozycję Uruchom, aby uruchomić zadanie w chmurze.
W oknie Uruchamianie zadania przesyłania strumieniowego wybierz przycisk OK. Ukończenie tego procesu może potrwać kilka minut.
Jeśli zadanie zostanie pomyślnie uruchomione, stan zadania zostanie zmieniony na Uruchomiono. Możesz zobaczyć diagram logiczny przedstawiający sposób działania zadania usługi ASA.
Aby wyświetlić wyniki wyjściowe, możesz otworzyć magazyn obiektów blob w rozszerzeniu programu Visual Studio Code lub w witrynie Azure Portal.
Pobierz i otwórz plik, aby wyświetlić dane wyjściowe.
{"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"}}
Czyszczenie zasobów
Gdy grupa zasobów, zadanie usługi Stream Analytics i wszystkie powiązane zasoby nie będą już potrzebne, usuń grupę zasobów. Usunięcie zadania pozwala uniknąć opłat za jednostki przesyłania strumieniowego zużywane przez zadanie. Jeśli planujesz użyć zadania w przyszłości, możesz je zatrzymać i uruchomić ponownie później, gdy będzie potrzebne. Jeśli nie zamierzasz nadal korzystać z tego zadania, usuń wszystkie zasoby utworzone w tym przewodniku Szybki start, wykonując następujące czynności:
W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Grupy zasobów, a następnie wybierz nazwę utworzonego zasobu.
Na stronie grupy zasobów wybierz pozycję Usuń. Wprowadź nazwę zasobu do usunięcia w polu tekstowym, a następnie wybierz pozycję Usuń.
Następne kroki
Aby dowiedzieć się więcej na temat rozszerzenia narzędzi ASA dla programu Visual Studio Code, przejdź do następujących artykułów: