Get Asset Raw Data by Time Range


获取指定设备的指定测点(支持多设备多测点)在某段时间内的历史数据(包括 AI 原始数据、AI 分钟级归一化数据、DI 数据、PI 数据和通用数据类型)。

请求格式


POST https://{apigw-address}/tsdb-service/v2.1/raw

请求参数(URI)


名称

位置(Path/Query)

必需/可选

数据类型

描述

orgId

Query

必需

String

资产所属的 OU ID。如何获取 orgId 信息 >>

请求参数(Body)


名称

必需/可选

数据类型

描述

modelId

可选

String

资产所属模型 ID。如何获取 modelId 信息 >>

assetIds

必需

String

资产 ID,支持查询多个资产,多个资产 ID 之间用英文逗号隔开。如何获取 Asset ID 信息 >>

pointIds

必需

String

资产测点,支持多测点查询,各个测点间用英文逗号隔开。如何获取 pointId 信息 >>

startTime

必需

String

采样数据开始时间,支持设备当地时间和 UTC 时间。设备当地时间的格式为 YYYY-MM-DD HH:MM:SS。当格式为设备当地时间时,使用设备所在地的当地时间进行查询。UTC 时间格式如 2019-06-01T00:00:00+08:00+08:00 表示时区。当格式为 UTC 时间时,对所有资产按照统一的开始时间和结束时间进行查询。返回的数据范围将默认包含开始时间点的数据。

endTime

必需

String

采样数据结束时间,格式必须与开始时间保持一致。返回的数据范围默认不包含结束时间点的数据。

pageSize

可选

Integer

单次查询返回记录条数的上限,默认为 1000。

orderBy

可选

String

指定返回结果按照某字段排序,目前支持按 timestamp 字段排序。timestamp asc:按字段升序排序;timestamp desc:按字段倒序排序;默认为 timestamp asc

withQuality

可选

Boolean

指定返回结果中是否包含数据质量位,true 为包含,false 为不包含。

localTimeAccuracy

可选

Boolean

指定查询结果是否包含毫秒级结果。true 表示需要毫秒格式,false 表示不需要毫秒格式,默认值为 false

localTimeFormat

可选

Integer

指定返回数据的设备当地时间是否包含设备的时区信息。0 不包含设备时区信息,1 包含设备时区信息,默认值为 0。

itemFormat

可选

Integer

指定返回结果中测点数据的显示格式。可选值为 012,默认值为 0。对每种显示格式的详细介绍,参见 Item Format 示例 >>

boundaryType

可选

String

对于已配置数据压缩存储的测点,可指定查询的测点数据类型。可选值为:

  • inside:仅返回原始压缩数据,即时间范围内的数据。若不指定,默认为 inside

  • outside:返回原始压缩数据,以及超出起止时间前后边界的数据。

  • interpolated:返回原始压缩数据,以及起止时间边界插值数据,即插补起止时间点的数据。

  • sample:返回起止时间内,按指定的时间间隔和算法插补后的数据。插补的数据可用于补全 TSDB 中的数据差距,生成均匀采样的数据序列。

interval

可选

Integer

boundaryType=sample 时,指定插补数据的时间间隔,默认值为 60,单位为秒。

interpolation

可选

String

boundaryType=sample 时,指定插补数据的算法。可选值为:

  • linear:使用线性插值算法来计算缺失的数据点。若不指定,默认为 linear

  • previous:用前一个有效数据点的值来填充缺失的数据点。

  • near:用临近的有效数据点的值来填充缺失的数据点。

  • after:用后一个有效数据点的值来填充缺失的数据点。

有关插值算法的更多信息,参见 数据插值算法参考说明 >>

type

可选

String

指定查询测点数据的存储类型。可选值为:

  • ai:仅查询 AI 原始数据。

  • ai_normalized:仅查询 AI 分钟级归一化数据。

  • di:仅查询 DI 数据。

  • pi:仅查询 PI 数据。

  • generic:仅查询通用数据。

若不指定查询的数据存储类型,则默认查询 AI 原始数据、DI 数据、PI 数据和通用类型的测点数据。

响应参数


名称

数据类型

描述

items

List<JSONObject>

资产测点最后变更数据列表。单个设备单一测点的数据将按照时间戳升序排列。详见 items

items


名称

数据类型

描述

assetId

String

资产 ID。

timestamp

Long

数据时间戳,UNIX 时间,精确到秒。

pointId

Double

此参数的名称是变量,在返回结构中,参数名称为测点的标识符,参数的值为测点数据。

localtime

String

数据当地时间,精确到秒。

quality

Integer

数据质量位。

示例 1


示例 1 按照设备当地时间请求数据。

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/raw?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetId",
  "pointIds": "yourPointId1,yourPointId2",
  "startTime": "2020-04-20 00:00:00",
  "endTime": "2020-04-21 00:00:00",
  "pageSize": 10,
  "withQuality": false,
  "localTimeAccuracy": false,
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "submsg": null,
  "data": {
    "items": [
      {
        "assetId": "yourAssetId",
        "timestamp": 1587312000000,
        "yourPointId1": 1.1236,
        "localtime": "2020-04-20T00:00:00+08:00"
      },
      {
        "assetId": "yourAssetId",
        "timestamp": 1587312000000,
        "yourPointId2": 578,
        "localtime": "2020-04-20T00:00:00+08:00"
      }
    ]
  }
}

示例 2


示例 2 按照 UTC 时间格式请求数据。

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/raw?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetId1,yourAssetId2",
  "pointIds": "yourPointId1,yourPointId2",
  "startTime": "2020-04-20T00:00:00+08:00",
  "endTime": "2020-04-21T00:00:00+08:00",
  "pageSize": 10,
  "withQuality": false,
  "localTimeAccuracy": true,
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "submsg": null,
  "data": {
    "items": [
      {
        "assetId": "yourAssetID1",
        "timestamp": 1587312000000,
        "yourPointId1": 1.1236,
        "localtime": "2020-04-20T00:00:00+08:00"
      },
      {
        "assetId": "yourAssetId1",
        "timestamp": 1587312000000,
        "yourPointId2": 578,
        "localtime": "2020-04-20T00:00:00+08:00"
      }
    ]
  }
}

示例 3


示例 3 查询带有质量位的数据。

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/raw?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetIds",
  "pointIds": "yourPointId1,yourPointId2",
  "startTime": "2020-04-20T00:00:00+08:00",
  "endTime": "2020-04-21T00:00:00+08:00",
  "pageSize": 10,
  "withQuality": true,
  "localTimeAccuracy": false,
  "localTimeFormat": 1,
  "itemFormat": 0
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "submsg": null,
  "data": {
    "items": [
      {
        "assetId": "yourAssetId",
        "timestamp": 1587312000000,
        "yourPointId1": 1.1236,
        "localtime": "2020-04-20T00:00:00+08:00",
        "quality": 0
      },
      {
        "assetId": "yourAssetId",
        "timestamp": 1587312000000,
        "yourPointId2": 578,
        "localtime": "2020-04-20T00:00:00+08:00",
        "quality": 0
      }
    ]
  }
}

示例 4


示例 4 查询原始压缩数据,并返回查询起止时间边界前后的数据。

请求示例


url: https://{apigw-address}/tsdb-service/v2.1/raw?orgId=yourOrgId

method: POST

Content-Type: application/json

requestBody:
{
  "assetIds": "yourAssetIds",
  "pointIds": "yourPointIds",
  "startTime": "2020-08-28T11:33:00+08:00",
  "endTime": "2020-08-28T11:35:00+08:00",
  "boundaryType", "outside"
}

返回示例


{
  "code": 0,
  "msg": "OK",
  "submsg": null,
  "data": {
    "items": [
      {
        "assetId": "yourAssetId",
        "timestamp": 1598585576906,
        "yourPointId": 0.8807087,
        "localtime": "2020-08-28 11:32:56"
      },
      {
        "assetId": "yourAssetId",
        "timestamp": 1598585587039,
        "yourPointId": 0.26798052,
        "localtime": "2020-08-28 11:33:07"
      },
      {
        "assetId": "yourAssetId",
        "timestamp": 1598585597125,
        "yourPointId": 0.65514636,
        "localtime": "2020-08-28 11:33:17"
      },
      {
        "assetId": "yourAssetId",
        "timestamp": 1598585708013,
        "yourPointId": 0.342161,
        "localtime": "2020-08-28 11:35:08"
      }
    ]
  }
}

可选参数结果示例


对于可选参数 boundaryTypeintervalinterpolation,填入不同的可选值,将产生不同的返回数据。下文用表格形式对以下几种情况作简单示例。

若原始数据为:

2021-11-01 00:27:00 677.0 2021-11-01 00:37:00 728.0 2021-11-01 00:47:00 1228.0

查询条件填写 00:35:00 到 00:40:00

boundaryType

interval

interpolation

返回数据

inside

/

/

2021-11-01 00:37:00 728.0

outside

/

/

2021-11-01 00:27:00 677.0
2021-11-01 00:37:00 728.0
2021-11-01 00:47:00 1228.0

interpolated

/

/

2021-11-01 00:35:00 677.0
2021-11-01 00:37:00 728.0
2021-11-01 00:40:00 1228.0

sample

1min

linear

2021-11-01 00:35:00 717.8
2021-11-01 00:36:00 722.9
2021-11-01 00:37:00 728.0
2021-11-01 00:38:00 778.0
2021-11-01 00:39:00 828.0

sample

1min

previous

2021-11-01 00:35:00 677.0
2021-11-01 00:36:00 677.0
2021-11-01 00:37:00 728.0
2021-11-01 00:38:00 728.0
2021-11-01 00:39:00 728.0

sample

1min

after

2021-11-01 00:35:00 728.0
2021-11-01 00:36:00 728.0
2021-11-01 00:37:00 728.0
2021-11-01 00:38:00 1228.0
2021-11-01 00:39:00 1228.0

sample

1min

near

2021-11-01 00:35:00 728.0
2021-11-01 00:36:00 728.0
2021-11-01 00:37:00 728.0
2021-11-01 00:38:00 728.0
2021-11-01 00:39:00 728.0

SDK 示例


你可以在 Github 上获取 TSDB 数据服务的 Java SDK 示例