TuneCoreの売上データCSVをS3に格納してAthenaのクエリをRe:dashのデータソースにして可視化する
2017/06/06
先日参加しましたAWS Summit Tokyo 2017で、
[JapanTaxi] Athena 指向アナリティクス 〜真面目に手を抜き価値を得よ〜(AWS Summit Tokyo 2017)を聞いてきました、
ので、S3->Athen->Re:dashの構成をやってみたくなりましたのでやってみました。
TuneCoreという国内外の音楽配信サービスのディストリビューターとして一括で仲介してくれるサービスに個人的にお世話になっておりまして、その月次レポートをS3->Athen->Re:dashで可視化してみました。
目次
S3の設定
特に設定するところはありません。
バケットを作成して、TuneCoreからダウンロード出来るCSVをアップロードしました。
CSVは1行目とフッタにあるコメント行を削除してShift-JISからUTF-8に変換しました。
Athenaの設定
[Add Table]からウィザードを使ってCSV選択で1カラムだけのテーブル作成のSQLを生成して、そこにカラムを手書きで足しました。
こんなSQLになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CREATE EXTERNAL TABLE IF NOT EXISTS tunecore8bangai.tunecorelist ( `application_month` string , `achievement_month` string, `store` string, `service` string, `country` string, `artist` string, `release` string, `music` string, `jan_upc` string, `isrc` string, `label` string, `sales_format` string, `unit_selling_price` double, `sales_currency` string, `sales_revenue_unit_price` double, `request_count` int, `sales_revenue_sum` double ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = ',', 'field.delim' = ',' ) LOCATION 's3://bucket-name/' TBLPROPERTIES ('has_encrypted_data'='true'); |
Re:dash用のIAMの作成
Re:dash Help Center Amazon Athena Setupに準じて設定します。
アタッチするポリシーは
AWSQuicksightAthenaAccess
と
次のポリシーです。
「my-bucket」はAthenaの[Setting] – [Query result location]を設定しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-bucket" ] } ] } |
Re:dashの設定
Re:dashのバージョンは1.0.3+b2850です。
ここからは手間取りましたが、最終的にこちらの2サイトの通りにやって出来ました。
ありがとうございます。
[Docker] ubuntu 14.04/16.04にDockerをインストール
Redash での Amazon Athena 連携に関して
Re:dashサーバにDockerをインストール
ubuntuは14.04です。
Athena ProxyサーバをDockerで起動するためにRe:dashサーバ(ubuntu)にDockerをインストールします。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates $ sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-keys 58118E89F3A912897C070ADBF76221572C52609D $ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list $ sudo apt-get update $ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual $ sudo apt-get update $ sudo apt-get install docker-engine |
Re:dashサーバでredash-amazon-athena-proxyを起動
1 2 3 4 5 |
$ git clone https://github.com/getredash/redash-amazon-athena-proxy.git $ cd redash-amazon-athena-proxy $ sudo docker build . $ sudo docker images |
IMAGE IDを確認して次のコマンドで使用
1 2 |
$ sudo docker run -d --name redash-amazon-athena-proxy -p 4567:4567 <IMAGE ID> |
Re:dashの .envに環境変数を追加
※環境にもよりますがイメージからRe:dashを作っている場合は、 /opt/redash/.env
1 2 3 |
export ATHENA_PROXY_URL=http://localhost:4567/query export REDASH_ADDITIONAL_QUERY_RUNNERS=redash.query_runner.athena |
Re:dashでAthenaをデータソースに設定
Re:dashのデータソースでAmazon Athenaが選択出来るようなりました。
- Name : 任意
- Type : Amazon Athena
- AWS Secret Key : 事前に作成したIAMユーザのシークレットキー
- AWS Region : Athenaのリージョン
- AWS Access key : 事前に作成したIAMユーザのアクセスキー
- S3 Staging Path : Athenaの[Setting] – [Query result location]
これでクエリーが実行出来て、ビジュアライゼーションが作成出来て、ダッシュボードに設定出来ます。
ストア別とか、曲別とか、一覧とか作ってみて、、、、、
出来た!
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon Pollyを使って覚えたい資料を耳から身体に染み込ませる
Amazon Pollyを使うとソースコードを一切かかなくても、テキストを音声に …
-
-
slackのbotにWikipediaを調べてもらう(Python on AWS Lambda + API Gateway)
slackのbotに少しでも役に立ってもらおうと、Wikipediaを調べてもら …
-
-
API GatewayをトリガーにしたときのLambdaリソースベースポリシー
先日、SwaggerからAPI Gatewayを作ったときに、API Gatew …
-
-
よくあるサーバーレスアーキテクチャで質問フォーム
この記事はServerless2 Advent Calendar 2018に参加 …
-
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
-
テキストをAmazon PollyでMP3に変換してS3に格納(AWS Lambda Python)
Google Calendar Twilio ReminderのテキストをAma …
-
-
AWS Summit 2016 Tokyoに参加してきました (Day2)
馬込は非常に良い天気です。 泊まっている部屋が2Fでしたので窓を明けると歩いてい …
-
-
AWS APIリクエストにPostmanで署名を作成する
新年明けましておめでとうございます! 署名バージョン4 「AWSはマネジメントコ …
-
-
EC2 プレイスメントグループを試してみました
やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …
-
-
AD Connectorを作成してシームレスにドメイン参加する
VPN接続先のADで管理されているドメインにEC2 Windowsインスタンスか …