Step 6: Load sample data from Amazon S3 - Amazon Redshift

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Step 6: Load sample data from Amazon S3

これでデータベース dev を作成し、それに接続できました。次に、このデータベースにテーブルを作成し、テーブルにデータをアップロードして、クエリを実行してみます。すぐにロードして使えるサンプルデータを Amazon S3 バケットに用意しました。

注記

SQL クライアントツールを使用している場合、SQL クライアントがクラスターに接続されていることを確認してください。

このステップを完了したら、Amazon Redshift に関するより多くの情報を検索したり、「Where do I go from here?」で環境をリセットしたりすることができます。

サンプルデータをロードするには

  1. テーブルを作成します。

    をご使用の場合 Amazon Redshift クエリ エディターで、次のテーブル作成ステートメントを個別にコピーして実行し、 dev データベース。構文の詳細は、以下を参照してください。 テーブルを作成Amazon Redshift Database Developer Guide.

    create table users( userid integer not null distkey sortkey, username char(8), firstname varchar(30), lastname varchar(30), city varchar(30), state char(2), email varchar(100), phone char(14), likesports boolean, liketheatre boolean, likeconcerts boolean, likejazz boolean, likeclassical boolean, likeopera boolean, likerock boolean, likevegas boolean, likebroadway boolean, likemusicals boolean);
    create table venue( venueid smallint not null distkey sortkey, venuename varchar(100), venuecity varchar(30), venuestate char(2), venueseats integer);
    create table category( catid smallint not null distkey sortkey, catgroup varchar(10), catname varchar(10), catdesc varchar(50));
    create table date( dateid smallint not null distkey sortkey, caldate date not null, day character(3) not null, week smallint not null, month character(5) not null, qtr character(5) not null, year smallint not null, holiday boolean default('N'));
    create table event( eventid integer not null distkey, venueid smallint not null, catid smallint not null, dateid smallint not null sortkey, eventname varchar(200), starttime timestamp);
    create table listing( listid integer not null distkey, sellerid integer not null, eventid integer not null, dateid smallint not null sortkey, numtickets smallint not null, priceperticket decimal(8,2), totalprice decimal(8,2), listtime timestamp);
    create table sales( salesid integer not null, listid integer not null distkey, sellerid integer not null, buyerid integer not null, eventid integer not null, dateid smallint not null sortkey, qtysold smallint not null, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp);
  2. COPY コマンドを使用して Amazon S3 からサンプルデータをロードします。

    注記

    Amazon S3 または DynamoDB から大容量のデータセットを Amazon Redshift にロードするために、COPY コマンドを使用することをお勧めします。COPY構文についての詳細は、「 コピーAmazon Redshift Database Developer Guide.

    個別のサンプルデータファイルを含むファイル tickitdb.zip をダウンロードします。個別のファイルを解凍して、使用する AWS リージョンの Amazon S3 バケットの tickit フォルダに読み込みます。このチュートリアルの COPY コマンドを編集して、Amazon S3 バケットにあるファイルを指定します。でファイルを管理する方法については、 Amazon S3、を参照 S3 バケットの作成および構成Amazon Simple Storage Service コンソールユーザーガイド.

    サンプルデータをロードするには、ユーザーに代わってクラスターが Amazon S3 にアクセスするための認証を提供する必要があります。ロールベースの認証またはキーベースの認証を提供できます。ロールベースの認証を使用することをお勧めします。両方の認証タイプの詳細については、以下を参照してください。 クレデンシャルズAmazon Redshift Database Developer Guide.

    この手順では、前の手順で作成し、クラスターにアタッチした IAM ロールを参照して、認証を提供します。

    注記

    適切なアクセス権がない場合 Amazon S3COPYコマンドを実行すると、次のエラー メッセージが表示されます。S3ServiceException: Access Denied。 COPYコマンドのIAM権限についての詳細は、「 コピーAmazon Redshift Database Developer Guide.

    COPY コマンドには、次の例のように、IAM ロールの Amazon リソースネーム (ARN)、バケット名、AWS リージョンのプレースホルダーが含まれます。

    copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';

    IAM ロールを使用してアクセスを許可するには、CREDENTIALS パラメータ文字列の <iam-role-arn> を、Step 2: Create an IAM role で作成した IAM ロールのロール ARN と置き換えます。

    COPY コマンドは、次の例のようになります。

    copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' credentials 'aws_iam_role=arn:aws:iam::123456789012:role/myRedshiftRole' delimiter '|' region '<aws-region>';

    サンプル データをロードするには、<myBucket>, <iam-role-arn>&&, および <aws-region> 次のCOPYコマンドで、値を指定します。をご使用の場合 Amazon Redshift クエリーエディタで、次のコマンドを個別に実行します。

    copy users from 's3://<myBucket>/tickit/allusers_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';
    copy venue from 's3://<myBucket>/tickit/venue_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';
    copy category from 's3://<myBucket>/tickit/category_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';
    copy date from 's3://<myBucket>/tickit/date2008_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';
    copy event from 's3://<myBucket>/tickit/allevents_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region '<aws-region>';
    copy listing from 's3://<myBucket>/tickit/listings_pipe.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '|' region '<aws-region>';
    copy sales from 's3://<myBucket>/tickit/sales_tab.txt' credentials 'aws_iam_role=<iam-role-arn>' delimiter '\t' timeformat 'MM/DD/YYYY HH:MI:SS' region '<aws-region>';
  3. 次にサンプルクエリを試します。詳細については、以下を参照してください。 選択Amazon Redshift Developer Guide.

    -- Get definition for the sales table. SELECT * FROM pg_table_def WHERE tablename = 'sales'; -- Find total sales on a given calendar date. SELECT sum(qtysold) FROM sales, date WHERE sales.dateid = date.dateid AND caldate = '2008-01-05'; -- Find top 10 buyers by quantity. SELECT firstname, lastname, total_quantity FROM (SELECT buyerid, sum(qtysold) total_quantity FROM sales GROUP BY buyerid ORDER BY total_quantity desc limit 10) Q, users WHERE Q.buyerid = userid ORDER BY Q.total_quantity desc; -- Find events in the 99.9 percentile in terms of all time gross sales. SELECT eventname, total_price FROM (SELECT eventid, total_price, ntile(1000) over(order by total_price desc) as percentile FROM (SELECT eventid, sum(pricepaid) total_price FROM sales GROUP BY eventid)) Q, event E WHERE Q.eventid = E.eventid AND percentile = 1 ORDER BY total_price desc;