选择时序 ID 的最佳做法
注意
时序见解服务将于 2024 年 7 月 7 日停用。 请考虑尽快将现有环境迁移到备用解决方案。 有关弃用和迁移的详细信息,请访问我们的 文档。
本文总结了 Azure 时序见解第 2 代环境时序 ID 的重要性,以及选择时序 ID 的最佳做法。
选择时序标识符
选择适当的时序 ID 至关重要。 选择时序 ID 类似于为数据库选择分区键。 创建 Azure 时序见解 Gen2 环境时需要用到它。
请观看环境配置教程,以便对时间序列 ID 有详细了解。 你将查看两个不同的 JSON 遥测有效负载示例和每个示例的正确时序 ID 选择。
重要
时序 ID 为:
- 区分大小写的字符串 属性:字母和字符大小写用于搜索、比较、更新以及分区时。
- 不可变 属性:创建后无法更改它。
提示
如果事件源是 IoT 中心,则时序 ID 可能会 iothub-connection-device-id。如果计划使用 IoT 即插即用设备模型或不使用组件,则应将 dt-subject 作为组合键的一部分,以防将来需要它。
要遵循的主要最佳做法包括:
- 选取具有许多非重复值的分区键(例如,数百或数千个)。 在许多情况下,这可能是 JSON 中的设备 ID、传感器 ID 或标记 ID。
- 在您的 时序模型中,时序 ID 应在叶节点级别保持唯一。
- 时序 ID 的属性名称字符串的字符限制为 128。 对于时序 ID 的属性值,字符限制为 1,024。
- 如果缺少时序 ID 的唯一属性值,则会将其视为 null 值,并遵循唯一性约束的相同规则。
- 如果您的时序 ID 嵌套在复杂的 JSON 对象中,请确保在提供属性名称时遵循入口 平展规则。 查看示例 B。
- 还可以选择最多 三个 关键属性作为时序 ID。 它们的组合将是表示时序 ID 的复合键。
注意
三个关键属性必须是字符串。 必须针对此组合键进行查询,而不是一次查询一个属性。
选择多个关键属性
以下情境描述选择多于一个关键属性作为时序 ID。
示例 1:具有唯一键的时序 ID
- 你拥有旧有资产群。 每个密钥都有一个唯一键。
- 一个机群通过属性deviceId唯一标识。 对于其他船队,其独特属性为objectId。 两个舰队都不包含其他舰队的唯一属性。 在此示例中,将选择两个键,deviceId,objectId,作为唯一键。
- 我们接受空值,并且在事件负载中缺少属性会被视为空值。 这也是处理将数据发送到两个事件源的适当方法,其中每个事件源中的数据具有唯一的时序 ID。
示例 2:具有复合键的时序标识符
- 您需要在同一资产群中使多个属性是唯一的。
- 你是智能建筑制造商,并在每个房间部署传感器。 在每个房间中,对于 sensorId,通常具有相同的值。 例如 sensor1、sensor2和 sensor3。
- 您的建筑在物业 flrRm的不同位置之间,楼层和房间编号出现了重复。 这些数字具有 1a、2b和 3a等值。
- 你有一个属性,位置,其中包含例如 雷德蒙德、巴塞罗那和 东京等值。 若要创建唯一性,请将以下三个属性指定为时序 ID 键:sensorId、flrRm和 位置。
示例原始事件:
{
"sensorId": "sensor1",
"flrRm": "1a",
"location": "Redmond",
"temperature": 78
}
在 Azure 门户中,可以输入组合键,如下所示:
注意
在 Azure 门户中,不要在一个 texbox 中输入属性的逗号分隔名称,否则,它将被视为包含逗号的单个属性名称。 在各自的文本框中输入每个属性名称。
后续步骤
阅读 JSON 扁平化和转义规则 以了解事件的存储方式。