SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Amazon Redshiftによるビッグデータ分析環境の構築

Amazon Redshiftの分析対象とするデータの設計/加工のポイント

Amazon Redshiftによるビッグデータ分析環境の構築(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

テーブル定義 作成例

 これらの情報を踏まえて、テーブル定義を作成してみましょう。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環境下に各種要素を構築し、データを投入してみたいと思います。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Amazon Redshiftによるビッグデータ分析環境の構築連載記事一覧

もっと読む

この記事の著者

しんや(シンヤ)

2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。2013年05月『出張ブロガー』を経て2013年08月にクラスメソッド株式会社へ転職。現在は業務(AWS及びその周辺技術を扱う)の...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7866 2014/07/11 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング