将 2 个分区文件夹合并为一个 table

merge 2 partitioned folders in a single table

我正在使用 parquet 文件格式从 2 个红移表中导出数据。

unload ('select * from some_table')
to 's3://132cols/some_table/'
credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxxx'
PARQUET
PARTITION BY (senderid) include;


unload ('select * from another_table')
to 's3://132cols/another_table/'
credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxxx'
PARQUET
PARTITION BY (senderid) include;

数据按 senderid 分区,因此我可以看到 2 个文件夹,例如...

s3://132cols/some_table/senderid=abcd/
s3://132cols/another_table/senderid=abcd/

两个表具有相同的结构和相同的 ID。 有什么方法可以合并这两个文件夹以查询与 Athena(或 redshift)中的两个表中的发件人“abcd”相关的数据?

使用您的 table 名称的分区。 可以看另一个例子.

unload ($$ select *, 'some_table' as tbl from some_table $$)
to 's3://132cols/'
credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxxx'
PARQUET
PARTITION BY (senderid,tbl) include
ALLOWOVERWRITE;


unload ($$ select *, 'another_table' as tbl from another_table $$)
to 's3://132cols/'
credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxxx'
PARQUET
PARTITION BY (senderid,tbl) include
ALLOWOVERWRITE;

那么您将获得:

s3://132cols/senderid=abcd/tbl=some_table/
s3://132cols/senderid=abcd/tbl=another_table/

现在您可以在 s3://132cols/ 之上创建一个 table,有 2 个分区。