你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从 Azure IoT 数据处理器预览版管道将数据发送到 Azure 数据资源管理器

重要

Azure IoT 操作预览版(由 Azure Arc 启用)当前处于预览状态。 不应在生产环境中使用此预览版软件。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

使用 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 操作预览版部署的机密中的步骤,将机密引用添加到 Kubernetes 群集。

批处理

数据处理器分批写入 Azure 数据资源管理器。 当你在发送数据前在数据处理器中批处理数据时,Azure 数据资源管理器具有自己默认的引入批处理策略。 因此,在数据处理器将其写入 Azure 数据资源管理器目标后,可能不会立即在 Azure 数据资源管理器中看到数据。

要在管道发送数据后立即在 Azure 数据资源管理器中查看数据,可以将引入批处理策略计数设置为 1。 要编辑引入批处理策略,请在数据库查询选项卡中运行以下命令:

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

配置目标阶段

Azure 数据资源管理器目标阶段 JSON 配置定义了阶段的详细信息。 要创建该阶段,可以与基于窗体的 UI 交互,或在“高级”选项卡上提供 JSON 配置:

字段 类型​​ 描述 需要 默认 示例
Display name 字符串 要显示在数据处理器 UI 中的名称。 - Azure IoT MQ output
说明 字符串 关于阶段所执行的操作的用户友好型说明。 Write to topic default/topic1
群集 URL 字符串 URI(此值不是数据引入 URI)。 -
数据库 字符串 数据库名称。 -
字符串 要写入的表的名称。 -
Batch 批处理 如何批处理数据。 60s 10s
重试 重试 要使用的重试策略。 default fixed
身份验证1 字符串 连接到 Azure 数据资源管理器的身份验证详细信息。 Service principalManaged identity 服务主体 -
列 > 名称 string 列的名称。 temperature
列 > 路径 Path 数据的每个记录中应从中读取列值的位置。 .{{name}} .temperature

1身份验证:目前,连接到 Azure 数据资源管理器时,阶段支持基于服务主体的身份验证或托管标识。

若要配置基于服务主体的身份验证,请提供以下值。 创建服务主体并将机密引用添加到群集时,记下了这些值。

字段 说明 必须
TenantId 租户 ID。
ClientId 创建有权访问数据库的服务主体时记下的应用 ID。
机密 在群集中创建的机密引用。

示例配置

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