Redshift Spectrum 使用两个日期字段对表进行分区

Posted

技术标签:

【中文标题】Redshift Spectrum 使用两个日期字段对表进行分区【英文标题】:Redshift Spectrum partitioning a table using two date fields 【发布时间】:2017-10-06 21:36:44 【问题描述】:

我一直在寻找按日期创建分区的最佳实践,使用amazon-redshift-spectrum,但示例显示了通过仅按一个日期对表进行分区来解决问题。如果我有多个日期字段怎么办?

例如:user_install_dateevent_date 的移动事件

s3 进行分区的性能如何:

   installdate=2015-01-01/eventdate=2017-01-01
   installdate=2015-01-01/eventdate=2017-01-02
   installdate=2015-01-01/eventdate=2017-01-03

它会扼杀我的select 性能吗?在这种情况下,最好的策略是什么?

【问题讨论】:

【参考方案1】:

如果您的数据以上述方式分区,那么在 WHERE 子句中仅包含 eventdate(没有 installdate)的查询效率会降低。

它仍然需要查看每个installdate 目录,但它可以跳过与谓词不匹配的eventdate 目录。

将较少使用的参数放在第二位。

【讨论】:

以上是关于Redshift Spectrum 使用两个日期字段对表进行分区的主要内容,如果未能解决你的问题,请参考以下文章

Redshift Spectrum 性能对比 Athena

分区依据的 Amazon Redshift Spectrum 不返回结果

洞察 Redshift Spectrum 查询错误

如何使用 Psycopg2 在 Redshift Spectrum 中添加分区 -

Redshift Spectrum 比 Athena 慢很多?

Redshift Spectrum 和 Hive Metastore - 模棱两可的错误