本文介绍如何将数据从 IoT 中心(大数据流处理平台和 IoT 引入服务)引入 Azure 数据资源管理器。
若要了解如何使用 Kusto SDK 创建连接,请参阅使用 SDK 创建 IoT 中心网格数据连接。
有关从 IoT 中心将数据引入到 Azure 数据资源管理器的常规信息,请参阅连接到 IoT 中心。
注意
只有创建数据连接后进入队列的事件才会被引入。
有关基于以前的 SDK 版本的代码示例,请参阅存档的文章。
先决条件
- Azure 订阅。 创建免费 Azure 帐户。
- Azure 数据资源管理器群集和数据库。 创建群集和数据库。
- 一个目标表。 创建表或使用现有表。
- 表的引入映射。
- 一个包含要引入的数据的 IoT 中心。
创建 IoT 中心数据连接
在本部分,我们将在 IoT 中心与 Azure 数据资源管理器表之间建立连接。 只要建立了此连接,数据就会从 IoT 中心传输到目标表。
创建用于身份验证的 Microsoft Entra 应用程序主体。 需要目录(租户)ID、应用程序 ID 和客户端机密。
运行以下代码。
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID var clientSecret = "PlaceholderClientSecret"; //Client Secret var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret); var resourceManagementClient = new ArmClient(credentials, subscriptionId); var resourceGroupName = "testrg"; //The cluster and database that are created as part of the Prerequisites var clusterName = "mykustocluster"; var databaseName = "mykustodatabase"; var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync(); var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value; var cluster = (await resourceGroup.GetKustoClusterAsync(clusterName)).Value; var database = (await cluster.GetKustoDatabaseAsync(databaseName)).Value; var dataConnections = database.GetKustoDataConnections(); var iotHubConnectionName = "myiothubconnect"; //The IoT hub that is created as part of the Prerequisites var iotHubResourceId = new ResourceIdentifier("/subscriptions/<iotHubSubscriptionId>/resourceGroups/<iotHubResourceGroupName>/providers/Microsoft.Devices/IotHubs/<iotHubName>"); var sharedAccessPolicyName = "iothubforread"; var consumerGroup = "$Default"; var ___location = AzureLocation.CentralUS; //The table and column mapping are created as part of the Prerequisites var tableName = "StormEvents"; var mappingRuleName = "StormEvents_CSV_Mapping"; var dataFormat = KustoIotHubDataFormat.Csv; var databaseRouting = KustoDatabaseRouting.Multi; var iotHubConnectionData = new KustoIotHubDataConnection { IotHubResourceId = iotHubResourceId, ConsumerGroup = consumerGroup, SharedAccessPolicyName = sharedAccessPolicyName, Location = ___location, TableName = tableName, MappingRuleName = mappingRuleName, DataFormat = dataFormat, DatabaseRouting = databaseRouting }; await dataConnections.CreateOrUpdateAsync(WaitUntil.Completed, iotHubConnectionName, iotHubConnectionData);
设置 建议的值 字段说明 tenantId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 租户 ID。 也称为目录 ID。 subscriptionId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 用于创建资源的订阅 ID。 clientId xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx 可以访问租户中资源的应用程序的客户端 ID。 clientSecret PlaceholderClientSecret 可以访问租户中资源的应用程序的客户端密码。 resourceGroupName testrg 包含群集的资源组的名称。 clusterName mykustocluster 群集的名称。 databaseName mykustodatabase 群集中目标数据库的名称。 iotHubConnectionName myiothubconnect 所需的数据连接名称。 tableName StormEvents 目标数据库中目标表的名称。 mappingRuleName StormEvents_CSV_Mapping 与目标表相关的列映射的名称。 dataFormat csv 消息的数据格式。 iotHubResourceId 资源 ID 包含要引入的数据的 IoT 中心的资源 ID。 sharedAccessPolicyName iothubforread 共享访问策略的名称,这些策略定义设备与服务连接到 IoT 中心所需的权限。 consumerGroup $Default 事件中心的使用者组。 ___location 美国中部 数据连接资源的位置。 databaseRouting 多或单 连接的数据库路由。 如果将该值设置为“单个”,则数据连接会按 databaseName 设置中指定的内容被路由到群集中的单个数据库。 如果将此值设置为“多”,可使用数据库引入属性重写默认目标数据库。 有关详细信息,请参阅事件路由。
删除 IoT 中心数据连接
若要删除 IoT 中心连接,请运行以下命令:
kustoManagementClient.DataConnections.Delete(resourceGroupName, clusterName, databaseName, dataConnectionName);