注意
时序见解服务将于 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 在其 building 定义中包含 floor、room和 :
{
  "id": "aaaaaa-bbbbb-ccccc-ddddd-111111",
  "name": "H1",
  "source": {
    "instanceFieldNames": [
      "building",
      "floor",
      "room"
    ]
  }
}
给定在前面定义中使用的实例域和多个时间序列,层次结构属性和值如下表所示:
| 时序标识符 | 实例字段 | 
|---|---|
| ID1 | “建筑” = “1000”, “楼层” = “10”, “房间” = “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 时序见解 Gen2 中 查询数据 
 
              
               
              
               
              
               
              
              