外部テーブルを作成します。次の例では、EVENT データ用の外部テーブルを作成します。
create external table spectrum.event(
eventid integer,
venueid smallint,
catid smallint,
dateid smallint,
eventname varchar(200),
starttime timestamp
)
row format delimited
fields terminated by '|'
stored as textfile
location 's3://bucket_name/tickit/spectrum/event/';
注: bucket_name を実際の S3 バケット名に置き換えてください。AWS Glue を使用して外部テーブルを作成するには、データカタログにテーブル定義を追加します。
Amazon Athena を使用して外部テーブルを作成するには、テーブル定義を追加します。
Athena を使用したテーブル定義の例:
CREATE EXTERNAL TABLE spectrum.event (
eventid int,
venueid smallint,
catid smallint,
dateid smallint,
eventname varchar(max),
starttime timestamp)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
外部スキーマが参照している外部テーブルを確認するには、次の SVV_EXTERNAL_TABLES クエリを実行します。
select schemaname , tablename , location from svv_external_tables where schemaname = 'spectrum';
schemaname | tablename | location
----------------+---------------------------------+-----------------------------------------------------------------------
spectrum | event | s3://bucket-name/file-location
注: bucket-name を S3 バケットの名前に、file-location を実際のファイルの場所に置き換えてください。
外部テーブルを外部 Redshift Spectrum テーブルとしてクエリするには、次の SELECT ステートメントを使用します。
select top 3 spectrum.sales.eventid, sum(spectrum.sales.pricepaid) from spectrum.sales, spectrum.event
where spectrum.sales.eventid = spectrum.event.eventid
and spectrum.sales.pricepaid > 30
group by spectrum.sales.eventid
order by 2 desc;
eventid | sum
---------+----------
289 | 51846.00
7895 | 51049.00
1602 | 50301.00
上記のクエリ例では、外部の SALES テーブルを外部の EVENT テーブルと結合します。