本文描述在Entities Table表中定义数据源后,在部件中获得的数据,并对数据结构进行解释。这代表了最新值部件的数据结构。
数据源定义
提取用户直接相关的资产或设备,并增加获取每个实体的类型字段。

部件数据
按所设置的别名,部件的self.ctx.data会获得一个数组,每个子项表示获取的一个资产或设备。如下是其中一条子项的结构
javascript
{
"datasource": {
"type": "entity",
"name": "午羊科技",
"entityAliasId": "38b298f6-87a5-3d54-935b-80390bca1a95",
"dataKeys": [
{
"name": "type",
"type": "entityField",
"label": "类型",
"color": "#2196f3",
"settings": {
},
"_hash": 0.41103952066475935,
"hidden": false,
"inLegend": true,
"pattern": "类型"
}
],
"alarmFilterConfig": {
"statusList": [
"ACTIVE"
]
},
"aliasName": "用户的直接",
"entityFilter": {
"type": "relationsQuery",
"resolveMultiple": true,
"rootStateEntity": false,
"stateEntityParamName": null,
"defaultStateEntity": null,
"rootEntity": {
"entityType": "USER",
"id": "ced2ae20-679f-11f0-a3ef-fd437db78ef1"
},
"direction": "FROM",
"maxLevel": 1,
"fetchLastLevelOnly": false,
"filters": [
{
"relationType": "Contains",
"entityTypes": [
"ASSET"
]
},
{
"relationType": "Manages",
"entityTypes": [
"ASSET"
]
}
]
},
"pageLink": {
"pageSize": 1024,
"page": 0,
"sortOrder": {
"key": {
"type": "ENTITY_FIELD",
"key": "createdTime"
},
"direction": "DESC"
}
},
"dataReceived": true,
"entity": {
"id": {
"entityType": "ASSET",
"id": "b78f3120-8c5c-11f0-87b9-7908c6298307"
},
"label": "",
"name": "午羊科技"
},
"entityId": "b78f3120-8c5c-11f0-87b9-7908c6298307",
"entityType": "ASSET",
"entityName": "午羊科技",
"entityLabel": "",
"entityDescription": "",
"generated": false
},
"dataKey": {
"name": "type",
"type": "entityField",
"label": "类型",
"color": "#2196f3",
"settings": {
},
"_hash": 0.41103952066475935,
"hidden": false,
"inLegend": true,
"pattern": "类型"
},
"data": [
[
1761784842450,
"组织",
[
1761784842450,
1761784842450
]
]
]
}
结构分析
在 ThingsBoard 的self.ctx.data结构中,这条数据主要描述了与 "午羊科技" 资产相关的数据源配置及具体数据,核心存储结构和关键信息如下:
- 顶层核心字段
- datasource:数据源配置(最关键的结构),包含数据来源的实体、过滤规则、查询参数等。
- dataKey:数据键配置,定义了当前获取的具体字段信息。
- data:实际的业务数据,包含时间戳和对应的值。
- datasource 核心子结构
描述数据的来源实体、过滤逻辑、查询范围等,是 ThingsBoard 中数据关联的核心配置:
| 子字段 | 含义说明 |
|---|---|
| type | 数据源类型,此处为"entity",表示数据来自 ThingsBoard 的实体(如资产、设备等)。 |
| name | 实体名称,此处为"午羊科技"(对应资产的名称)。 |
| entityAliasId | 实体别名 ID,用于在仪表盘等配置中关联该实体的唯一标识。 |
| entityId / entityType | 实体 ID 和类型,此处entityType为"ASSET"(资产),entityId是该资产的唯一 ID。 |
| entityFilter | 实体过滤规则,用于筛选符合条件的实体。 |
| pageLink | 分页和排序配置。 |
| dataKeys | 要获取的实体字段列表,此处只配置了"type"字段(对应dataKey的信息)。 |
| dataReceived | 数据接收状态,true表示已成功获取数据。 |
- dataKey 结构
定义当前获取的具体字段信息,与datasource.dataKeys中的配置一致:
- name: "type":字段名称(实体的 "类型" 字段)。
- type: "entityField":字段类型,表示是实体本身的属性字段(非遥测、属性等其他类型)。
- label: "类型":显示标签(前端展示用)。
- 其他字段(color、hidden等):前端展示相关的配置(颜色、是否隐藏等)。
- data 结构
实际业务数据,格式为二维数组,具体参见ThingsBoard部件数据为什么是数组
示例:[[1761784842450, "组织", [1761784842450, 1761784842450]]]
- 第一个元素 1761784842450:时间戳(毫秒级,对应具体时间点)。
- 第二个元素 "组织":字段值(即type字段的实际值,表示该资产类型为 "组织")。
- 第三个元素 [时间戳, 时间戳]:数据的有效时间范围(此处开始和结束时间相同,可能表示瞬时值)。
总结
该结构的核心是通过datasource定义数据来源(基于实体关系过滤的资产),通过dataKey指定要获取的字段,最终在data中存储该字段的时间戳和值。这种结构体现了 ThingsBoard 中 "实体 - 关系 - 数据" 的关联模式,常用于仪表盘、规则链等场景中数据的查询和展示。