我有一个源表,其数据类似:
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
是否有任何简单的方法可以提取定界数据并将其加载到目标表的相应列中谢谢!
您可以通过使用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
生成的文件并将其加载到目标表中。