Redshift 中的维度建模和 ETL

Dimensional Modeling and ETL in Redshift

我一直在研究 Amazon 的 Redshift 数据库作为我们数据仓库未来可能的替代品。我的经验一直是使用维度建模和 Ralph Kimball 的方法,所以看到 Redshift 不支持自动递增列的串行数据类型等功能时有点奇怪。

但是,AWS 大数据博客中的这篇最新博客 post 介绍了如何针对星型模式优化 Redshift: https://blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas-and-Interleaved-Sorting-on-Amazon-Redshift

我的问题是关于在 Redshift 中加载星型模式的最佳做法是什么?我在 Redshift 的任何文档中都找不到这个答案。

我倾向于将我的文件从 S3 导入暂存表,然后使用 SQL 进行转换,例如在插入目标表之前进行查找和生成代理键。

这是其他人目前正在做的吗?是否有物有所值的 ETL 工具来简化此操作?

这是我使用的最佳实践:

  1. 将事件源的原始数据加载到table。
  2. 以 DWH 事实 table.
  3. 的格式将业务逻辑应用到阶段 table
  4. 通过运行 minus staging 中不同值的命令减去维度table.
  5. 找到新的维度值
  6. 在维度 table 中创建新行以使用事实数据或默认值实现参照完整性。
    1. 将暂存中的行添加到 DWH 事实 table。

在不同的过程中,如果有来自另一个来源的附加属性到维度 table,我是 运行 通过加载到 table 的更新插入过程,然后执行并使用 join 进行更新,然后仅插入新行。

性能思维 - 只要您可以在 redshift 中或之前在 EMR 或类似工具上执行此操作,那么如果您尝试使用 ETL 工具执行此操作会更好,该工具会在 Redshift 中生成大量插入命令。