如何在 Talend 中使用不断变化的模式来处理文件输入
How to handle file inputs with changing schemas in Talend
问题:如何继续处理与基本模式有很大不同并触发 tSchemaComplianceCheck 错误的文件?
背景
假设我有一个名为 file1,file2,....file1000
的包含客户 xls 文件的文件夹。假设我已将文件架构导入 Talend 存储库并将其命名为 6Columns
并且我将 talend 作业配置为遍历每个文件并处理它们
1-tFileInput ->2-tSchemaCompliance-6Columns -> 3-tMap ->4-FurtherProcessing
- 读取每个 excel 文件
- 将其与架构进行比较
6Columns
- 格式化输出(重命名列)
- 收集客户数据并对其进行更多处理
在处理过程中,我注意到架构合规性正在生成错误 (errorCode 16
),它指向许多具有不同架构 13Columns
的文件 (200),但没有办法预先识别文件以过滤然后进入子作业
我如何修改我的处理以正确地将文件与 13Columns
架构集成到流程中(推荐的处理方式是什么)和设计以防发生其他架构更改
1-tFileInput ->2-tSchemaCompliance-6Columns -> 3-tMap ->4-FurtherProcessing
|
|Reject Flow (ErrorCode 16)
|Schema-13Columns
|
|-> ??
检测到 ErrorCode 16
时的当前想法
选项 1 并行。获取当前文件的文件路径,并在将 2 个流合并回 1 个
之前,使用新的 FileInput 针对 13Columns
对其进行处理
选项 2 序列号。收集触发错误的文件列表并在我完成合规性文件后处理它们?
您可以尝试以下操作:
tFileList - 读取您的输入存储库
tFileInput "schema6" - tSchemaComplianceCheck : 将文件读取为 6 列架构
tMap_1 : 进一步处理
拒绝部分:
tMap after reject link : 添加一个包含已被拒绝的文件路径的新列
tFlowToIterate :用于获取迭代 link,随后的 tFileInputDelimited 的可接受输入。
tFileInput :将数据读取为 13 列架构。以下组件与第 1 部分相同。
之后,您可以将数据推送到 tHashOutput,以便在另一个子作业中进一步读取它们。
问题:如何继续处理与基本模式有很大不同并触发 tSchemaComplianceCheck 错误的文件?
背景
假设我有一个名为 file1,file2,....file1000
的包含客户 xls 文件的文件夹。假设我已将文件架构导入 Talend 存储库并将其命名为 6Columns
并且我将 talend 作业配置为遍历每个文件并处理它们
1-tFileInput ->2-tSchemaCompliance-6Columns -> 3-tMap ->4-FurtherProcessing
- 读取每个 excel 文件
- 将其与架构进行比较
6Columns
- 格式化输出(重命名列)
- 收集客户数据并对其进行更多处理
在处理过程中,我注意到架构合规性正在生成错误 (errorCode 16
),它指向许多具有不同架构 13Columns
的文件 (200),但没有办法预先识别文件以过滤然后进入子作业
我如何修改我的处理以正确地将文件与 13Columns
架构集成到流程中(推荐的处理方式是什么)和设计以防发生其他架构更改
1-tFileInput ->2-tSchemaCompliance-6Columns -> 3-tMap ->4-FurtherProcessing
|
|Reject Flow (ErrorCode 16)
|Schema-13Columns
|
|-> ??
检测到 ErrorCode 16
时的当前想法
选项 1 并行。获取当前文件的文件路径,并在将 2 个流合并回 1 个
之前,使用新的 FileInput 针对13Columns
对其进行处理
选项 2 序列号。收集触发错误的文件列表并在我完成合规性文件后处理它们?
您可以尝试以下操作:
tFileList - 读取您的输入存储库 tFileInput "schema6" - tSchemaComplianceCheck : 将文件读取为 6 列架构 tMap_1 : 进一步处理
拒绝部分:
tMap after reject link : 添加一个包含已被拒绝的文件路径的新列
tFlowToIterate :用于获取迭代 link,随后的 tFileInputDelimited 的可接受输入。 tFileInput :将数据读取为 13 列架构。以下组件与第 1 部分相同。
之后,您可以将数据推送到 tHashOutput,以便在另一个子作业中进一步读取它们。