首页 > 解决方案 > 提取分隔符之间的字符串并填充到列中

问题描述

我有一个包含以下数据的源表:

columndata list
abc        Paul;Michael;Benjamin;Latif
def        High;Medium;Low;NULL
ghi        Yes;No;Yes;No

我想在目标表中获得输出(列已定义),如下所示:

abc      def    ghi  (column names)
Paul     High   Yes
Michael  Medium No
Benjamin Low    Yes
Latif    NULL   No

有什么简单的方法可以提取分隔数据并加载到目标表中的相应列中谢谢!

标签: mysqltalend

解决方案


您可以通过使用tNormalize和来实现这一点tPivotToColumnsDelimited

在此处输入图像描述

tNormalize将列表分解为单个元素:

在此处输入图像描述

选择要规范化的列(值列表)及其分隔符。该组件的输出如下所示:

|=--+-------=|
|col|values  |
|=--+-------=|
|abc|Paul    |
|abc|Michael |
|abc|Benjamin|
|abc|Latif   |
|def|High    |
|def|Medium  |
|def|Low     |
|def|NULL    |
|ghi|Yes     |
|ghi|No      |
|ghi|Yes     |
|ghi|No      |
'---+--------'

接下来,在 tMap 中,为每个字段分配一个位置,以便构造目标行(我们需要知道第一行在 abc 列中包含“Paul”,在 def 列中包含“High”,在 ghi 列中包含“Yes”..等)我使用这个序列:

Numeric.sequence("seq_" + row4.col, 1, 1)

在此处输入图像描述

这将重置每个新列的序列。

最后,tPivotToColumnsDelimited将透视数据: 在此处输入图像描述

然后读取生成的文件tPivotToColumnsDelimited并将其加载到目标表中。


推荐阅读