Yahoo広告のデータをRedshiftに自動同期し、Lookerで可視化する方法

## 概要
マーケティング業務は、非常に多くの部署と連携して行う傾向があります。
同じマーケター同士であれば、戦略をテキストで伝えるのは簡単かもしれませんが、背景を知らない他部署の方に全てを理解してもらうのは難しいでしょう。そこでグラフなどを用いた可視化という作業が重要になってきます。可視化を行うことで、少量のテキストとビジュアルで効率的に情報を伝えることができます。
しかし、グラフ作成の度に、前回から増えた分のデータをダウンロードして、グラフを作り直すという手間な作業が待っています。さらに、複数の広告媒体を利用している場合、比較する作業など手間な作業が積み重なり、大変時間がかかってしまいます。
そこで、今回は出来るだけ効率的に可視化するために、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)を用いてYahoo!広告のレポートデータをRedshiftに統合して、Lookerで可視化してみます。

その他にも広告やデータベースなど、様々な分析データをETL・転送した事例をまとめました。
[troccoの使い方まとめ（CRM・広告・データベース他）]
(https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/3488e500-5df6-ebe0-bdde-2aaa59ad8e86.png)
## ゴール
このようなYahoo!広告のレポートデータから
![2020_10_21_18_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/3b89728f-7cb6-7974-5d2e-239666149caa.png)

このようなダッシュボードを30分程度で作りあげます（当然、作成後は自動で最新値が更新されるようにします）
![Qiita_最終形態.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/cb3faae4-67ad-22c6-86b1-d870e1854271.png)
## こんな人におすすめ
- Yahoo!広告のレポートデータを分析基盤やDWHに取り込みたい方
- レポートデータをcsvファイルにエクスポートして分析基盤に取り込むまでの作業時間が長く、無駄が多いと感じている方
- データ取得の作業に疲れている方

## 1. DWHと同期する手段の選定
### 1-1. DWHの選定
まずはデータの集約先であるDWH（データウェアハウス）を選定します。

- `Amazon Redshift`
- `Google BigQuery`
- `MySQL`
- `PostgreSQL` など

今回は`Amazon Redshift`を利用することにします。
### 1-2.転送手段の選定
データの集約先がRedshiftに決まったので、次は転送するための手段を以下の4つから選びます。
**1.** レポートデータをcsvエクスポートし、手動でRedshiftにアップロードする。
**2.** Yahoo!広告とRedshiftの各APIを用いて、自分でプログラムを書いて連携させる。
**3.** Embulkを利用し、自分で環境を構築する。
**4.** [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)を利用し、画面上で設定する。

**1**は単発の実行なら特に問題はありませんが、定期的に取り込む必要がある場合は非効率な作業になります。
**2**はAPIのキャッチアップ工数・プログラムを書く工数・環境構築工数が発生する他、エラー対応などの運用工数も継続的に発生します。
**3**も2と同じく、Embulkはある程度の専門知識が必要になり、自分で環境構築・運用を行う手間が発生します。さらに、エラーの内容が専門的で、詰まると大幅に時間を浪費してしまいます。

そこで、今回はEmbulkの課題も解決してくれて、プログラムを書かずに画面上の設定のみで作業が完結する、**4**の**[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)**というSaaSを利用します。
## 2. troccoでYahoo!広告→Redshiftの転送自動化
### 2-0. 事前準備
ここからの作業には、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)のアカウントとYahoo!広告のアカウントが必要になります。
[無料トライアル](https://trocco.io/inquiry_trial/new?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)も実施しているので、申し込み・登録をしておいてください！
（申込時に、この記事を見た旨を記載して頂ければスムーズにご案内することができます）
### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)にアクセスし、「ダッシュボード」にある「転送設定を作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459450/45ead314-25c9-dda0-3363-665cc0be7e3e.png)

転送元にYahoo!広告、転送先にAmazon Redshiftを選択し、「転送設定を作成」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/8fd2d043-dc50-9900-5183-335fbde9b554.png)

すると、設定画面になるので、転送に必要な情報を入力していきます。
### 2-2. Yahoo!広告との連携設定
後に見た時に、一目で何の転送設定か把握できるように、転送設定の名前とメモを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/c46a512f-3893-9de5-8b9b-3bdb71850104.png)

転送設定の名前を決めたら、「転送元の設定」内の「接続情報を追加」ボタンを押し、Yahoo!広告の接続情報の設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/79b12ff5-770c-f208-7c8f-ec40815300aa.png)

「Yahooアカウント認証」のボタンを押して、データを取得したいYahoo!広告のアカウントで認証を行います。
![貼り付けた画像_2020_10_23_14_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/93069b68-362a-b3c6-85dd-1dbd9b8169d6.png)

認証が完了すると「アクセストークンの発行日時」の欄が自動で埋まるので、把握しやすい名前を入力して接続設定を保存します。
![貼り付けた画像_2020_10_23_14_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/36fb791d-9c3c-8142-0a6f-91dd6a222438.png)

再度転送設定画面に戻り、「接続情報を読み込む」ボタンを押すと、作成した接続情報が選択できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/cb250729-aa13-149f-5430-263fffc74936.png)

これでYahoo!広告との連携は完了です。
### 2-3.Yahoo!広告からのデータ抽出設定
次に、Yahoo!広告からどのようなデータを取得するか設定していきます。
まずは必須項目の「アカウントID」「レポート種別」をセレクトボックスの中から選択します。
![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61228/406bddbe-4217-8d5e-aff9-b1cc27f97af7.jpeg)


次に「データ取得期間」の設定です。
取得期間を転送のたびに設定し直すのは手間がかかるので、ここではカスタム変数を使います。
このように変数を設定することで、「ジョブ実行時から１日前のデータを取得する」というような設定が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/f7881f09-77a8-2b00-d01a-3272b7d9a884.png)

次に、転送したいパラメータを「カラム」に設定します。
データ型をどれに設定するか分からない場合は、すぐ下の「ドキュメント」のリンクから確認することができます。
![貼り付けた画像_2020_10_23_15_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/a0569f0e-7b74-56e4-5269-2a4b30ab9c89.png)

以上でYahoo!広告側の設定は完了です。
次は転送先のRedshiftの設定を行っていきましょう。
### 2-4. 転送先Redshiftの設定
基本的には転送元と同じ要領です。
「接続情報を追加」ボタンからRedshiftの接続設定を行い、データベース名、スキーマ、テーブルを入力します。
![貼り付けた画像_2020_10_23_15_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/af4acf3d-f2e8-9169-75cc-aeb022277b9f.png)

S3パケット・S3キープレフィックス・転送モードも必須項目なので、これらも入力します。
![貼り付けた画像_2020_10_23_15_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/555ee8e4-96d2-acff-c1c7-e1f39d161f5c.png)

最後に、「この内容で接続を確認」ボタンを押して、接続確認が問題なく通るか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/c4cc76b8-d13a-2825-c065-74dad24f9fb7.png)

これで入力は完了です。「保存して自動データ設定・プレビューへ」ボタンを押して、確認作業に進みましょう。
### 2-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。Yahoo!広告から取り込んだデータが表示されているのが確認できると思います。
問題なければ、「設定を完了する」ボタンを押して、スケジュールや通知設定に進みます。
![貼り付けた画像_2020_10_23_15_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/cd667969-4c28-f772-ac25-c2e63816d0f2.png)
### 2-6. スケジュール設定
「スケジュール・トリガー設定」タブを開きます。
![貼り付けた画像_2020_10_23_15_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/4b26a8bd-896a-d3f0-eb0f-f17422ba98d3.png)

以下のように実行スケジュールを設定することで、転送を自動化することができます。
![貼り付けた画像_2020_10_23_15_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/619da8b7-1b38-40b1-4933-1955e500b00e.png)
### 2-7. 通知設定
必須の設定ではないですが、通知タイプ・通知条件・通知先を選択し設定を保存することで、EmailやSlackに通知を行うことができます。
![貼り付けた画像_2020_10_23_15_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/3b834210-db8e-9f86-38a2-86074053454b.png)

また、必要な時のみ実行したい場合は、手動で転送を実行することもできます。
その場合は、転送設定詳細の「実行」ボタンを押して進めていきます。
![貼り付けた画像_2020_10_23_15_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/3019a314-f64e-9310-fa93-8efd0021eeaa.png)

これで、転送が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/06379de4-d370-c6d0-3ee6-c3e8cf4b6b0b.png)
## 3. Redshiftの設定
特に設定することはありません。
データがきちんと送られているかプレビューで確認してみます。
データが溜まっているので、今すぐに分析・可視化を行うことができます。
![貼り付けた画像_2020_10_23_16_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/f84236cd-6009-6882-ed91-64a525557c5b.png)

これで、Yahoo!広告のレポートデータがRedshiftに同期されていることが確認できました。
## 4. Lookerで可視化
### 4-1. RedshiftとLookerの接続設定
ここから、Redshiftに集約されたデータを可視化していきます。
Lookerの画面から、「管理 > Database > Connections」を開きます。
![貼り付けた画像_2020_11_02_16_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/1c49b7cb-6134-5b40-b443-6c6eb80301a4.png)

すると、接続しているデータベース一覧が表示されています。
この画面で「Add Connection > Database Connection」を開き、「Connection Setting」に接続するデータベース情報を入力します。
![貼り付けた画像_2020_11_02_16_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/758e541a-32d6-3c71-1f25-39a8083f46bb.png)
![貼り付けた画像_2020_11_02_16_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/820f9990-216b-52d5-b436-51de296832f4.png)

これで、RedshiftとLookerの接続設定が完了です。
### 4-2. LookMLプロジェクトの作成
次は、データを可視化するのに必要なLookMLプロジェクトを作成していきます。
「開発 > LookML プロジェクトの管理」を開きます。
![貼り付けた画像_2020_11_02_16_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/53220d80-d1c7-34a2-64d3-6a503c9e0726.png)

「New LookML Project」を押して、新しいLookMLプロジェクトを作成します。
![貼り付けた画像_2020_11_02_15_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/0c186535-04b5-4578-aa37-148ae49f3a7d.png)
![スクリーンショット 2020-11-12 7.24.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/576242fd-a848-7a3b-e24d-b946af4dfca9.png)

これで、LookMLプロジェクトを作成できました。
# 4-3. モデルとビューの定義
次は、表示されたエディタで、モデルとビューを定義します。
後々必要になるので、モデルにデータベース接続とその接続を使用するExploreを定義します。
(書き方はLookerの[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development#adding_a_new_view_from_an_existing_database_table)を参考にしてください)
![スクリーンショット 2020-11-12 14.39.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/83c0c713-abfb-fdd2-3550-ec7c42082dd0.png)
![スクリーンショット 2020-11-12 14.45.26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/dbd383e2-0fd9-c22e-10b7-0f00b4e9a3d3.jpeg)

これでグラフを作成する準備ができました。
# 4-4. グラフの作成
トップページに戻り、「New > Dashboard」を押して、ダッシュボードを作成していきます。
![貼り付けた画像_2020_11_02_16_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/cf8f2f71-b374-ba31-0d65-7cad45ce2068.png)

このように白紙のダッシュボードが作成されました。
試しに、日毎のクリック数を可視化してみます。
「Dashboardの編集」を押し、「タイルの追加」を押し、先ほどのモデルで定義したExploreを選択します。
![スクリーンショット 2020-11-12 14.54.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/28a1723e-c510-460b-c823-224c48818657.png)
![スクリーンショット 2020-11-12 14.54.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/dff78f8a-b295-47f1-bc0d-87cb02c8c2ed.png)
![スクリーンショット 2020-11-12 14.55.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/5aa69d1a-8e2c-acca-da43-22fbc2cfbbc6.png)

「DIMENSIONS」に横軸にしたいデータ、「MEASURES」に縦軸にしたいデータを選択し、「実行」を押すことで、グラフを作成することができます。今回であれば、横軸に日付、縦軸にクリック数を選択することで、日毎のクリック数のグラフを作成し、可視化することができました。
![スクリーンショット 2020-11-12 15.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460354/9ae71468-0e3d-10c9-af0f-47e48da31183.png)

これで一つグラフが完成しました。このような感じで他のグラフも作成すると、今回のゴールであるYahoo!広告のレポートデータダッシュボードが完成します。
![Qiita_最終形態.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/cb3faae4-67ad-22c6-86b1-d870e1854271.png)
## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)を使うと管理画面を触ることなく、簡単にYahoo!広告のレポートデータを取得し、DWH(Redshift)に貯めることが出来ました。
また、今回のようにRedshiftにデータを貯めると、Lookerを用いてデータを可視化することができます。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_redshift)においても、広告データやマーケティングKPI等をこのような流れで収集・分析しています。

その他にも広告やデータベースなど、様々な分析データをETL・転送した事例をまとめました。
[troccoの使い方まとめ（CRM・広告・データベース他）]
(https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)