你当前正在访问 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 数据资源管理器数据库的托管标识。
  • 将表添加到数据库以存储 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 配置数据导出目标,请执行以下操作:

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

配置数据导出:

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

  2. 输入“电话加速计”作为导出名称。

  3. 选择“遥测”作为要导出的数据类型。

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

    名称 运算符
    设备模板 等于 IoT 即插即用移动版
    传感器/加速/X Exists 空值

    请确保设置了在所有条件都为 true 的情况下导出数据的选项。

  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
    }
    

    Screenshot that shows the data transformation query for the export.

    若要了解转换的工作原理并试验查询,请将以下示例遥测消息粘贴到“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": "40a97c91-50cc-44f0-9f63-71386613facc",
      "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. 保存转换。 然后保存数据导出定义。

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

Screenshot that shows a running data export with the healthy status.

查询导出的数据

查询导出的遥测数据:

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

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

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

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

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

Screenshot of the query results for the accelerometer telemetry.

清理资源

如果不打算完成更多 IoT Central 快速入门或教程,则可删除 IoT Central 应用程序:

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

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

az group delete --name IoTCentralExportData-rg

下一步

在本快速入门中,你学习了如何将数据从 IoT Central 持续导出到其他 Azure 服务。

了解了如何导出数据后,建议执行的下一步骤是: