ETL用于频繁更改的表结构

时间:2018-01-15 23:26:09

标签: python amazon-redshift etl emr amazon-emr

方案

我有一个维护交易数据的来源。它们有大约900个列,并根据新业务的要求,添加了其他列。

我们是一个BI团队,我们只提取了大约200个报告所需的列。但是当新业务启动/需要新的分析时,有时用户会联系我们并要求我们从源中提取额外的列。

当前设计:

我们还为未来的列创建了一个包含额外列的表。 我们正在维护一个400列表,其中包含未来的列名,如str_01,str_02 ....,numer_01,numer_02 ... date_01,date_02 ......等。

我们有一个映射表,用于映射表中的列和Source表中的列。使用此映射表,我们从源中提取数据。

问题:

最近,我们已达到表格的400列限制,我们无法登上任何新列。我们可以实现的一种方法是修改表以将列增加到500(或600),但我正在寻找关于如何为这些场景实现ETL /设计表结构的其他解决方案。

1 个答案:

答案 0 :(得分:1)

我认为您的其他列是度量,而不是维度。因此,您可以将维度保留在各个列中,并将它们包含在排序键中,并将度量存储在JSON中,并在需要时访问它们。此外,如果您可以区分常用的度量与偶尔的度量,您可以将常用的度量存储在列中,偶尔存储在JSON中。 Redshift本身支持在给定键的情况下提取值,并且您还可以设置Python UDF以进行更复杂的处理。