Azure 时序分析第 2 代中的时间序列模型

注意

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

本文介绍时序模型、功能和如何在 Azure 时序见解 Gen2 环境中开始生成和更新自己的模型。

提示

总结

传统上,从 IoT 设备收集的数据缺少上下文信息,因此很难快速查找和分析传感器。 时序模型的主要动机是简化 IoT 或时序数据的查找和分析。 它通过策划、维护和丰富时序数据,帮助准备可供消费者使用的数据集以便进行分析,从而实现该目标。

场景:Contoso 的新智能烤箱

考虑 Contoso 智能烤箱的虚构方案。 在此方案中,假设每个 Contoso 智能烤箱都有五个温度传感器,一个用于四个顶级燃烧器,一个用于烤箱本身。 直到最近,每个 Contoso 温度传感器都单独发送、存储和可视化其数据。 对于厨房设备监视,Contoso 依赖于基本图表,每个单独的传感器都有一个图表。

虽然 Contoso 对其初始数据和可视化解决方案感到满意,但一些限制变得很明显:

  • 当大多数顶层燃烧器打开时,客户想知道烤箱整体会有多热。 Contoso 在分析整体烤箱的状况和提供统一答案方面遇到了更多困难。
  • Contoso 工程师希望验证同时运行的上方燃烧器不会导致功率消耗低效。 很难交叉引用哪些温度和电压传感器相互关联,以及如何在商店中定位它们。
  • Contoso 质量保证团队希望审核和比较两个传感器版本之间的历史记录。 很难确定哪些数据属于哪个传感器版本。

由于无法构建、组织和定义总体智能烤箱时序模型,每个温度传感器都保持了脱位、隔离和信息性较低的数据点。 由于每个数据集独立于其他数据集,因此将这些数据点转换为可操作的见解更加困难。

这些限制揭示了智能数据聚合和可视化工具在 Contoso 的新烤箱中的重要性:

  • 当你能够将数据关联并合并到方便的视图中时,数据可视化效果被证明是有用的。 例如,电压传感器和温度传感器就是一个例子。
  • 管理多个实体的多维数据以及比较、缩放和时间范围功能可能很难实现。

时序模型为本虚构示例中遇到的许多方案提供了便捷的解决方案

时序模型智能烤箱图表示例

  • 时序模型在查询和导航中起着重要作用,因为它通过允许跨时间范围以及不同传感器和设备种类之间的比较,为数据提供上下文。 (A
  • 数据在时序模型中持久化后进一步被上下文化,因为它将时序查询计算保存为变量,并在查询时重用这些变量。
  • 时序模型组织并聚合数据,以提高可视化和管理功能。 (B

关键功能

为了让时序数据的情境化处理变得简单轻松,Azure 时序洞察 Gen2 的时序模型功能启用以下能力。 它可帮助你:

  • 利用标量函数、聚合操作等创作和管理计算或公式。
  • 定义父子关系以启用导航、搜索和引用。
  • 定义与实例关联的属性,定义为 实例字段,并使用它们来创建层次结构。

组件

时序模型具有三个核心组件:

这些组件组合在一起以指定时序模型并组织数据。

时序模型概述图表

可以通过 Azure 时序见解探索器来创建和管理时序模型。 时序模型设置可以通过 模型设置 API进行管理。

时序模型实例

时序模型 实例 是时序本身的虚拟表示形式。

在大多数情况下,实例由 deviceIdassetId唯一标识,这些 ID 保存为时序 ID。

实例具有与其关联的描述性信息,称为 实例属性,例如时序 ID、类型、名称、说明、层次结构和实例字段。 实例属性至少包括层次结构信息。

实例字段 是描述性信息的集合,这些信息可以包括层次结构级别的值,以及制造商、操作员等。

为 Azure 时序见解第 2 代环境配置事件源后,实例会自动发现并在时序模型中创建。 可以使用时序模型查询通过 Azure 时序见解资源管理器创建或更新这些实例。

时序模型实例示例

实例属性

实例由 timeSeriesIdtypeId名称说明hierarchyIdsinstanceFields定义。 每个实例仅映射到一个 类型,以及一个或多个 层次结构

财产 描述
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 定义中包含 buildingfloorroom

{
  "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 时序见解资源管理器 中,时序 ID1ID4 显示为层次结构 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)"
          }
        }
      }
    }
  ]
}

时序模型类型可以有多个变量,用于指定事件的公式和计算规则。 详细了解 如何定义时序模型变量

后续步骤