在本快速入門中,您將使用 Azure CLI 來定義串流分析作業,以篩選溫度讀數大於 27 的即時感測器訊息。 串流分析作業會從IoT中樞讀取資料、轉換數據,並將輸出數據寫入 Blob 記憶體中的容器。 本快速入門中使用的輸入資料是由 Raspberry Pi 線上模擬器產生。
開始之前
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
先決條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 如果您正在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 若要完成驗證程式,請遵循終端機中顯示的步驟。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立資源群組。 所有 Azure 資源都必須部署到資源群組。 資源群組可讓您組織和管理相關的 Azure 資源。
在本快速入門中,請使用下列 az group create 命令,在 eastus 位置建立名為 streamanalyticsrg 的資源群組:
az group create --name streamanalyticsrg --location eastus
準備輸入資料
定義串流分析作業之前,請先準備用於作業輸入的數據。 下列 Azure CLI 命令會準備作業所需的 輸入 數據。
使用 az iot hub create 命令建立 IoT 中樞。 此範例會建立名為 MyASAIoTHub 的 IoT 中樞。 由於 IoT 中樞的名稱必須在全球範圍內唯一,因此如果名稱已被使用,您可能需要更改名稱。 將 SKU 設定為 F1 可使用免費層 (如果適用於您的訂用帳戶)。 否則,請選擇下一個最低層。
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1建立 IoT 中樞後,使用 az iot hub connection-string show 命令來取得 IoT 中樞連接字串。 複製整個連接字串,並加以儲存。 您會在將 IoT 中樞新增為串流分析作業的輸入時使用它。
az iot hub connection-string show --hub-name $iotHubName使用 az iothub device-identity create 命令,將裝置新增至 IoT 中樞。 此範例會建立名為 MyASAIoTDevice 的裝置。
az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"使用 az iot hub device-identity connection-string show 命令取得裝置連接字串。 複製整個連接字串並加以儲存,以便在建立 Raspberry Pi 模擬器時使用。
az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table輸出範例:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
建立 Blob 儲存帳戶
下列 Azure CLI 命令會建立用於作業輸出的 Blob 記憶體帳戶。
使用 az storage account create 命令建立一般用途的記憶體帳戶。 一般用途的儲存體帳戶可以用於所有四個服務:Blob、檔案、資料表和佇列。
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --location eastus \ --sku Standard_ZRS \ --encryption-services blob執行 az storage account keys list 命令,以取得記憶體帳戶的密鑰。
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key這很重要
記下 Azure 記憶體帳戶的存取金鑰。 稍後在本快速入門中,您將使用此金鑰。
使用
state命令建立名為 的容器,以儲存 Blob。 您可以使用記憶體帳戶金鑰來授權作業來建立容器。 如需使用 Azure CLI 授權資料作業的詳細資訊,請參閱 使用 Azure CLI 授權 Blob 或佇列數據的存取權。az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
建立串流分析作業
使用 az stream-analytics job create 命令建立串流分析作業 。
az stream-analytics job create \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg" \
--location "eastus" \
--output-error-policy "Drop" \
--out-of-order-policy "Drop" \
--order-max-delay 5 \
--arrival-max-delay 16 \
--data-locale "en-US"
設定作業的輸入
使用 az stream-analytics input Cmdlet,將輸入新增至您的作業。 此 Cmdlet 會採用 JSON 格式的作業名稱、作業輸入名稱、資源組名和輸入屬性作為參數。 在此範例中,您將建立IoT中樞作為輸入。
這很重要
- 將
IOT HUB ACCESS KEY取代為您所儲存 IOT 中樞連接字串中的共用存取金鑰值。 例如,如果 IOT 中樞連接字串為:HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=,則共用存取金鑰值為xxxxxxxxxxxxxx=。 取代值時,請確定您不會刪除\(雙引號) 的"(逸出) 字元。 - 如果您使用
iotHubNamespace以外的名稱,請更新下列命令中的MyASAIoTHub值。 執行echo $iotHubName以查看IoT中樞的名稱。
az stream-analytics input create \
--properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
--input-name "asaiotinput" \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg"
設定作業的輸出
使用 az stream-analytics output create Cmdlet,將輸出新增至您的作業。 此 Cmdlet 會採用作業名稱、作業輸出名稱、資源組名、JSON 格式的數據源,以及串行化類型作為參數。
這很重要
將STORAGEACCOUNTNAME>替換為您的 Azure 儲存帳戶名稱,並將STORAGEACCESSKEY>替換為儲存帳戶的存取金鑰。 如果您未記下這些值,請執行下列命令以取得這些值: echo $storageAccountName 和 echo $key。 取代值時,請確定您不會刪除 \ (雙引號) 的 " (逸出) 字元。
az stream-analytics output create \
--job-name streamanalyticsjob \
--datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
--serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
--output-name asabloboutput \
--resource-group streamanalyticsrg
定義轉換查詢
使用 az stream-analytics transformation create Cmdlet 來新增轉換作業。
az stream-analytics transformation create \
--resource-group streamanalyticsrg \
--job-name streamanalyticsjob \
--name Transformation \
--streaming-units "6" \
--saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"
執行 IoT 模擬器
將第 15 行中的預留位置取代為您在快速入門開頭儲存的整個 Azure IoT 中樞裝置連接字串 (而非 IoT 中樞連接字串)。
選擇 執行。 下列輸出會顯示傳送至 IoT 中樞的感應器資料和訊息。
啟動串流分析工作並查看輸出
使用 az stream-analytics job start Cmdlet 來啟動作業。 此 Cmdlet 會採用作業名稱、資源群組名稱、輸出啟動模式和啟動時間來作為參數。
OutputStartMode 可接受 JobStartTime、CustomTime 或 LastOutputEventTime。
執行下列 Cmdlet 後,如果作業啟動,它會在輸出中傳回 True。
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
等候幾分鐘,然後確認已在 Blob 容器state中建立輸出檔案。
下載並開啟檔案,以查看數個條目,類似於以下所示的條目:
{
"messageId": 229,
"deviceId": "Raspberry Pi Web Client",
"temperature": 31.85214010589595,
"humidity": 60.278830289656284,
"EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "MyASAIoTDevice",
"ConnectionDeviceGenerationId": "638132150746523845",
"EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
"StreamId": null
}
}
清理資源
刪除資源群組,這會刪除資源群組中的所有資源,包括串流分析作業、IoT 中樞和 Azure 記憶體帳戶。
az group delete \
--name streamanalyticsrg \
--no-wait
後續步驟
在本快速入門中,您已使用 Azure CLI 部署簡單的串流分析作業。 您也可以使用 Azure 入口網站和 Visual Studio 部署串流分析作業。
若要了解如何設定其他輸入來源及執行即時偵測,請前往下列文章: