共用方式為


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

在本快速入門中,您會在本機計算機上使用適用於Visual Studio Code 的 ASA Tools 擴充功能,建立、執行及提交 Azure 串流分析 (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 帳戶底下看到訂用帳戶。

注意

當您每次開啟 VS Code 時,ASA 工具延伸模組都會自動將您登入。 如果您的帳戶使用雙因素驗證,建議您使用電話驗證而非使用 PIN 碼。 若要登出您的 Azure 帳戶,按 Ctrl + Shift + P 並輸入 Azure: Sign Out

執行 IoT 模擬器

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

  2. 以您在上一節中儲存的 Azure IoT 中樞裝置連接字串取代行 15 中的預留位置。

  3. 選取執行。 下列輸出會顯示傳送至 IoT 中樞的感應器資料和訊息。

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

    重要

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

建立 Blob 儲存體

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

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

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

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

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

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

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

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

建立串流分析專案

  1. 在 Visual Studio Code 中,按 Ctrl+Shift+P,並輸入 ASA:建立新專案

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

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

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

  3. 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. 在 [輸入] 資料夾底下,您會看到已建立 IoTHub1.json 檔案。

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

  7. 在適用於 Input.jsonJSON 編輯器中,選擇 [從您的訂用帳戶選取],然後選取具有 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. 輸入 [輸出 ] 以取得別名的名稱,然後按 ENTER。 此輸出名稱會用於查詢中的 INTO 陳述式。
  5. 在Output.jsonJSON 編輯器中,選擇 [從您的訂用帳戶選取],然後選取具有 Azure 儲存體 帳戶的 Azure 訂用帳戶
  6. 如果您需要變更自動填入的記憶體帳戶,請選擇 [選取記憶體帳戶],然後選取您的 Azure 儲存體 帳戶。 系統會自動偵測建立在相同訂用帳戶中的儲存體帳戶名稱。
  7. 如果您需要變更容器名稱,請選擇 [ 選取容器],然後選取您所建立的 Blob 容器。

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

編譯指令碼並提交至 Azure

指令碼編譯會檢查語法和產生選自動部署的 Azure Resource Manager 範本。

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

    顯示 VS Code 中串流分析總管中腳本選項編譯的螢幕快照。

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

    此螢幕快照顯示專案資料夾中產生的部署範本。

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

    顯示 [提交作業] 按鈕以將串流分析作業提交至 Azure 的螢幕快照。

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

    1. 選取您的 Azure 訂用帳戶

    2. 選取 Azure 資源群組

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

    4. 然後,選取 [提交]

      顯示 [提交選項] 的螢幕快照。

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

    顯示 VS Code 中 [發佈至 Azure] 按鈕的螢幕快照。

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

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

    顯示 [雲端檢視] 頁面中 [開始作業] 按鈕的螢幕快照。

  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 工具延伸模組,請繼續下列文章: