你当前正在访问 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 Cloud Shell 中运行 bash 脚本来创建和配置它们。

该脚本完成以下步骤:

  • 提示你登录到 Azure 订阅,以便它可以生成持有者令牌来对 REST API 调用进行身份验证。
  • 创建 Azure 数据资源管理器群集和数据库。
  • 为 IoT Central 应用程序创建托管标识。
  • 配置托管标识,授予其访问 Azure Data Explorer 数据库的权限。
  • 将表添加到数据库以存储来自 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 Data Explorer 群集的唯一名称。 群集名称只能包含小写字母和数字。 群集名称的长度必须介于 4 到 22 个字符之间。
  • CENTRAL_URL_PREFIX 替换为在第一个快速入门中为 IoT Central 应用程序选择的 URL 前缀。
  • 出现提示时,请按照说明登录到帐户。 脚本必须登录,因为它会生成持有者令牌来对 REST API 调用进行身份验证。
./createADX.sh CLUSTER_NAME CENTRAL_URL_PREFIX

重要

此脚本可能需要 20 到 30 分钟才能运行。

记下脚本输出的 Azure 数据资源管理器 URL 。 稍后在快速入门中使用此值。

配置数据导出

若要从 IoT Central 配置数据导出目标,请执行以下作:

  1. 导航到 IoT Central 应用程序中 的数据导出 页。
  2. 选择“ 目标 ”选项卡,然后 添加目标
  3. 输入 Azure 数据资源管理器 作为目标名称。 选择“Azure 数据资源管理器”作为目标类型。
  4. 群集 URL 中,输入之前记下的 Azure 数据资源管理器 URL
  5. “数据库名称”中,输入 phonedata
  6. 表名称中,输入 加速
  7. 授权中,选择 系统分配的托管标识
  8. 选择“保存”

配置数据导出:

  1. “数据导出 ”页上,选择“ 导出 ”选项卡,然后 添加导出

  2. 输入 手机加速计 作为导出名称。

  3. 选择要导出的数据类型为 遥测

  4. 使用下表中的信息添加两个筛选器:

    Name Operator 价值
    设备模板 等于 IoT 即插即用移动版
    传感器/加速/X Exists N/A

    确保在所有条件为真时,已经设置导出数据的选项。

  5. Azure 数据资源管理器 添加为目标。

  6. 向目标添加数据转换。 在数据转换页上的“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": {}
    }
    
  7. 保存转换。 然后保存数据导出定义。

等到导出状态显示 “正常”:

显示运行的数据导出状态为“正常”的屏幕截图。

查询导出的数据

查询导出的遥测数据:

  1. 使用之前运行的脚本输出的 Azure 数据资源管理器 URL ,导航到 Azure 数据资源管理器环境。

  2. 展开群集节点并选择 phonedata 数据库。 查询窗口的范围更改为 Scope:yourclustername.eastus/phonedata

  3. 在 Azure 数据资源管理器中,打开一个新选项卡并粘贴以下 Kusto 查询,然后选择 “运行 ”以绘制加速计遥测:

['acceleration'] 
    | project EnqueuedTime, Device, X, Y, Z
    | render timechart 

可能需要等待几分钟才能收集足够的数据。 若要查看遥测值的变化,请尝试以不同的方向握持手机。

加速计遥测的查询结果的屏幕截图。

清理资源

如果不打算完成任何进一步的 IoT Central 快速入门或教程,可以删除 IoT Central 应用程序:

  1. 在 IoT Central 应用程序中,导航到 应用程序 > 管理
  2. 选择“删除”,然后确认操作。

若要从订阅中删除 Azure 数据资源管理器实例并避免不必要的计费,请从 Azure 门户删除 IoTCentralExportData-rg 资源组,或在 Azure Cloud Shell 中运行以下命令:

az group delete --name IoTCentralExportData-rg

后续步骤

本快速入门介绍了如何持续将数据从 IoT Central 导出到另一个 Azure 服务。

现在你已知道要导出数据,建议的下一步是: