0

我是信息学新手,我创建了一个映射,该映射使用表达式和排序器转换将多个文件加载到一个具有 2 列的文件中

1 data
2 seq number

所有 10 个文件都有随机序列号 例如:file1

erfef 3
abcdn 1

文件 2

wewewr 4
wderfv 5

依此类推,直到 10 个文件。

表达式转换代码为:

INTEGER(LTRIM(RTRIM(seq_num)),TRUE)

我想要的是将文件加载到一个大文件中并根据序列号对其进行排序。

在输出文件中获取数据,但序列号不正确。

如何在最终表中获取具有正确序列号的数据。

完全按照以下解决方案中的说明进行操作,但仍然得到错误的输出。得到如下输出:

erfef 3
abcdn 1                                                                                                                                            
wewewr 4
wderfv 5

它应该如下所示:

                                                                       where as it should be like 

abcdn 1                                                                                                                                
erfef  3                                                                                                                          
wewewr 4  
wderfv 5

提前致谢 !!!

4

2 回答 2

1

使用使用文件列表的间接文件加载将所有文件一起加载。然后在 col2 上使用 sorter 对数据进行排序。最后使用一个目标文件来存储数据。

整个映射应该是这样的 -

SQ --> EXP--> SRT(key = col2) --> Target

有几点需要注意——

  • 在会话中,使用indirect file并使用列表文件名 - 提及filelist1.txt
  • 在会话前命令任务中使用ls -1 file* >filelist1.txt以创建包含所有必需文件的文件列表。
  • 表达式转换 - 如果 col2 在 SQ 中作为字符串出现,则将其转换为 INTEGER。
  • 排序器转换 - 使用 col2 作为键列。
于 2022-03-01T14:22:19.503 回答
0

使用indirect文件源是一种方法。

另一种方法是command用作源并指定一个将从所有文件中吐出数据的命令,例如cat file*.csv.

只需更改Input TypetoCommand并提供命令 - 所有这些都可以通过编辑来设置session -> mapping tab -> Source -> properties

这是一个示例会话:

在此处输入图像描述

于 2022-03-03T18:55:30.063 回答