快速入門:使用 Visual Studio Code 建立串流分析作業
在本快速入門中,您會在本機計算機上使用適用於Visual Studio Code 的 ASA Tools 擴充功能,建立、執行及提交 Azure 串流分析 (ASA) 作業。 您將了解如何建置 ASA 作業,以讀取來自 IoT 中樞的即時串流資料,並篩選溫度大於 27°的事件。 輸出結果會傳送至 Blob 儲存體中的檔案。 本快速入門中使用的輸入資料是由 Raspberry Pi 線上模擬器產生。
注意
Visual Studio Code 工具不支援中國東部、中國北部、德國中部和德國東北部區域中的作業。
必要條件
- Azure 訂閱。 如果您沒有 Azure 訂閱,請建立免費帳戶。
- Visual Studio Code \(英文\)。
安裝 Azure 串流分析工具擴充功能
開啟 Visual Studio Code (VS Code)。
從左窗格上的 [延伸模組],搜尋串流分析,然後選取 Azure 串流分析工具延伸模組上的 [安裝]。
安裝之後,選取活動列上的 Azure 圖示,然後登入 Azure。
登入之後,您就可以在 Azure 帳戶底下看到訂用帳戶。
注意
當您每次開啟 VS Code 時,ASA 工具延伸模組都會自動將您登入。 如果您的帳戶使用雙因素驗證,建議您使用電話驗證而非使用 PIN 碼。 若要登出您的 Azure 帳戶,按 Ctrl + Shift + P
並輸入 Azure: Sign Out
。
執行 IoT 模擬器
以您在上一節中儲存的 Azure IoT 中樞裝置連接字串取代行 15 中的預留位置。
選取執行。 下列輸出會顯示傳送至 IoT 中樞的感應器資料和訊息。
重要
選取 [在幾分鐘后重設] 以重設 連接字串。
建立 Blob 儲存體
從 Azure 入口網站的左上角,選取 [建立資源]>[儲存體]>[儲存體帳戶]。
在 [建立儲存體帳戶] 窗格中,輸入儲存體帳戶名稱、位置和資源。 選擇與您建立的 IoT 中樞相同的位置和資源群組。 然後,選取 [檢閱] 和 [建立] 以建立儲存體帳戶。
在 [儲存體帳戶] 頁面上,選取左側功能表中的 [容器],然後選取命令列上的 [+ 容器]。
從 [新增容器] 頁面中,提供容器的名稱、將 [公用存取層級] 保留為 [私人 (沒有匿名存取)],然後選取 [確定]。
建立串流分析專案
在 Visual Studio Code 中,按 Ctrl+Shift+P,並輸入 ASA:建立新專案。
輸入您的專案名稱 (例如 myASAproj),然後選取專案的資料夾。
ASA 專案即會新增至您的工作區。 其包含三個資料夾:輸入、輸出和功能。 此外也包含查詢指令碼 (*.asaql)、JobConfig.json 檔案和 asaproj.json 組態檔。
Asaproj.json 檔案包含將串流分析作業提交至 Azure 所需的輸入、輸出和作業組態設定。
注意
當您從命令選擇區新增輸入和輸出時,對應的路徑會自動新增至 asaproj.json。 如果您直接在磁碟上新增或移除輸入或輸出,您必須手動從 asaproj.json 加以新增或移除。 您可以選擇將輸入和輸出放在某個位置,然後在每個 asaproj.json 檔案中指定路徑,以在不同的作業中參考這些輸入和輸出。
定義轉換查詢
設定作業輸入
以滑鼠右鍵按一下您串流分析專案中的輸入資料夾。 然後,從捷徑功能表中選取 [ASA:新增輸入]。
或者,按 Ctrl+Shift+P 以開啟命令選擇區,並輸入 ASA:新增輸入。
選擇 [IoT 中樞] 作為輸入類型。
從下拉功能表中選擇 [從 Azure 訂用帳戶選取],然後按 ENTER 鍵。
輸入 輸入 名稱,然後按 ENTER。
在 [輸入] 資料夾底下,您會看到已建立 IoTHub1.json 檔案。
在 JSON 檔案中,確認 [ 輸入 ] 已指定 [名稱]。
在適用於 Input.json 的 JSON 編輯器中,選擇 [從您的訂用帳戶選取],然後選取具有 IoT 中樞的 Azure 訂用帳戶。
在 JSON 編輯器中,選擇 [選取 IoT 中樞],然後選取您建立的 IoT 中樞。
根據預設,
SharedAccessPolicyName
應該將 設定為iothubowner
。 如果沒有,請選擇 [ 選取共用存取原則名稱 ] 鏈接,然後從下拉式清單中選取 [iothubowner ]。SharedAccessPolicyKey
應該會自動設定值。選取 [預覽資料],以查看是否已為您的作業成功設定輸入資料。 它將擷取 IoT 中樞範例,並在預覽視窗中顯示。
設定作業輸出
- 以滑鼠右鍵按兩下總管中的 [ 輸出 ],然後選取 [ASA:新增輸出]。
- 針對下拉式清單中的接收類型,選擇 Data Lake Storage Gen2/Blob 記憶體 。
- 選擇 [從 Azure 訂用帳戶選取]
- 輸入 [輸出 ] 以取得別名的名稱,然後按 ENTER。 此輸出名稱會用於查詢中的 INTO 陳述式。
- 在Output.json的 JSON 編輯器中,選擇 [從您的訂用帳戶選取],然後選取具有 Azure 儲存體 帳戶的 Azure 訂用帳戶
- 如果您需要變更自動填入的記憶體帳戶,請選擇 [選取記憶體帳戶],然後選取您的 Azure 儲存體 帳戶。 系統會自動偵測建立在相同訂用帳戶中的儲存體帳戶名稱。
- 如果您需要變更容器名稱,請選擇 [ 選取容器],然後選取您所建立的 Blob 容器。
編譯指令碼並提交至 Azure
指令碼編譯會檢查語法和產生選自動部署的 Azure Resource Manager 範本。
以滑鼠右鍵按兩下總管視窗中的腳本檔案,指向 ASA:編譯腳本,然後選取 ASA:ARM 樣本 V2 (建議使用)。
編譯之後,您會在專案底下看到 [部署] 資料夾,其中包含兩個 Azure Resource Manager 範本。 這兩個檔案會用於自動部署。
在查詢編輯器中,選取 [提交至 Azure]。
在 [ 提交 ] 視窗中,遵循下列步驟:
選取您的 Azure 訂用帳戶。
選取 Azure 資源群組。
選取您想要建立串流分析作業的區域。
然後,選取 [提交]。
選取 [發行至 Azure],然後完成。 等候它開啟新的索引標籤 [雲端作業檢視],其中顯示您的作業狀態。
啟動串流分析工作並查看輸出
在 [雲端作業檢視] 索引標籤上,選取 [開始] 以在雲端中執行作業。
在 [ 開始串流作業 ] 視窗中,選取 [ 確定]。 這個程序可能需要幾分鐘的時間。
如果您的作業成功啟動,作業狀態就會變更為 [執行中]。 您可以看到一個邏輯圖表,其中顯示 ASA 作業的執行方式。
若要檢視輸出結果,您可以在 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"}}
清除資源
若不再需要,請刪除資源群組、串流分析作業和所有相關資源。 刪除作業可避免因為作業使用串流單位而產生費用。 如果您計劃在未來使用該作業,您可以將其停止並在之後需要時重新啟動。 如果您將不繼續使用此作業,請使用下列步驟,刪除本快速入門所建立的所有資源:
從 Azure 入口網站的左側功能表中,選取 [資源群組],然後選取您所建立資源的名稱。
在資源群組頁面上,選取 [刪除]。 在下一個視窗中輸入要刪除的資源名稱,然後選取 [刪除]。
下一步
若要深入了解適用於 Visual Studio Code 的 ASA 工具延伸模組,請繼續下列文章: