你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:从 IoT Central 应用程序导出数据
在本快速入门中,你将配置 IoT Central 应用程序以将数据导出到 Azure 数据资源管理器。 Azure 数据资源管理器可以存储、查询和处理来自设备的遥测数据,例如 IoT 即插即用智能手机应用。
在本快速入门中,请执行以下操作:
- 使用 IoT Central 中的数据导出功能,将智能手机应用中的遥测数据导出到 Azure 数据资源管理器数据库。
- 使用 Azure 数据资源管理器对遥测数据运行查询。
完成本快速入门会导致 Azure 数据资源管理器实例在 Azure 帐户中产生少量成本。 IoT Central 应用程序中的前两台设备是免费的。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 完成快速入门创建 Azure IoT Central 应用程序。 第二个快速入门为你的设备配置规则和操作为可选操作。
- 需要在第一个快速入门“创建 Azure IoT 中心应用程序”中选择的 IoT 中心应用程序 URL 前缀。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
安装 Azure 服务
需要 Azure 数据资源管理器群集和数据库,才能从 IoT Central 应用程序导出数据。 在本快速入门中,你将在 Azure Cloud Shell 中运行 bash 脚本来创建并配置它们。
该脚本完成以下步骤:
- 提示你登录到 Azure 订阅,以便它可以生成持有者令牌来对 REST API 调用进行身份验证。
- 创建 Azure 数据资源管理器群集和数据库。
- 为 IoT Central 应用程序创建托管标识。
- 配置有权访问 Azure 数据资源管理器数据库的托管标识。
- 将表添加到数据库以存储 IoT Central 中传入的遥测数据。
运行以下命令,将脚本下载到 Azure Cloud Shell 环境:
wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/quickstart-cde/createADX.sh
chmod u+x createADX.sh
使用以下命令运行该脚本:
- 将
CLUSTER_NAME
替换为 Azure 数据资源管理器群集的唯一名称。 群集名称只能包含小写字母和数字: 群集名称的长度必须为 4 到 22 个字符。 - 将
CENTRAL_URL_PREFIX
替换为在第一个快速入门中为 IoT Central 应用程序选择的 URL 前缀。 - 收到提示时,请按照说明登录帐户。 脚本必须登录,因为它会生成持有者令牌来对 REST API 调用进行身份验证。
./createADX.sh CLUSTER_NAME CENTRAL_URL_PREFIX
重要
脚本可能需要 20 到 30 分钟的时间来运行。
记下脚本输出的 Azure 数据资源管理器 URL。 稍后会在快速入门中用到此值。
配置数据导出
若要从 IoT Central 配置数据导出目标,请执行以下操作:
- 导航到 IoT Central 应用程序中的“数据导出”页。
- 选择“目标”选项卡,然后选择“添加目标”。
- 输入“Azure 数据资源管理器”作为目标名称。 选择“Azure 数据资源管理器”作为目标类型。
- 在“群集 URL”中,输入之前记下的“Azure 数据资源管理器 URL”。
- 在“数据库名称”中,请输入“phonedata”。
- 在“表名”中,输入“加速”。
- 在“授权”中,选择“系统分配的托管标识”。
- 选择“保存”。
配置数据导出:
在“数据导出”页上,选择“导出”选项卡,然后选择“添加导出”。
输入“电话加速计”作为导出名称。
选择“遥测”作为要导出的数据类型。
使用下表中的信息添加两个筛选器:
名称 运算符 值 设备模板 等于 IoT 即插即用移动版 传感器/加速/X Exists 空值 请确保设置了在所有条件都为 true 的情况下导出数据的选项。
添加 Azure 数据资源管理器作为目标。
向目标添加数据转换。 在数据转换页上的“2. 生成转换查询”字段中添加以下查询:
import "iotc" as iotc; { Device: .device.id, EnqueuedTime: .enqueuedTime, X: .telemetry | iotc::find(.name == "accelerometer").value.x, Y: .telemetry | iotc::find(.name == "accelerometer").value.y, Z: .telemetry | iotc::find(.name == "accelerometer").value.z }
若要了解转换的工作原理并试验查询,请将以下示例遥测消息粘贴到“1.添加输入消息”中:
{ "messageProperties": {}, "device": { "id": "8hltz8xa7n", "properties": { "reported": [] }, "approved": true, "types": [], "name": "8hltz8xa7n", "simulated": false, "provisioned": true, "modules": [], "templateId": "urn:modelDefinition:vlcd3zvzdm:y425jkkpqzeu", "templateName": "IoT Plug and Play mobile", "organizations": [], "cloudProperties": [], "blocked": false }, "component": "sensors", "applicationId": "00001111-aaaa-2222-bbbb-3333cccc4444", "messageSource": "telemetry", "telemetry": [ { "id": "dtmi:azureiot:PhoneSensors:__accelerometer;1", "name": "accelerometer", "value": { "x": 0.09960123896598816, "y": 0.09541380405426025, "z": 9.907781600952148 } } ], "enqueuedTime": "2021-11-12T10:01:30.588Z", "enrichments": {} }
保存转换。 然后保存数据导出定义。
等到导出状态显示“正常”:
查询导出的数据
查询导出的遥测数据:
使用之前运行的脚本所输出的 Azure 数据资源管理器 URL 来导航到 Azure 数据资源管理器环境。
展开群集节点并选择 phonedata 数据库。 查询窗口的范围将更改为
Scope:yourclustername.eastus/phonedata
。在 Azure 数据资源管理器中,打开新选项卡并粘贴以下 Kusto 查询,然后选择“运行”以绘制加速计遥测数据:
['acceleration']
| project EnqueuedTime, Device, X, Y, Z
| render timechart
可能需要等待几分钟才能收集足够的数据。 若要查看遥测值的变化,请尝试以不同方向持握手机:
清理资源
如果不打算完成更多 IoT Central 快速入门或教程,则可删除 IoT Central 应用程序:
- 在 IoT Central 应用程序中,导航到“应用程序”“管理”。
- 选择“删除”,然后确认操作。
若要从订阅中移除 Azure 数据资源管理器实例,并避免产生不必要的计费,请从 Azure 门户删除“IoTCentralExportData”资源组,或在 Azure Cloud Shell 中运行以下命令。
az group delete --name IoTCentralExportData-rg
下一步
在本快速入门中,你学习了如何将数据从 IoT Central 持续导出到其他 Azure 服务。
了解了如何导出数据后,建议执行的下一步骤是: