我在一个数据仓库项目中工作,其中有很多源创建平面文件作为源,我们正在使用 SSIS 将它们加载到我们的暂存表中,我们目前正在使用平面文件源组件。
但是,一段时间后,我们需要在其中一个文件中添加一个额外的列,并且从文件规范更改的日期开始添加该额外的列。这个练习经常发生,随着时间的推移积累了很多版本。
根据我可以在这里和互联网上找到的答案,处理这种情况的商定方法似乎是在此版本的新单独数据流中设置新的平面文件源,以保持 ETL 过程的可重新运行性对于旧文件。此处概述了方法,例如:SSIS pkg with flat-file connection with less columns will fail
在我们的特定设置中,附加列始终是附加列(从不删除旧列),并且由于逻辑原因,如果我们在其单独的数据流中保持旧文件的可重新运行性,则新列不能是强制性的。
我不认为创建重复数据流一遍又一遍地处理同一组列的方法对于我们的数据仓库项目来说是一个很好的答案,我更喜欢采用最后一个文件版本并拥有的源组件能够将列标记为“非强制性”并在缺失时提供空值。
是否有人知道 SSIS 平面文件组件在处理旧文件版本方面更灵活或有更好的解决方案来解决这个问题?我假设这样的组件需要在命名列的基础上处理文件,而不是现有的从左到右的方法?
欢迎任何想法或建议!