
3.2 属性
属性定义了元素的可测量特性。它是物理资产行为与 TDengine TSDB 中存储数据之间的桥梁------将原始数值转化为有名称、有类型、有物理单位的工程量。
3.2.1 什么是属性
属性是元素的一个命名特性,用于保存或引用某个值。对于泵元素,属性可能包括流量、出口压力、电机温度和运行状态;对于智能电表,属性可能包括电流、电压、功率和设备 ID。
属性为原始数据赋予了上下文。用户和应用程序无需通过技术字段名查询数据库列,而是可以在清晰的资产层次结构中,通过有意义的属性名来引用数据。
3.2.2 数据引用类型
数据引用类型决定了属性值的来源。共有四种类型:
3.2.2.1 TDengine 指标
引用 TDengine TSDB 表中的指标列(时序测量列)。属性值随新数据写入而实时更新。适用于随时间变化的值,如温度、压力、流量、电流、电压等。
数据引用设置的格式为:
text
连接名/数据库名/表名/列名
示例:TDengine/idmp_sample_utility/em-12/current
如果采集的指标还带有数据质量且与属性值存在同一张表,则数据引用设置还可以带上数据质量列的列名。格式为:
text
连接名/数据库名/表名/列名:质量列名
示例:TDengine/idmp_sample_utility/em-12/current:quality
:::note
质量列的数据类型必须是 INT。
:::
3.2.2.2 TDengine 标签
引用 TDengine TSDB 表中的标签值。标签是附加在表上的静态元数据字段(如设备 ID、位置或安装楼层)。适用于值来源于 TSDB 标签而非时序列的属性。
格式与 TDengine 指标相同:
text
连接名/数据库名/表名/标签名
示例:TDengine/idmp_sample_utility/em-17/location
3.2.2.3 公式
计算型属性,其值由引用同一元素其他属性的表达式推导得出。表达式会被转换为 TDengine SQL 表达式,并在 TDengine TSDB 上执行。输出必须为数值类型。
示例表达式:
text
log(current) * voltage + 10
可使用特殊替换参数 TIME,它会被替换为当前本地时间对应的毫秒数。您可以在表达式编辑器中点击评估 ,在保存前测试并验证公式。完整的表达式编辑器说明请参见 [3.2.9 节](#3.2.9 节)。
:::note
公式属性只能引用同一元素的属性。如需使用其他元素的值,请在当前元素上新增一个属性,使其指向相同的数据源。
:::
3.2.2.4 字符串构建器
与公式类似,但输出为字符串。输入可以是当前元素的任意属性(不限于数值类型)。常用函数包括:
CONCAT(...)--- 拼接多个字符串SUBSTR(str, start, length)--- 截取子字符串CAST(value AS varchar)--- 将非字符串类型转换为字符串
除 TIME 外,字符串构建器还支持更多替换参数,例如当前元素名、当前属性名和模板名。
示例表达式:
text
CONCAT('voltage of device ', ${attributes['Device ID']}, ' is ', CAST(${attributes['Voltage']} AS varchar), 'V')
:::note
不能使用加号拼接字符串,请使用 CONCAT() 函数。CONCAT() 的每个参数都必须是字符串类型,请先使用 CAST() 将数值属性转换为字符串再传入 CONCAT()。
:::
3.2.3 属性特性
每个属性都具有以下可配置特性:
3.2.3.1 基础字段
| 特性 | 说明 |
|---|---|
| 名称 | 属性在其元素内的唯一名称 |
| 描述 | 对该属性所测量或代表内容的可读说明 |
| 类别 | 用于在属性选项卡中对属性进行分组和筛选的一个或多个标签 |
| 值类型 | 值的数据类型:Float、Double、Int、BigInt、TinyInt、SmallInt、Bool、Nchar、Varchar、Timestamp |
| 默认值 | 当数据源无可用数据时返回的值 |
| 计量单位分类 | 物理量类别(如电流、温度、压力)。选择计量单位分类后,默认计量单位和显示计量单位的可用选项会相应筛选。 |
| 默认计量单位 | 属性值存储时使用的单位(如安培、°C、bar) |
| 显示计量单位 | 在面板和仪表板中显示值时使用的单位,可以与默认计量单位不同------IDMP 会自动进行换算。 |
| 显示精度 | 正数表示小数点后显示数字位数,负数代表显示有效数字位数。 |
| 数据引用类型 | 属性值的来源:TDengine 指标、TDengine 标签或无(参见 [3.2.2](#特性 说明 名称 属性在其元素内的唯一名称 描述 对该属性所测量或代表内容的可读说明 类别 用于在属性选项卡中对属性进行分组和筛选的一个或多个标签 值类型 值的数据类型:Float、Double、Int、BigInt、TinyInt、SmallInt、Bool、Nchar、Varchar、Timestamp 默认值 当数据源无可用数据时返回的值 计量单位分类 物理量类别(如电流、温度、压力)。选择计量单位分类后,默认计量单位和显示计量单位的可用选项会相应筛选。 默认计量单位 属性值存储时使用的单位(如安培、°C、bar) 显示计量单位 在面板和仪表板中显示值时使用的单位,可以与默认计量单位不同——IDMP 会自动进行换算。 显示精度 正数表示小数点后显示数字位数,负数代表显示有效数字位数。 数据引用类型 属性值的来源:TDengine 指标、TDengine 标签或无(参见 3.2.2) 数据引用设置 指向 TDengine TSDB 数据源的路径,格式为 连接名/数据库名/表名/列名,可选在列名后追加 :质量列名 指定质量列(例如 连接名/数据库名/表名/值列:质量列) 路径 属性在资产模型中的完整路径(只读,自动生成))) |
| 数据引用设置 | 指向 TDengine TSDB 数据源的路径,格式为 连接名/数据库名/表名/列名,可选在列名后追加 :质量列名 指定质量列(例如 连接名/数据库名/表名/值列:质量列) |
| 路径 | 属性在资产模型中的完整路径(只读,自动生成) |
3.2.3.2 极限值配置
为属性定义运行阈值。每个极限值有名称和数值:
| 极限值 | 含义 |
|---|---|
| 最小值 | 物理上可能或可接受的最低值 |
| 低低限 | 低低报警阈值------严重低值状态 |
| 低限 | 低报警阈值------警告低值状态 |
| 目标值 | 期望的设定点或正常运行值 |
| 高限 | 高报警阈值------警告高值状态 |
| 高高限 | 高高报警阈值------严重高值状态 |
| 最大值 | 物理上可能或可接受的最高值 |
每个极限值还有一个可选的属性字段------您可以将极限值关联到另一个属性而非固定数值,从而实现基于实时状态动态变化的极限值。
3.2.3.3 预测配置
为该属性配置基于 AI 的预测:
| 选项 | 说明 |
|---|---|
| TDgpt | 使用 TDengine 内置的时序预测引擎(TDgpt)预测未来值 |
| 外部 | 通过已配置的端点连接外部预测服务 |
| 无 | 不启用预测(默认) |
3.2.3.4 附加特性
用于存储属性自定义元数据的自由键值对(如仪表标签、校准日期、传感器型号)。点击 + 添加新条目。
3.2.3.5 配置标志
| 标志 | 说明 |
|---|---|
| 常量 | 将该属性标记为常量------其值不随时间变化 |
| 隐藏 | 在默认属性列表中隐藏该属性。隐藏属性仅在启用显示隐藏属性开关时可见。 |
| 不包含 | 将该属性排除在分析和 AI 生成洞察之外 |
3.2.4 浏览属性
查看某个元素的属性:
- 在元素树中选中该元素。
- 在元素详情面板中点击属性选项卡。
属性列表显示:名称、描述、当前值、值类型、数据引用类型、最后更新时间和数据引用设置。
使用类别 下拉框按类别筛选。开启显示隐藏属性可查看标记为隐藏的属性。
点击任意属性名称可打开其详情视图。
3.2.5 创建属性
为元素新增属性:
- 选中元素并点击属性选项卡。
- 点击工具栏中的 + 图标(属性选项卡右上角)。
- 填写属性表单:
- 输入名称 和描述。
- 选择值类型 ,如需要可设置默认值。
- 选择计量单位分类 ,然后选择默认计量单位 和显示计量单位。
- 设置显示精度。
- 选择数据引用类型 并输入数据引用设置路径。
- 可选择展开并配置极限值配置 、预测配置 和附加特性。
- 根据需要设置配置标志(隐藏、不包含)。
- 点击保存。
3.2.6 编辑属性
编辑属性有两种方式:
3.2.6.1 方式一:从属性详情视图编辑
- 点击列表中的属性名称,打开其详情视图。
- 点击工具栏中的编辑图标(铅笔)。
- 修改所需字段后点击保存。
3.2.6.2 方式二:从属性列表的 ⋮ 菜单编辑
- 在属性列表中,点击属性行上的 ⋮ 菜单。
- 选择编辑。
- 修改所需字段后点击保存。
3.2.7 删除属性
删除属性有两种方式:
3.2.7.1 方式一:从属性详情视图删除
- 点击属性名称,打开其详情视图。
- 点击右上角工具栏中的删除图标(垃圾桶)。
- 确认删除。
3.2.7.2 方式二:从属性列表的 ⋮ 菜单删除
- 在属性列表中,点击属性行上的 ⋮ 菜单。
- 选择删除并确认。
:::warning
删除属性会从 TDengine IDMP 中移除其配置及所有关联元数据。TDengine TSDB 中的底层时序数据不受影响。引用了被删除属性的仪表板、分析或事件规则可能停止正常工作,需要相应更新。
:::
3.2.8 其他属性操作
属性列表中的 ⋮ 菜单还提供以下操作:
| 操作 | 说明 |
|---|---|
| 查看 | 打开属性详情视图 |
| 复制 | 复制属性配置。复制的属性可粘贴为同一元素或其他元素上的新属性。 |
| 上移 / 下移 | 在列表中调整属性顺序 |
| 添加数据条目 | TDengine Metric 属性特有操作,手动录入一个测点,录入的数据将插入到属性引用的 TSDB 表中 |
| 添加到趋势图 | 快速将该属性添加到新的趋势图面板 |
| 历史值 | 查看该属性的历史时序数据 |
3.2.9 表达式编辑器
表达式编辑器是 IDMP 中凡需配置表达式的地方都会用到的共用 UI 组件------包括公式和字符串构建器属性定义、分析输出属性,以及分析触发条件(预过滤和事件窗口表达式)。点击表达式输入框时,它会以弹窗形式打开。
3.2.9.1 表达式的使用场景
| 使用位置 | 用途 |
|---|---|
| 公式属性 --- 数据引用设置 | 定义由同一元素其他属性推导而来的计算属性值 |
| 字符串构建器属性 --- 数据引用设置 | 通过字符串函数组合属性值,构建字符串 |
| 分析 --- 输出属性,表达式列 | 每次分析触发时,计算并写入元素或事件属性的结果 |
| 分析 --- 触发条件,预过滤 | 在触发条件评估前过滤数据行 |
| 分析 --- 事件窗口触发,开始/结束条件 | 定义事件窗口的开启和关闭时机 |
3.2.9.2 表达式编辑器布局
弹窗分为三个面板:
属性面板(左侧) --- 浏览并将元素属性插入表达式。属性按以下分组展示:
| 分组 | 内容 |
|---|---|
| 指标 | 时序指标属性(如电流、电压、功率) |
| 标签 | 标签(维度)属性------静态元数据字段 |
| 其他属性 | 元素上定义的其他属性 |
| 替换参数 | 系统级替换值,如 TIME(当前本地时间毫秒数)、当前元素名、属性名和模板名 |
顶部的过滤输入框可按名称搜索。点击属性或参数,将其插入表达式的光标位置。
表达式编辑器(中间) --- 用于编写表达式的代码编辑器。顶部的运算符快捷栏提供常用运算符的一键插入:
text
+ - * / = < > >= <= != <> & |
函数面板(右侧) --- 按类别浏览并插入函数。过滤输入框可按函数名搜索。点击函数名将其插入表达式的光标位置。
3.2.9.3 函数分类
| 分类 | 示例函数 |
|---|---|
| 数学函数 | ABS, CEIL, FLOOR, ROUND, SQRT, LOG, POW, SIN, COS, ... |
| 字符串函数 | CONCAT, LENGTH, LOWER, UPPER, SUBSTR, TRIM, LTRIM, RTRIM, ... |
| 转换函数 | CAST, TO_ISO8601, TO_TIMESTAMP, ... |
| 时间和日期函数 | NOW, TODAY, TIMEZONE, TIMETRUNCATE, ... |
| 聚合函数 | AVG, COUNT, SUM, STDDEV, STDDEV_POP, PERCENTILE, SPREAD, ELAPSED, HISTOGRAM, ... |
| 选择函数 | MAX, MIN, FIRST, LAST, LAST_ROW, TOP, BOTTOM, UNIQUE, MODE, SAMPLE, ... |
| 时序专用函数 | MAVG, DERIVATIVE, DIFF, IRATE, CSUM, INTERP, TWA, STATECOUNT, STATEDURATION, ... |
3.2.9.4 评估表达式
在支持评估的场景(公式和字符串构建器属性定义)中,编辑器中间面板底部会显示评估 按钮和评估结果 区域。点击评估可对元素当前数据运行表达式,在保存前验证结果。
点击弹窗中的保存 应用表达式,点击取消放弃更改。
3.2.10 属性模板 {#属性模板}
属性模板 将一个标准属性------包括名称、数据类型、计量单位和数据引用绑定------定义为元素模板的一部分。从模板创建元素时,所有属性模板会自动实例化,替换字符串会解析为该元素的实际值。
3.2.10.1 创建属性模板
- 在基础库中,打开要添加属性的元素模板。
- 点击模板详情页顶部的属性模板选项卡。
- 点击 + 打开属性模板创建表单。
- 填写属性字段并配置数据引用绑定(见下文)。
3.2.10.2 属性模板字段
| 字段 | 说明 |
|---|---|
| 名称 | 属性名称 |
| 描述 | 可选描述 |
| 配置 | 附加配置标志(如隐藏、常量) |
| 类别 | 类别标签 |
| 值类型 | 数据类型:Float、Int、Varchar、Bool 等 |
| 默认值 | 可选默认值 |
| 默认计量单位 | 存储时使用的计量单位 |
| 显示计量单位 | UI 中显示时使用的计量单位(可与存储单位不同) |
| 显示精度 | UI 中显示的小数位数 |
| 数据引用类型 | 属性与 TDengine TSDB 数据的绑定方式(见下文) |
| 数据引用设置 | 解析后的绑定路径,如 TDengine/idmp_sample_utility/${KEYWORD1}/current |
| 极限值配置 | 可选的高/低报警阈值 |
| 预测配置 | 可选的 TDgpt 预测配置 |
3.2.10.3 数据引用绑定
数据引用类型决定属性如何连接到 TDengine TSDB 中的时序数据:
| 数据引用类型 | 用途 |
|---|---|
| 无 | 无 TSDB 绑定------属性仅保存静态或计算值。 |
| TDengine 指标 | 将属性绑定到 TDengine 超级表中的时序指标列。 |
| TDengine 标签 | 将属性绑定到 TDengine 超级表中的标签列。 |
选择 TDengine 指标 或 TDengine 标签 后,通过指定 TDengine 连接、数据库、子表名(使用 ${KEYWORD1} 等替换字符串,使每个元素绑定到各自的表)和列名来配置绑定。数据引用设置的形式为:
text
TDengine/<数据库名>/${KEYWORD1}/<列名>
点击检查可验证绑定是否能正确解析。
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。