Lookup Mapping


Lookup Mapping 节点将输入 msg 中的 key 与映射文件中的 key 建立映射关系,并将指定的数据输出到输出 msg。


如需聚合输出多个映射结果,CSV 文件中必须添加 dataType 列,且指定一个输入 msg 中需要聚合的 key。映射成功后,该 key 对应的 dataType 若为 array 且泛型相同,则其 value 将聚合为数组,并输出到输出 msg。此时其他未指定的值将不输出。


备注

该节点只建立映射关系,后续的标准设备测点的结构,需要用其他节点来封装,如 Template 节点。

节点类型


EnOS。

输入和输出能力


该节点具有 1 个入口点和 1 个出口点。输入和输出都是 JSON 格式。

节点属性


../../_images/lookup_mapping.png


名称

该节点的名称。


映射文件

上传 CSV 映射文件,文件中包含输入 msg 中的待映射 key,以及其他需要输出的 Key。你可以选择 下载模板 template 下载模板使用。填写文件后,选择 上传 upload 上传文件,或者选择 下载 download 下载已上传的文件。


映射结果

基于映射文件,下拉选择 CSV 文件中的 Key 作为输出的映射结果,可以多选。


若需聚合多个映射结果,CSV 文件里必须添加 dataType 列。支持的 dataType 值如下。

  • number:数字类型

  • string:文本类型

  • array<number>:数字组成的数组类型

  • array<string>:文本字符串组成的数组类型

  • boolean:布尔类型

映射成功后,映射 Value 中的值若符合以下条件,将聚合为一个数组输出:

  • 映射关系相同。

  • 指定的 dataTypearray 类型,且泛型相同。

更多信息,参见 示例 3


映射 Key

基于映射文件,下拉选择 CSV 文件中的 Key 作为映射 Key,可以多选。


映射 Value

使用表达式指定一个输入 msg 中的 key,例如 ${msg.key}

映射成功后,如果映射关系相同且指定的 dataTypearray 且泛型相同,该 key 对应的值将聚合为一个数组,展示在输出 msg 中。此时未指定的数据将不会出现在输出 msg 中,参见 示例 5

如不填,输入 msg 中的数据将全部输出到输出 msg,参见 示例 1


描述

该节点的描述。

使用限制

  • 映射文件最大支持 15 万条数据。

  • 最大映射文件大小:16M

  • 仅支持 CSV 文件。

  • 映射 Value 只能指定一个 key。

  • 一个集成流中不能部署超过 5 个该节点。

示例

下面的示例基于具有以下数据的 CSV 文件。

Key1

Key2

Key3

dataType

AI000001

1KaobBq4I

AO-BOOL-ARRAY

array<string>

AI000001

2KaobBq4I

AO-BOOL-STRING

string

AI000001

3KaobBq4I

AO-BOOL-STRING2

string

AI000001

4KaobBq4I

AO-BOOL-ARRAY

array<string>

AI000002

1KaobBq4I

AO-BOOL-ARRAY

array<string>

AI000002

6KaobBq4I

AO-BOOL-STRING

string

AI000003

7KaobBq4I

AO-BOOL-ARRAY

array<string>

AI000004

8KaobBq4I

AO-BOOL-FLOAT

number

输入与输出示例

示例 1

映射结果: Key2, Key3

映射 Key: Key1

输入
[
  {
    "Key1": "AI000003", //Key1 是作为映射的 Key
    "value": "88",
    "color": "blue",
    "type": "circle",
  }
]
输出
[
  {
    "Key1": "AI000003",
    "value": "88",
    "color": "blue",
    "type": "circle",
    "Key2": "7KaobBq4I",
    "Key3": "AO-BOOL-ARRAY"
  }
]

示例 2

映射结果: Key3

映射 Key: Key1, Key2

输入
[
  {
    "Key1": "AI000004", //Key1 和 Key2 是作为映射的 Key
    "Key2": "8KaobBq4I",
    "value": "77"
  }
]
输出
[
  {
    "Key1": "AI000004",
    "Key2": "8KaobBq4I",
    "value": "77",
    "Key3": "AO-BOOL-FLOAT"
  }
]

示例 3

映射结果: Key2, Key3

映射 Key: Key1

映射 Value: ${msg.value}

输入
[
  {
    "Key1": "AI000001",
    "value": "5"
  },
  {
    "Key1": "AI000002",
    "value": "6"
  }
]
输出
[
  {
    "Key2": "6KaobBq4I",
    "Key1": "AI000002",
    "value": "6",
    "Key3": "AO-BOOL-STRING"
  },
  {
    "Key2": "2KaobBq4I",
    "Key1": "AI000001",
    "value": "5",
    "Key3": "AO-BOOL-STRING"
  },
  {
    "Key2": "3KaobBq4I",
    "Key1": "AI000001",
    "value": "5",
    "Key3": "AO-BOOL-STRING2"
  },
  {
    "Key2": "4KaobBq4I",
    "value": [
      "5"
    ],
    "Key3": "AO-BOOL-FLOAT"
  },
  {
    "Key2": "1KaobBq4I",
    "value": [
      "6",
      "5"
    ],
    "Key3": "AO-BOOL-ARRAY"
  }
]

示例 4

映射结果: Key2,Key3

映射 Key: Key1

输入
[
  {
    "Key1": "AI000001",
    "value": "18"
  }
]
输出
[
  {
    "Key2": "1KaobBq4I",
    "Key1": "AI000001",
    "value": "18",
    "Key3": "AO-BOOL-ARRAY"
  },
  {
    "Key2": "2KaobBq4I",
    "Key1": "AI000001",
    "value": "18",
    "Key3": "AO-BOOL-STRING"
  },
  {
    "Key2": "3KaobBq4I",
    "Key1": "AI000001",
    "value": "18",
    "Key3": "AO-BOOL-STRING2"
  },
  {
    "Key2": "4KaobBq4I",
    "Key1": "AI000001",
    "value": "18",
    "Key3": "AO-BOOL-ARRAY"
  }
]

示例 5

映射结果: Key2,Key3

映射 Key: Key1

映射 Value: ${msg.color}

输入
[
  {
    "Key1": "AI000003",
    "value": "7",
    "color": "blue",
    "type": "circle"
  }
]
输出
[
  {
      "Key2": "7KaobBq4I",
      "color": [
        "blue"
      ],
      "Key3": "AO-BOOL-ARRAY"
    }
]