【发布时间】:2018-01-15 23:26:09
【问题描述】:
场景:
我有一个维护交易数据的源。他们有大约 900 列,并且根据新业务的要求,他们添加了额外的列。
我们是一个 BI 团队,我们只提取报告所需的大约 200 列。但是当新业务启动/需要新分析时,有时用户会找我们并要求我们从源中提取额外的列。
当前设计:
我们还为未来的列创建了一个包含额外列的表。 我们正在维护一个 400 列的表,其中包含未来的列名,如 str_01、str_02....、numer_01、numer_02...date_01、date_02...等。
我们有一个映射表,它映射表中的列和源表中的列。使用这个映射表,我们从源中提取数据。
问题:
最近,我们的表已达到 400 列的限制,我们将无法加入任何新列。我们可以实施的一种方法是修改表以将列增加到 500(或 600),但我正在寻找其他解决方案,了解如何为这些场景实施 ETL/设计表结构。
【问题讨论】:
-
Redshift 标准限制为 1600 列和 400 个排序键列。您的每个列都必须是排序键是否有原因?仅对代表所需“行”的必要复合键的列进行排序。另一种选择是切换到非规范化和无模式的不同架构 (NoSQL)。 EMR 支持 Cassandra 和 HBase。
-
@cowbert ,400 列限制,我的意思是我们已经用尽了我们为将来使用而创建的所有额外列。它们不是排序键的一部分。我们的排序键是用户过滤的日期列。我也对 NoSQL 持开放态度,但除此之外我们还需要一个报告解决方案。不确定 NoSQL 是否支持报告解决方案。
标签: python amazon-redshift etl emr amazon-emr