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

CodeZine / 2014年7月11日 14時0分

 前回第1回はAmazon Redshiftでビッグデータ分析環境を構築する際の構成要素や全体像について紹介しました。今回からはいよいよ個別のテーマについて切り込んで行きたいと思います。

 ……とは言うものの、今回はまだRedshiftに本格的には踏み込みません。Redshift分析環境にインポートし、実際に分析対象としてアクセスする『データ』(ファイル)に関する部分について、やらなければいけないこと、気を付けるべき点を中心に話を進めていきます。分析環境の構築と同様に大事な点であり、労力を掛けるべき点であると個人的に考えている部分です。

■分析テーマをピックアップ

 今回のようなビッグデータ分析環境を構築するとなった場合、まず間違いなく分析環境を構築するための『元ネタ』ありきで話が進んでいるものと思われます。『現在稼働中の△△△システムで日々生成されている◯◯データや※※※のログをこういう風に見てみたい/分析して業務に役立てたい』『今度リリースする◯◯のシステムで、こういう情報が取得、生成されるのでそのデータを分析してみたい』などです。

 そのような環境の場合、先行してまずは1つ『この分野のこのデータを使って、こういう情報が見てみたい、こういう分析をしてみたい』テーマを選び、分析インフラ構築のフローを1本通してみることから始めてみるのが良いでしょう。1つ作ってみることで、構築に要する規模感や勘所もある程度見えてきますし、その後の構築へのフィードバックも行えます。

 データが揃っている、ファイルやデータの種類(要素数)があまり多くない、分析・照会するテーマとして分かりやすい……など、着手しやすそうなテーマを選び、そのテーマで1つ先行して分析インフラのフローを1本通してみることで規模感・スケジュール感が掴め、その後の構築もスムーズに進むことと思います。

 『テーマの洗い出し方』についてですが、日々何らかの作業に携わっている人であれば、パッと分析対象のデータや画面イメージが出てくるかも知れませんが、必ずしも『分析作業』を行っている人ばかりではないかも知れません。その際は、無理に分析テーマとして考えなくとも、まずは『このデータのこういう点を見てみたい』という切り口でも良いでしょう。普段数字だけで見ていたデータ達も、BIツールでビジュアル化・見える化をするだけで思わぬ発見が得られるものです。そこから何かを発見をすることで業務効率化や改善を図るヒントを得られることもあるでしょうし、まずは『気になる点を見てみたい』というところから始めて見るくらいの観点で進めてみてください。

■分析テーマから必要なデータを考える

 という訳で、1つテーマが決まりました。

 決まったのであれば、そのデータをどういう風にして見てみたいか、ざっくりイメージしてみてください。シンプルな表形式でデータを比較してみたいのか、棒グラフや線グラフで時系列の遷移・変遷を見たいのか、はたまた別のグラフ形式で何かを表現したいのか。いずれの形式で表示させるにしても、そこで必要な『情報』の内容については、見たいイメージを思い描くことで、ある程度絞れてくることと思います。

 そして、手元のテーブル情報・ファイル情報に目を移してみましょう。それらのゴールを表現するには、1つのテーブルで事足りるでしょうか? すでにファイルやテーブルの内容が整備洗練されている場合であれば、シンプルにそのテーブル1つで要件が済んでしまうかも知れません。逆に、今回定めるゴールには1つのテーブルでは足りないとなった場合、ファイル生成の時点で必要な項目が揃うように加工処理を施す必要が出てくるかも知れませんし、またテーブルを復数用意し、データウェアハウスの環境下でそれら復数テーブルを結合するなどして分析用のテーブルを構成し、そのテーブルをBIツールで参照しに行く、というような流れを構築する必要があるかも知れません。

 いずれにせよ、この部分は『何を分析したいか(見たいか)というゴール』『そのゴールに辿り着くために何がどういう形で必要なのか』という点によって都度変わってきますので、分析したいテーマごとに行っていく作業になるのかなと思っております。

 以下に3点、オンプレにあるファイルから分析テーマを準備するまでの主なケースを挙げてみました。4つ目のケースとして、オンプレ側のファイル生成(ケース3)、およびRedshift投入後にSQLベースでの加工処理(ケース2)双方を経てデータを準備するというのも考えられますがここでは図示は割愛させていただきます。

●ケース1

 一番シンプルなパターン。分析したいテーマがすでに1テーブルで揃っている場合、オンプレ側でファイル整形→S3にファイルをアップロード→Redshiftにデータを取込、のステップを踏むことでそのまま分析の準備が完了します。



●ケース2

 ある分析テーマに際し、テーブルが復数必要になるパターン。ファイルの準備とS3へのアップロード、Redshiftへのデータ取込は個別に行い、各テーブルの取り込み処理完了後、SQLベースでの編集・加工処理(テーブル間結合や条件による絞込など)を行い、その結果を別テーブルに出力することで分析に足る情報を作成します。



●ケース3

 ファイルベースで必要な情報を追加・編集し、S3へのアップロード以降はケース1同様ロード時ですでに分析準備が完了しているケースです。





CodeZine

トピックスRSS

ランキング