提取定界符之间的字符串并填充到列中

问题描述 投票:0回答:1

我有一个源表,其数据类似:

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

是否有任何简单的方法可以提取定界数据并将其加载到目标表的相应列中谢谢!

mysql talend
1个回答
0
投票

您可以通过使用tNormalizetPivotToColumnsDelimited来实现。

enter image description here

tNormalize会将列表分为多个元素:

enter image description here

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

|=--+-------=|
|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)

enter image description here

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

最后,tPivotToColumnsDelimited将旋转数据:enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.