如何使用AWS RedShift Spectrum对S3存储进行建模以进行查询

时间:2019-06-13 10:52:37

标签: amazon-web-services amazon-s3 amazon-redshift etl amazon-redshift-spectrum

MySQL数据库中存在一个users表。

我们希望将数据迁移到AMazon S3中,以便使用Amazon Redshift进行进一步分析。

  • 第1天-从用户表中导出10行数据(总行数:10)
  • 第2天-从用户表中导出另外2行数据(总行数:12)
  • 第3天-从用户表导出修改后的行和新行的数据(总行:13)

建议的S3数据文件夹/命名约定:

s3://data/users/YYYYMMDD/users-YYYYMMDDHHMMSS.csv

Amazon Redshift会按以下方式加载数据以查询用户的所有行:

create EXTERNAL TABLE redshift_users from s3://data/users

问题:

  1. 我们假设第3天的修改行优先于第1天的可用数据?
  2. 如果在Day4删除2条现有行怎么办,应该如何将其存储在Redshift可以理解的S3中?

1 个答案:

答案 0 :(得分:0)

要回答您的问题:

  1. 您假定新行将自动优先于旧行-事实并非如此。您需要在数据中添加“ processed_timestamp”列,并在查询中对其进行处理-您的查询必须弄清楚如何仅获取最新行(我为此使用了窗口函数)。

  2. 通常,您不能从S3物理上删除行。您需要结合上面的#1实施逻辑删除过程。