Azure 时序分析第 2 代中的时间序列模型
注意
时序见解服务将于 2024 年 7 月 7 日停用。 请考虑尽快将现有环境迁移到备用解决方案。 有关弃用和迁移的详细信息,请访问我们的 文档。
本文介绍时序模型、功能和如何在 Azure 时序见解 Gen2 环境中开始生成和更新自己的模型。
提示
- 了解 如何使用 Azure 时序见解资源管理器 处理时序模型。
总结
传统上,从 IoT 设备收集的数据缺少上下文信息,因此很难快速查找和分析传感器。 时序模型的主要动机是简化 IoT 或时序数据的查找和分析。 它通过策划、维护和丰富时序数据,帮助准备可供消费者使用的数据集以便进行分析,从而实现该目标。
场景:Contoso 的新智能烤箱
考虑 Contoso 智能烤箱的虚构方案。 在此方案中,假设每个 Contoso 智能烤箱都有五个温度传感器,一个用于四个顶级燃烧器,一个用于烤箱本身。 直到最近,每个 Contoso 温度传感器都单独发送、存储和可视化其数据。 对于厨房设备监视,Contoso 依赖于基本图表,每个单独的传感器都有一个图表。
虽然 Contoso 对其初始数据和可视化解决方案感到满意,但一些限制变得很明显:
- 当大多数顶层燃烧器打开时,客户想知道烤箱整体会有多热。 Contoso 在分析整体烤箱的状况和提供统一答案方面遇到了更多困难。
- Contoso 工程师希望验证同时运行的上方燃烧器不会导致功率消耗低效。 很难交叉引用哪些温度和电压传感器相互关联,以及如何在商店中定位它们。
- Contoso 质量保证团队希望审核和比较两个传感器版本之间的历史记录。 很难确定哪些数据属于哪个传感器版本。
由于无法构建、组织和定义总体智能烤箱时序模型,每个温度传感器都保持了脱位、隔离和信息性较低的数据点。 由于每个数据集独立于其他数据集,因此将这些数据点转换为可操作的见解更加困难。
这些限制揭示了智能数据聚合和可视化工具在 Contoso 的新烤箱中的重要性:
- 当你能够将数据关联并合并到方便的视图中时,数据可视化效果被证明是有用的。 例如,电压传感器和温度传感器就是一个例子。
- 管理多个实体的多维数据以及比较、缩放和时间范围功能可能很难实现。
时序模型为本虚构示例中遇到的许多方案提供了便捷的解决方案:
- 时序模型在查询和导航中起着重要作用,因为它通过允许跨时间范围以及不同传感器和设备种类之间的比较,为数据提供上下文。 (A)
- 数据在时序模型中持久化后进一步被上下文化,因为它将时序查询计算保存为变量,并在查询时重用这些变量。
- 时序模型组织并聚合数据,以提高可视化和管理功能。 (B)
关键功能
为了让时序数据的情境化处理变得简单轻松,Azure 时序洞察 Gen2 的时序模型功能启用以下能力。 它可帮助你:
- 利用标量函数、聚合操作等创作和管理计算或公式。
- 定义父子关系以启用导航、搜索和引用。
- 定义与实例关联的属性,定义为 实例字段,并使用它们来创建层次结构。
组件
时序模型具有三个核心组件:
这些组件组合在一起以指定时序模型并组织数据。
可以通过 Azure 时序见解探索器来创建和管理时序模型。 时序模型设置可以通过 模型设置 API进行管理。
时序模型实例
时序模型 实例 是时序本身的虚拟表示形式。
在大多数情况下,实例由 deviceId 或 assetId唯一标识,这些 ID 保存为时序 ID。
实例具有与其关联的描述性信息,称为 实例属性,例如时序 ID、类型、名称、说明、层次结构和实例字段。 实例属性至少包括层次结构信息。
实例字段 是描述性信息的集合,这些信息可以包括层次结构级别的值,以及制造商、操作员等。
为 Azure 时序见解第 2 代环境配置事件源后,实例会自动发现并在时序模型中创建。 可以使用时序模型查询通过 Azure 时序见解资源管理器创建或更新这些实例。
实例属性
实例由 timeSeriesId、typeId、名称、说明、hierarchyIds和 instanceFields定义。 每个实例仅映射到一个 类型,以及一个或多个 层次结构。
财产 | 描述 |
---|---|
timeSeriesId | 与实例关联的时间序列的唯一 ID。 在大多数情况下,实例由 deviceId 或 assetId 等属性唯一标识。 在某些情况下,可以使用最多 3 个属性的更具体的复合 ID。 |
typeId | 实例所关联的时序模型类型的区分大小写的唯一字符串 ID。 默认情况下,所有发现的新实例都与默认类型相关联。 |
名字 | 名称 属性是可选的,区分大小写。 如果 名称 不可用,则默认为 timeSeriesId。 如果提供了名称,timeSeriesId 在 井中仍然可用。 |
描述 | 实例的文本说明。 |
hierarchyIds | 定义实例所属的层次结构。 |
instanceFields | 实例的属性和定义实例的任何静态数据。 它们定义层次结构或非层次结构属性的值,同时支持索引来执行搜索操作。 |
注意
层次结构是使用实例字段生成的。 可以添加更多的 实例字段,以进一步定义实例属性。
实例具有以下 JSON 表示形式:
{
"timeSeriesId": ["PU2"],
"typeId": "545314a5-7166-4b90-abb9-fd93966fa39b",
"hierarchyIds": ["95f0a8d1-a3ef-4549-b4b3-f138856b3a12"],
"description": "Pump #2",
"instanceFields": {
"Location": "Redmond",
"Fleet": "Fleet 5",
"Unit": "Pump Unit 3",
"Manufacturer": "Contoso",
"ScalePres": "0.54",
"scaleTemp": "0.54"
}
}
提示
对于实例 API 创建、读取、更新和删除(CRUD)支持,请阅读 数据查询 一文和 实例 API REST 文档。
时序模型层次结构
时序模型 层次结构 通过指定属性名称及其关系来组织实例。
可以在给定的 Azure 时序见解第 2 代环境中配置多个层次结构。 时序模型实例可以映射到单个层次结构或多个层次结构(多对多关系)。
层次结构定义
层次结构由层次结构 ID、名称和 源定义。
财产 | 描述 |
---|---|
id | 层次结构的唯一标识符,例如在定义实例时会使用它。 |
名字 | 用于提供层次结构名称的字符串。 |
源 | 指定组织层次结构或路径,这是用户要创建的层次结构的自上而下父子顺序。 父子属性将映射到实例字段。 |
层次结构以 JSON 表示为:
{
"hierarchies": [
{
"id": "6e292e54-9a26-4be1-9034-607d71492707",
"name": "Location",
"source": {
"instanceFieldNames": [
"state",
"city"
]
}
},
{
"id": "a28fd14c-6b98-4ab5-9301-3840f142d30e",
"name": "ManufactureDate",
"source": {
"instanceFieldNames": [
"year",
"month"
]
}
}
]
}
在前面的 JSON 示例中:
-
Location
定义具有父states
和子cities
的层次结构。 每个location
可以有多个states
,进而可以有多个cities
。 -
ManufactureDate
定义具有父year
和子month
的层次结构。 每个ManufactureDate
可以有多个years
,进而可以有多个months
。
提示
有关层次结构 API 创建、读取、更新和删除(CRUD)支持,请阅读 数据查询 一文和 层次结构 API REST 文档。
层次结构示例
假设层次结构 H1 在其 instanceFieldNames 定义中包含 building
、floor
和 room
:
{
"id": "aaaaaa-bbbbb-ccccc-ddddd-111111",
"name": "H1",
"source": {
"instanceFieldNames": [
"building",
"floor",
"room"
]
}
}
给定在前面定义中使用的实例域和多个时间序列,层次结构属性和值如下表所示:
时序标识符 | 实例字段 |
---|---|
ID1 | “building” = “1000”, “floor” = “10”, “room” = “55” |
ID2 | “建筑” = “1000”,“房间” = “55” |
ID3 | “楼层” = “10” |
ID4 | “建筑” = “1000”, “楼层” = “10” |
ID5 | 未对“building”、“floor”或“room”进行设置。 |
Azure 时序见解资源管理器 中,时序 ID1 和 ID4 显示为层次结构 H1 的一部分,因为它们已完全定义和正确排序 建筑物、楼层和 房间 参数。
其他实例归为 无父级实例 分类,因为它们不符合指定的数据层次结构。
时序模型类型
时序模型 类型 帮助你定义用于执行计算的变量或公式。 类型与特定实例相关联。
类型可以有一个或多个变量。 例如,时序模型实例的类型可能是
提示
对于 Types API 的创建、读取、更新和删除(CRUD)支持,请阅读 数据查询 一文和 Types API 的 REST 文档。
类型属性
时序模型类型由 ID、名称、说明和 变量定义。
财产 | 描述 |
---|---|
id | 类型的区分大小写的唯一字符串 ID。 |
名字 | 用于为类型提供名称的字符串。 |
描述 | 类型的字符串说明。 |
变量 | 指定与类型关联的变量。 |
类型符合以下 JSON 示例:
{
"types": [
{
"id": "1be09af9-f089-4d6b-9f0b-48018b5f7393",
"name": "DefaultType",
"description": "Default type",
"variables": {
"EventCount": {
"kind": "aggregate",
"value": null,
"filter": null,
"aggregation": {
"tsx": "count()"
}
},
"Interpolated Speed": {
"kind": "numeric",
"value": {
"tsx": "$event['Speed-Sensor'].Double"
},
"filter": null,
"interpolation": {
"kind": "step",
"boundary": {
"span": "P1D"
}
},
"aggregation": {
"tsx": "right($value)"
}
}
}
}
]
}
时序模型类型可以有多个变量,用于指定事件的公式和计算规则。 详细了解 如何定义时序模型变量
后续步骤
有关如何通过 API 编辑模型的详细信息,请阅读 时序模型 参考文档。
探索可以通过 时序模型变量创建的公式和计算
了解如何在 Azure 时序见解第 2 代中 查询数据