选择时序 ID 的最佳做法

注意

时序见解服务将于 2024 年 7 月 7 日停用。 请考虑尽快将现有环境迁移到备用解决方案。 有关弃用和迁移的详细信息,请访问我们的文档

本文总结了 Azure 时序见解第 2 代环境的时序 ID 的重要性,以及有关选择时序 ID 的最佳做法。

选择时间序列 ID

选择适当的时序 ID 至关重要。 选择时序 ID 与为数据库选择分区键相同。 它在创建时序见解第 2 代环境时是必需的。

重要

时序 ID 如下:

  • 区分大小写的字符串属性:搜索、比较和更新以及分区都会用到字母和字符的大小写。
  • 不可变属性:一旦创建,无法更改。

提示

如果事件源是 IoT 中心,则时序 ID 可能是 iothub-connection-device-id。如果计划使用 IoT 即插即用设备模型,或在不使用组件的情况下使用这些模型,则应在组合键中包含 dt-subject,以便以后需要时使用

要遵守的主要最佳做法包括:

  • 选择具有许多(例如,几百甚至几千个)非重复值的分区键。 在许多情况下,该键可能是 JSON 中的设备 ID、传感器 ID 或标记 ID。
  • 时序模型的叶节点级别,时序 ID 应是唯一的。
  • 时序 ID 属性名称字符串的字符数限制为 128 个。 时序 ID 属性值的字符数限制为 1024 个。
  • 如果时序 ID 的某个唯一属性值缺失,该值将被视为 null 值,并遵循相同的唯一性约束规则。
  • 如果时序 ID 嵌套在复杂的 JSON 对象中,请确保在提供属性名称时遵循入口平展规则。 查看示例 B
  • 此外,最多可以选择三个键属性作为时序 ID。 这些属性的组合将是表示时序 ID 的组合键。

    注意

    三个键属性必须是字符串。 必须针对此组合键运行查询,而不能每次查询一个属性。

选择多个键属性

以下方案描述如何选择多个键属性作为时序 ID。

示例 1:具有唯一键的时序 ID

  • 你有两个传统的资产群。 每个群有一个唯一键。
  • 其中一个群以属性 deviceId 进行唯一标识。 另一个群的唯一属性为 objectId。 这两个群都不包含对方的唯一属性。 在此示例中,可选择两个键 deviceIdobjectId 作为唯一键。
  • 我们接受 null 值,且如果事件有效负载中缺少某个属性,则计为 null 值。 向两个事件源发送数据时,这种方法同样合适,其中每个事件源中的数据具有唯一的时序 ID。

示例 2:具有组合键的时序 ID

  • 同一组资产中需要多个唯一的属性。
  • 你是一家智能建筑制造商,希望在每个房间部署传感器。 对于每个房间,通常对 sensorId 使用相同的值。 例如,sensor1sensor2sensor3
  • 建筑物在属性 flrRm 中包含不同场地的重叠楼层号和房间号。 这些数字使用类似于 1a2b3a 的值。
  • location 属性包含类似于 RedmondBarcelonaTokyo 的值。 若要实现唯一性,可将以下三个属性指定为时序 ID 键:sensorIdflrRmlocation

示例原始事件:

{
  "sensorId": "sensor1",
  "flrRm": "1a",
  "location": "Redmond",
  "temperature": 78
}

然后,可在 Azure 门户中输入组合键,如下所示:

配置环境的时序 ID。

注意

在 Azure 门户中,请不要在一个文本框中输入以逗号分隔的属性名称,否则,它将被视为单个包含逗号的属性名称。 请在每个属性名称自己的文本框中输入每个属性名称。

后续步骤