テーブル定義 作成例
これらの情報を踏まえて、テーブル定義を作成してみましょう。Web上で公開されているデータ・ファイルについて、いくつか試してみました。
今回BIツールとして利用を想定している『Tableau Software』では、以下のサイトでサンプル用のデータを公開しています。その内の一つに『オリンピックのメダル取得数』に関するデータファイルがありますので、それをまずチョイスしてみます。構成としては非常にシンプルですね。分散キーやソートキーについては現時点では暫定的に付与しています。
CREATE TABLE medals ( id INT NOT NULL, athelete VARCHAR(100) NOT NULL, age SMALLINT NOT NULL, gender CHAR(1) NOT NULL, olympic_year SMALLINT, closing_celemony_date DATE, sport VARCHAR(100) NOT NULL, gold_medals SMALLINT NOT NULL default 0, silver_medals SMALLINT NOT NULL default 0, bronze_medals SMALLINT NOT NULL default 0, total_medals SMALLINT NOT NULL default 0, PRIMARY KEY(id) ) distkey(olympic_year) sortkey(closing_celemony_date, gold_medals, silver_medals, bronze_medals);
Tableau関連でもう一つ。こちらはTableau社のデスクトップ版製品『Tableau Desktop』のトライアル版に含まれているサンプルエクセルデータの日本語版となる資料です。Tableauでのデモ操作などでもよく利用しています。
こちらのデータについては、いくつか前処理を行いました。
- データ列の中に『含まれていると困る文字列がある』ため、Excelベースで文字列置換(©、®、™、カンマなどを除去)
- ファイル内のシート「Orders」をCSV出力
- ファイルエンコードをnkfでutf8に変更
CREATE TABLE orders ( order_id CHAR(7), order_date DATE, priority VARCHAR(15), quantity INT, earmings INT, discount_rate DOUBLE PRECISION, shipping_mode VARCHAR(20), profit INT, unit_price INT, ad_expences INT, shipping_cost INT, customer_name VARCHAR(100), prefecture VARCHAR(20), city VARCHAR(30), area VARCHAR(15), shop_name VARCHAR(50), customer_segment VARCHAR(80), product_category VARCHAR(50), product_sub_category VARCHAR(100), product_id VARCHAR(30), product_name VARCHAR(300), product_description VARCHAR(500), product_container VARCHAR(50), product_base_margin DOUBLE PRECISION, supplier VARCHAR(50), delivery_date DATE, shipment_date DATE, PRIMARY KEY(order_id) ) distkey(order_id) sortkey(order_date);
最後にもう一つ。こちらはすでにテーブル定義も用意されていますが、AWSのRedshift公式ドキュメント内の『入門ガイド』で紹介されているテーブルの一つです。件数は約19万件。すでにテーブル定義およびデータまで用意されているネタですが、併せて掲載します。
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);
以上、分析のゴールから必要となるテーブルおよびファイルの洗い出し、そしてファイルやテーブル設計書からデータを取り込むテーブル定義の作成までを解説しました。
次回はいよいよAWS環境下に各種要素を構築し、データを投入してみたいと思います。