元数据转换器
metadataTransform
组件:元数据转换器。使用 expr (opens new window) 表达式引擎对消息元数据进行灵活转换和处理,支持创建新的元数据或更新现有元数据。
# 配置
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
mapping | map | 元数据转换表达式映射表,格式为 {字段名: 转换表达式} | 无 |
isNew | bool | 是否创建新的元数据列表。true表示创建新列表,false表示更新现有元数据的对应字段 | false |
支持的变量:
id
- 消息IDts
- 消息时间戳data
- 原始消息内容msg
- 消息体对象(JSON类型时可用msg.field访问字段)metadata
- 消息元数据对象type
- 消息类型dataType
- 数据类型
表达式示例:
upper(msg.name)
- 转换设备名称为大写metadata.productType
- 获取产品类型msg.temperature + 50
- 温度值加50replace(metadata.productType, 'old', 'new')
- 替换产品类型中的文本msg.humidity > 80 ? 'High' : 'Normal'
- 根据湿度判断状态format("%s-%s", msg.type, metadata.version)
- 格式化字符串len(metadata.tags) > 0
- 检查标签是否存在
更多expr表达式语法参考:expr (opens new window)
# Relation Type
- Success: 转换执行成功,消息发送到
Success
链路 - Failure: 以下情况消息发送到
Failure
链路:- 表达式语法错误
- 表达式执行异常
- 变量不存在或类型错误
# 执行结果
组件会根据配置执行元数据转换:
- 当isNew=true时,创建全新的元数据列表
- 当isNew=false时,仅更新mapping中指定的元数据字段
- 转换后的元数据会随消息一起传递给下一个节点
# 配置示例
{
"id": "s1",
"type": "metadataTransform",
"name": "元数据转换",
"configuration": {
"mapping": {
"name": "upper(msg.name)",
"tmp": "msg.temperature",
"alarm": "msg.temperature>50",
"productType": "metaData.productType"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/12/22, 03:38:12