0

我正在使用 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”相关的数据?

4

1 回答 1

1

将分区与您的表名一起使用。可以在这里看到另一个例子。

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/带有 2 个分区的表。

于 2020-12-21T08:26:45.103 回答