共用方式為


從 Azure IoT 數據處理器預覽管線將數據傳送至 Azure 數據總管

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

使用 Azure 資料總管目的地,從 Azure IoT 數據處理器預覽管線將數據寫入 Azure 數據總管中的數據表。 目的地階段會先以批次方式處理訊息,再傳送至 Azure 資料總管。

必要條件

若要設定並使用 Azure 資料總管目的地管線階段,則需要:

設定 Azure 資料總管

您必須先從管線授與資料庫的存取權,才能從數據管線寫入 Azure 數據總管。 您可以使用服務主體或受控識別來向資料庫驗證管線。 使用受控識別的優點是,您不需要管理服務主體的生命週期。 受控識別會自動由 Azure 管理,並系結至其指派的資源生命週期。

若要使用用戶端祕密來建立服務主體:

  1. 使用下列 Azure CLI 命令建立服務主體。

    az ad sp create-for-rbac --name <YOUR_SP_NAME> 
    
  2. 此命令的輸出包含 appIddisplayNamepasswordtenant。 請記下這些值,以利用於設定 Microsoft Fabric 等雲端資源的存取權限、建立祕密,以及設定管線目的地:

    {
        "appId": "<app-id>",
        "displayName": "<name>",
        "password": "<client-secret>",
        "tenant": "<tenant-id>"
    }
    

若要授與 Azure 資料總管資料庫的管理員存取權,請在資料庫查詢索引標籤中執行已下命令:

.add database <DatabaseName> admins (<ApplicationId>) <Notes>

若要將目的地階段連線至 Azure 資料總管,則需要包含驗證詳細資料之祕密的存取權限。 若要建立祕密:

  1. 請使用下列命令,將祕密新增至 Azure Key Vault,且其中須包含您在建立服務主體時記下的用戶端密碼:

    az keyvault secret set --vault-name <your-key-vault-name> --name AccessADXSecret --value <client-secret>
    
  2. 遵循管理 Azure IoT Operations Preview 部署秘密中的步驟,將秘密參考新增至 Kubernetes 叢集。

批次處理

資料處理器會以批次方式將資料寫入 Azure 資料總管。 若資料在傳送前已在資料處理器中進行批次處理,則 Azure 資料總管會具有自備的預設擷取批次處理原則。 因此,在資料處理器將資料寫入 Azure 資料總管目的地後,可能無法立即在 Azure 資料總管中看見資料。

若要在管線傳送資料後立即於 Azure 資料總管中檢視,您可以將擷取批次處理原則計數設定為 1。 若要編輯擷取批次處理原則,請在資料庫查詢索引標籤中執行下列命令:

.alter database <your-database-name> policy ingestionbatching
```
{
    "MaximumBatchingTimeSpan" : "00:00:30",
    "MaximumNumberOfItems" : 1,
    "MaximumRawDataSizeMB": 1024
}
```

設定目的地階段

Azure 資料總管目的地階段 JSON 設定負責定義階段的詳細資料。 若要編寫階段,可透過與表單架構使用者介面互動,或在 [進階] 索引標籤上提供 JSON 設定:

欄位 類型 描述 是必要欄位 預設 範例
Display name String 用於顯示在資料處理器使用者介面中的名稱。 Yes - Azure IoT MQ output
描述 String 使用者易記的階段功能描述。 No Write to topic default/topic1
叢集 URL String URI (此值非資料擷取 URI)。 Yes -
資料庫 String 資料庫名稱。 Yes -
Table String 要寫入之資料表的名稱。 Yes -
Batch Batch 如何批次處理資料。 No 60s 10s
重試 重試 要使用的重試原則。 No default fixed
驗證1 String 連線至 Azure 資料總管的驗證詳細資訊。 Service principalManaged identity 服務主體 Yes -
資料行 > 名稱 string 資料行名稱。 Yes temperature
資料行 > 路徑 路徑 各項資料記錄中讀取資料行值的位置。 No .{{name}} .temperature

1驗證:目前,目的地階段在聯機到 Azure 數據總管時,支援服務主體型驗證或受控識別。

若要設定服務主體型驗證,請提供下列值。 先前建立服務主體時並新增叢集的祕密參考時,您已記下這些值。

欄位 描述 必要
TenantId 租用戶識別碼。 Yes
ClientId 先前建立具有資料庫存取權的服務主體時,已記下的應用程式識別碼。 Yes
祕密 您在叢集中建立的祕密參考。 Yes

範例設定

下列 JSON 範例顯示 Azure 資料總管目的地階段的完整設定,可用於將完整資訊寫入資料庫中的 quickstart 表:

{
    "displayName": "Azure data explorer - 71c308",
    "type": "output/dataexplorer@v1",
    "viewOptions": {
        "position": {
            "x": 0,
            "y": 784
        }
    },
    "clusterUrl": "https://clusterurl.region.kusto.windows.net",
    "database": "databaseName",
    "table": "quickstart",
    "authentication": {
        "type": "servicePrincipal",
        "tenantId": "tenantId",
        "clientId": "clientId",
        "clientSecret": "secretReference"
    },
    "batch": {
        "time": "5s",
        "path": ".payload"
    },
    "columns": [
        {
            "name": "Timestamp",
            "path": ".Timestamp"
        },
        {
            "name": "AssetName",
            "path": ".assetName"
        },
        {
            "name": "Customer",
            "path": ".Customer"
        },
        {
            "name": "Batch",
            "path": ".Batch"
        },
        {
            "name": "CurrentTemperature",
            "path": ".CurrentTemperature"
        },
        {
            "name": "LastKnownTemperature",
            "path": ".LastKnownTemperature"
        },
        {
            "name": "Pressure",
            "path": ".Pressure"
        },
        {
            "name": "IsSpare",
            "path": ".IsSpare"
        }
    ],
    "retry": {
        "type": "fixed",
        "interval": "20s",
        "maxRetries": 4
    }
}

設定會定義以下項目:

  • 每隔 5 秒批次處理訊息。
  • 使用批次路徑 .payload 尋找資料行的資料。

範例

下列範例顯示傳送至 Azure 資料總管目的地階段的範例輸入訊息:

{
  "payload": {
    "Batch": 102,
    "CurrentTemperature": 7109,
    "Customer": "Contoso",
    "Equipment": "Boiler",
    "IsSpare": true,
    "LastKnownTemperature": 7109,
    "Location": "Seattle",
    "Pressure": 7109,
    "Timestamp": "2023-08-10T00:54:58.6572007Z",
    "assetName": "oven"
  },
  "qos": 0,
  "systemProperties": {
    "partitionId": 0,
    "partitionKey": "quickstart",
    "timestamp": "2023-11-06T23:42:51.004Z"
  },
  "topic": "quickstart"
}