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
関連記事
-
-
試したい事があるのでAWS でとりあえずAmazon Linuxのサーバを作る
1年間の無料キャンペーン期間中に検証する とある勉強会でせっかくAWSのアカウン …
-
-
WordPressで画像アップロードができなくなった(AWS WAFでブロックしていた)
WordPressで画像がアップロードできなくなりました。 こんなメッセージです …
-
-
AWS Secrets Manager交代ユーザーローテーション
AWS Secrets Managerの交代ユーザーローテーションを確認してみま …
-
-
Re:dash CSVの出力文字コードをUTF-8からShift-JISに変更する
Re:dashの[Download Dataset] – [Down …
-
-
Azure AD SSOからAWS SSOに統合するための提供情報
Azure AD SSO担当者に送る情報をこちらの記事を見て確認しました。 チュ …
-
-
AWSアカウント ルートユーザーのMFAが使えなくなったので復旧
AWSのルートユーザーどころか、MFAが使えるログインすべてが使えなくなって焦り …
-
-
AWS Launch WizardでMicrosoft IIS環境を構築してみました
AWS Launch Wizardを知っていますか? 私は知りませんでした。 A …
-
-
ChatGPT APIをTeamsボットから使いました(AWS Lambda(Python) + API Gateway)
ChatGPT APIが有償で利用可能になったので、会社のTeamsボットに実装 …
-
-
CloudWatch LogsメトリクスフィルタでNginxのaccess_logから転送バイト数をモニタリングする
ユーザーガイドのApache ログからのフィールドの抽出を見てて、これ、Ngin …
-
-
Amazon Aurora Serverless 課金確認
Amazon Aurora Serverlessを使い始めてみましたの記事で書い …