在处理历史数据聚合并向ETL添加一些新数据点时,我很难找到更新ETL框架的正确过程
假设我们公司有ETL管道,并且我们正在从第三方数据库中提取date
,col_a
,col_b
和col_c
。我们提取在那里的所有行。我们还将暂存副本保存在S3或类似文件中,以备将来使用,以防万一我们需要从那里还原或用于以后的研究目的。
我们对其进行验证和转换,最后将其加载到汇总的数据库中,因此我们每天,每周和每月进行汇总(求和,平均等)。 我们可以以带dateRange列的一个表结束,也可以以多个表存储此聚合结束(尽管这在问题中无关紧要)。
此ETL每天运行一次,并对远程源中新发现的数据进行ETL。
稍后(几周后),我们看到我们需要从源中提取另一列col_foo
,因此我们需要提取,转换和加载此新数据点;最后,我们不仅要对新列进行汇总,而且还要对先前加载的数据/行进行汇总,因为我们想在先前汇总的行中显示此被遗忘的数据点。
假设它是SQL数据库,那么更新/更新数据库中所有先前行的最佳/最干净方法是什么?我们是否应该创建一个新的独立T作业来处理所有这些新数据?或将ETL用作此新数据点的最佳做法是什么?我几乎没有找到有关如何以干净的方式处理ETL更新的文档。
此外,我们如何在不重新导出所有内容的情况下更新S3数据?正如我在某些地方阅读的那样,建议仅提取所需的列,尽管其他一些建议从表中提取所有内容...我的想法是也许将其存储在某个相邻文件中,然后执行每当我们到T时,都在本地加入,但这看起来很肮脏。