跳到主要内容

数据导入导出

整个数据模型的导出导出功能还在开发中,预计将于 2025 年 9 月底发布。

对于已经在使用 TDengine TSDB 的用户,IDMP 现在支持将 TDengine TSDB 的元数据导入,直接创建数据模型。它提供两种方式,下面做一介绍。

TDengine TSDB 数据导入 (Data Import)

TDengine TSDB 设计之初就考虑了静态标签与动态时序数据的区别,并且静态标签支持树状结构,层级之间用“."进行分割。不仅如此,TDengine 设计了超级表,为同一类型设备建立一个模板,即超级表,一个超级表有多个实例子表。这个设计与 IDMP 的树状建模、元素模板完全对应,因此如果在 TDengine TSDB 里已经有很好的数据建模,数据导入将极为简单。

TSDB 里的一张超级表对应 IDMP 里一个元素模板,TSDB 里的一超级表的子表对应 IDMP 里某个元素模板的一个元素实例,子表名就是元素名,子表的标签值被映射为元素的静态属性(数据引用为 TDengine Tag),子表的时序数据被映射为元素的动态数据(数据引用为 TDengine Metric),子表的树状结构标签(比如地理位置标签 Location)直接作为元素的树状结构路径。有了这样的对应关系,将 TSDB 里的元数据导入到 IDMP 十分容易。

导入步骤如下:

  1. 管理后台,创建到 TDengine TSDB 的连接。
  2. 在连接的列表页,或左侧树状结构的列表,点击三个点菜单,选择数据导入
  3. 页面的上方下拉框里将显示该连接里的数据库,选择一个数据库后,右侧的下拉框将显示该库拥有的超级表。
  4. 需要对每张超级表进行配置。如果不准备导入某张超级表,在右上角可以选择忽略。如果要导入,则继续:
    • 系统列出该超级表的标签列表,选择其中一个标签作为树状结构的路径。如果有多个标签可以作为树状结构的路径,您也可以多选,这样一个元素就会出现在多个树状结构里。没有选择作为路径的标签,您可以选择将其设置为元素的静态属性。您也可以不做任何设置,扔弃某个标签值。
    • 系统列出该超级表的时序数据列表,您可以选择导入或不导入。如果导入,将成为元素的动态属性。
    • 元素属性的名字缺省就是 TSDB 里的列的名字,但您可以重新命名。
  5. 配置完一个超级表,点下一个。配置完所有超级表,点击动作区的完成图标,或下方的完成按钮,数据导入任务就正式创建。您也可以随时点击完成,接受系统的缺省配置,立即导入。
  6. 系统会弹框显示导入进度。结束后,会显示多少元素模板、多少元素被创建等统计数字。

自动同步:导入任务完成后,IDMP 会监听 TDengine TSDB 元数据的变化。对于配置好的超级表,如果超级表里新增或删除了子表,IDMP 将自动同步。

重新设置:如果 TSDB 里新增了超级表或者想将以前忽略的超级表添加进来,您可以点击Rebuild 重新设置。老的设置将被加载进来,但您可以修改。

数据情景化:在数据导入后,如果可能,您需要 Enrich data, 做更多的数据情景化的工作,比如给每个元素加上物理单位、类别、描述信息、极限值等,给非叶子节点添加属性、类别、描述信息等,给数据赋予业务语义,让自己的数据平台 AI-Ready,让 AI 能更好的推荐面板、实时分析,发挥作用。

TDengine TSDB 资产模型 (Asset Model)

如果数据已经写入 TSDB, 但并没有很好的建模,比如没有树状结构的标签,虽然一个设备有多个采集量,但采用的是单列模型等。这个时候,就不能直接将 TDengine TSDB 的数据直接导入了。IDMP 提供了一种灵活,但需要复杂配置的方式,让您将多个超级表汇聚到一个元素模板,并通过字符串构建 (string builder)、命名模式 (naming pattern) 等构建出树状结构。它能完美的解决单列模型建模的问题,让 OT 域的数据(比如 PLC 采集的数据)在 IT 域得以更好的结构化呈现,具有业务语义,便于获取业务洞察。

在这个场景下,您需要先创建好元素模板,定义好元素的属性。一张超级表只有一个元素模板里部分属性,TSDB 里的一张子表只有一个元素的一部分属性,因此 IDMP 会在内部自动创建虚拟超级表和虚拟表,将多个子表组装成一个虚拟表,将多个超级表组装成一个超级虚拟表,但这个过程对用户来讲是透明的。 整个数据导入流程是选择数据库、超级表,然后选择元素模板,配置元素名称与元素路径,然后将超级表里的标签与时序数据映射到元素模板的属性。

具体步骤如下:

  1. 管理后台,创建到 TDengine TSDB 的连接。
  2. 在连接的列表页,或左侧树状结构的列表,点击三个点菜单,选择资产模型(Asset Model)。
  3. 页面的上方下拉框里将显示该连接里的数据库,选择一个数据库后,右侧的下拉框将显示该库拥有的超级表。
  4. 选择元素模板
  5. 配置元素名称,点击+,可以看到可使用的替换字符串,比如子表的标签值,您可以对字符串进行组装,植入固定的字符串、前缀、后缀等。点击预览(Preview)可以查看拼装出的元素名称,确认是否正确
  6. 配置元素路径,点击+,可以看到可使用的替换字符串,比如子表的标签值,您可以对字符串进行组装,植入固定的字符串、前缀、后缀等。点击预览(Preview)可以查看拼装出的路径名称,确认是否正确。
  7. 映射标签值,可以将超级表的标签映射到元素的属性,也可以选择无,不映射
  8. 映射指标值,可以将超级表的时序数据映射到元素的属性,也可以选择无,不映射
  9. 设定子表过滤条件,因为不是超级表下的所有子表都会映射到一个元素模板的。比如对于单点模型,有的用户使用数据类型创建超级表,同一超级表下的子表可能来自不同类型的设备,这个时候需要通过子表的标签值来做区分进行过滤。
  10. 点击完成,系统就会创建导入任务。

上述步骤只是完成了一个超级表,甚至只是一个超级表的部分指标的映射配置工作。对于完整的导入,需要创建多个资产模型。极端情况,对于单列模型,如果每个设备类型有 100 个属性,有 10 个不同类型的设备,那么就要创建 100 *10 个资产模型。这个工作量是很大的。今后的版本,将支持用 CSV 编辑资产模型,上传,批量创建。

自动同步:上述资产模型创建后,如果 TSDB 里新增了子表,它将自动同步到 IDMP,不用人的干预

新增超级表:资产模型创建后,如果 TSDB 里新增了超级表,需要添加新的资产模型,否则新的超级表里的元数据无法导入到 IDMP, 新的数据资产无法在 IDMP 里呈现。