共用方式為


快速入門:使用 Visual Studio Code 建立串流分析職缺

在這個快速入門中,你將透過在本地機器上使用 Visual Studio Code 的 ASA 工具擴充功能,建立、執行並提交 Azure Stream Analytics (ASA) 工作。 您將了解如何建置 ASA 作業,以讀取來自 IoT 中樞的即時串流資料,並篩選溫度大於 27°的事件。 輸出結果會傳送至 Blob 儲存體中的檔案。 本快速入門中使用的輸入資料是由 Raspberry Pi 線上模擬器產生。

注意

Visual Studio Code 工具不支援中國東部、中國北部、德國中部和德國東北地區的工作。

必要條件

安裝 Azure 串流分析工具擴充功能

  1. 開啟 Visual Studio Code (VS Code)。

  2. 從左窗格上的 [延伸模組],搜尋串流分析,然後選取 Azure 串流分析工具延伸模組上的 [安裝]

    顯示 Visual Studio Code 的 [延伸模組] 頁面的螢幕快照,其中包含安裝串流分析延伸模組的選項。

  3. 安裝之後,選取活動列上的 Azure 圖示,然後登入 Azure。

    顯示如何登入 Azure 的螢幕快照。

  4. 登入之後,您就可以在 Azure 帳戶底下看到訂用帳戶。

注意

ASA 工具擴充功能每次開啟 VS Code 時都會自動登入。 如果你的帳號有雙重驗證,請使用手機認證,而不是用 PIN 碼。 若要登出您的 Azure 帳戶,按 Ctrl + Shift + P 並輸入 Azure: Sign Out

準備輸入資料

在定義串流分析工作前,先準備輸入資料。 解決方案會將即時感測器資料匯入物聯網中心,之後再設定為工作輸入。 若要準備工作所需的輸入資料,請完成下列步驟:

  1. 登入 Azure 入口網站

  2. 選擇 "建立資源"。 在 [建立資源] 頁面上,選取 [物聯網]>[IoT 中樞]

    顯示 [建立資源] 頁面上 IoT 中樞 功能表的螢幕快照。

  3. 在 [IoT 中樞] 頁面上,遵循下列步驟:

    1. 針對 訂用帳戶,選取您的 Azure 訂用帳戶。
    2. 針對 [資源群組],選取現有的資源群組,或建立新的資源群組。
    3. 針對 [IoT 中樞名稱],輸入您 IoT 中樞的名稱。
    4. 針對 [區域],選取與您最接近的區域。
    5. 層級選擇免費,如果您的訂閱仍提供此選項。 如需詳細資訊,請參閱 IoT 中樞定價
    6. 針對 [每日訊息限制],保留預設值。
    7. 在頁面底部選取 下一步: 網路

    截圖顯示 IoT Hub 頁面的建立。

  4. 選擇 檢閱 + 創建。 檢閱您的 IoT 中樞資訊,然後選取 [建立]。 建立 IoT 中樞可能需要數分鐘。 您可以在 [通知] 窗格中監視進度。

  5. 建立資源(物聯網集線)後,選擇 「前往資源 」以進入物聯網集線頁面。

  6. 在 [IoT 中樞] 頁面上,選取左側功能表上的 [裝置],然後選取 [+ 新增裝置]

    顯示 [裝置] 頁面上 [新增裝置] 按鈕的螢幕快照。

  7. 提供裝置識別碼,然後選取 [儲存]

    顯示「建立裝置」頁面的截圖。

  8. 建立裝置後,你會在 物聯網裝置 清單中看到該裝置。 如果您沒有看到 [重新整理] 按鈕,請選取頁面上的 [重新整理] 按鈕。

    顯示裝置清單的螢幕快照。

  9. 從清單中選取您的裝置。

  10. 在裝置頁面上,選取 [主要連接字串] 旁的 [複製] 按鈕,然後將其儲存到記事本以供稍後使用。

    顯示裝置 連接字串 旁 [複製] 按鈕的螢幕快照。

執行 IoT 模擬器

  1. 開啟 Raspberry Pi Azure IoT 線上模擬器

  2. 將第 15 行的佔位符替換成你在前一節儲存的 Azure IoT Hub 裝置連線字串。

  3. 選取執行。 輸出顯示傳送到物聯網集線的感測器資料和訊息。

    顯示 [Raspberry Pi Azure IoT 在線模擬器] 頁面與範例查詢的螢幕快照。

    重要

    選取 [在幾分鐘后重設] 以重設 連接字串。

建立 Blob 儲存體

  1. 從 Azure 入口網站的左上角,選取 [建立資源]>[儲存體]>[儲存體帳戶]

    顯示 [建立記憶體帳戶] 功能表表的螢幕快照。

  2. 建立儲存體帳戶窗格中,輸入儲存體帳戶名稱、位置和資源群組。 選擇與您建立的 IoT 中樞相同的位置和資源群組。 然後,選取 [檢閱] 和 [建立] 以建立儲存體帳戶。

    顯示 [建立記憶體帳戶] 頁面的螢幕快照。

  3. 在 [儲存體帳戶] 頁面上,選取左側功能表中的 [容器],然後選取命令列上的 [+ 容器]

    顯示 [容器] 頁面的螢幕快照。

  4. 從 [新增容器] 頁面中,提供容器的名稱、將 [公用存取層級] 保留為 [私人 (沒有匿名存取)],然後選取 [確定]

    顯示建立 Blob 容器頁面的螢幕快照。

建立串流分析專案

  1. 在 Visual Studio Code 中,選擇 「檢視>指令面板」,並輸入 ASA:建立新專案

    顯示 ASA:在命令選擇區中建立新項目的螢幕快照。

  2. 輸入您的專案名稱 (例如 myASAproj),然後選取專案的資料夾。

    顯示輸入 ASA 專案名稱的螢幕快照。

  3. Visual Studio Code 會在你的工作區新增一個 ASA 專案。 其包含三個資料夾:輸入輸出功能。 此外也包含查詢指令碼 (*.asaql)JobConfig.json 檔案和 asaproj.json 組態檔。

    顯示 Visual Studio Code 中串流分析專案檔的螢幕快照。

    Asaproj.json 檔案包含將串流分析作業提交至 Azure 所需的輸入、輸出和作業組態設定。

    注意

    當你從指令調色盤新增輸入和輸出時,對應的路徑會自動加入 asaproj.json 。 如果您直接在磁碟上新增或移除輸入或輸出,您必須手動從 asaproj.json 加以新增或移除。 你可以把輸入和輸出放在一個地方,然後透過在每個 asaproj.json 檔案中指定路徑,在不同的工作中引用它們。

定義轉換查詢

  1. 開啟 myASAproj.asaql 檔案並新增下列查詢:

    SELECT *
    INTO Output
    FROM Input
    WHERE Temperature > 27
    

    顯示轉換查詢的螢幕快照。

設定作業輸入

  1. 以滑鼠右鍵按一下您串流分析專案中的輸入資料夾。 然後從右鍵選單中選取 [ASA:新增輸入]

    顯示 ASA:在 Visual Studio Code 中新增輸入功能表的螢幕快照。

    或者,按 Ctrl+Shift+P 以開啟命令選擇區,並輸入 ASA:新增輸入

  2. 選擇 [IoT 中樞] 作為輸入類型。

    顯示於 VS Code 命令面板中選取您 IoT 中樞的螢幕截圖。

  3. 從下拉功能表中選擇 [從 Azure 訂用帳戶選取],然後按 ENTER 鍵。

  4. 輸入 輸入 名稱,然後按 ENTER

  5. Inputs 資料夾裡,你會看到一個 Input.json 檔案被建立。

  6. 在 JSON 檔案中,確認 [ 輸入 ] 已指定 [名稱]。

  7. Input.json 的 JSON 編輯器中,選取「從您的訂用帳戶選取」,然後選取具有 IoT 中樞的您的 Azure 訂用帳戶。

    顯示 JSON 編輯器的螢幕快照,其中顯示 [從訂用帳戶選取] 連結。

  8. 在 JSON 編輯器中,選擇 [選取 IoT 中樞],然後選取您建立的 IoT 中樞。

    顯示 JSON 編輯器的螢幕快照,其中已選取 IoT 中樞 連結。

  9. 根據預設, SharedAccessPolicyName 應該將 設定為 iothubowner。 如果沒有,請選擇 [ 選取共用存取原則名稱 ] 鏈接,然後從下拉式清單中選取 [iothubowner ]。

  10. 應該會自動設定SharedAccessPolicyKey值。

  11. 選取 [預覽資料],以查看是否已為您的作業成功設定輸入資料。 它將擷取 IoT 中樞範例,並在預覽視窗中顯示。

    此螢幕快照顯示IoT中樞內輸入資料的預覽。

設定作業輸出

  1. 右鍵點擊資源管理器中的 輸出,然後選擇 ASA:新增輸出
  2. 在下拉式清單中選擇 Data Lake Storage Gen2/Blob 儲存 作為匯出位置類型。
  3. 選擇 從 Azure 訂閱中選擇
  4. 輸入Output作為別名的名稱,然後按 ENTER。 此輸出名稱會用於查詢中的 INTO 陳述式。
  5. Output.json 的 JSON 編輯器中,選擇「從您的訂閱中挑選」,然後選擇包含 Azure 儲存帳戶的 Azure 訂閱。
  6. 如果您需要變更自動填入的記憶體帳戶,請選擇 [選取記憶體帳戶],然後選取您的 Azure 儲存體 帳戶。 系統會自動偵測建立在相同訂用帳戶中的儲存體帳戶名稱。
  7. 如果您需要變更容器名稱,請選擇 [ 選取容器],然後選取您所建立的 Blob 容器。

顯示串流分析作業輸出設定的螢幕快照。

編譯腳本並提交到 Azure

指令碼編譯會檢查語法並產生自動化部署所需的 Azure Resource Manager 範本。

  1. 以滑鼠右鍵按兩下總管視窗中的腳本檔案,指向 ASA:編譯腳本,然後選取 ASA:ARM 樣本 V2 (建議使用)。

    VS Code 中 Stream Analytics 瀏覽器中腳本選項編譯的截圖。

  2. 編譯之後,您會在專案底下看到 [部署] 資料夾,其中包含兩個 Azure Resource Manager 範本。 這兩個檔案會用於自動部署。

    專案資料夾中產生的部署範本截圖。

  3. 在查詢編輯器中,選取 [提交至 Azure]

    提交工作按鈕的截圖,用來提交 Stream Analytics 工作到 Azure。

  4. 在 [ 提交 ] 視窗中,遵循下列步驟:

    1. 選取您的 Azure 訂用帳戶

    2. 選取 Azure 資源群組

    3. 選取您想要建立串流分析作業的區域

    4. 然後,選取 [提交]

      提交選項的截圖。

  5. 選取 [發行至 Azure],然後完成。 等候它開啟新的索引標籤 [雲端作業檢視],其中顯示您的作業狀態。

    VS Code 中發佈到 Azure 按鈕的截圖。

啟動串流分析工作並查看輸出

  1. 在 [雲端作業檢視] 索引標籤上,選取 [開始] 以在雲端中執行作業。

    Cloud View 頁面中開始工作按鈕的截圖。

  2. 在 [ 開始串流作業 ] 視窗中,選取 [ 確定]。 這個程序可能需要幾分鐘的時間。

    開始直播工作視窗的截圖。

  3. 如果你的工作成功開始,工作狀態會變成「執行中」。 你會看到一個邏輯圖,顯示你的 ASA 工作是如何執行的。

    VS Code 中工作執行狀態的截圖。

  4. 要查看輸出結果,請在 Visual Studio Code 擴充功能或 Azure 入口開啟 blob 儲存。

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

清除資源

當你不再需要資源時,刪除資源群組、串流分析工作以及所有相關資源。 刪除工作會停止對該工作所消耗的串流單位計費。 如果你打算未來繼續做這份工作,可以先停下來,之後需要時再重新開始。 如果您將不繼續使用此作業,請使用下列步驟,刪除本快速入門所建立的所有資源:

  1. 從 Azure 入口網站的左側功能表中,選取 [資源群組],然後選取您所建立資源的名稱。

  2. 在資源群組頁面上,選取 [刪除]。 在下一個視窗中輸入要刪除的資源名稱,然後選取 [刪除]

下一步

欲了解更多關於 Visual Studio Code 的 ASA 工具擴充套件,請參閱以下文章: