Facebook広告のデータをRedshiftに統合してLookerで可視化する

## 概要
Facebook広告を利用している方は広告レポートから得られるデータを元に今後のマーケティングについて考えることも多いのではないでしょうか。
膨大な量のデータをそのまま見ているだけでは正確な分析は難しいため、データをグラフ等を使って可視化していると思います。
しかし、グラフ作成の度に毎回新しく増えた分のデータをダウンロードしてグラフを作り直すのは手間がかかる作業です。
ましてや、複数の広告媒体を利用しているならとても時間がかかり、比較も大変です。
そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)という分析基盤向けデータ統合サービスを使い、レポート取得の自動化＋DWHへの統合＋可視化までやってみようと思います。
([trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)はFacebook広告以外にも、Yahoo!スポンサードサーチ、Google広告、Twitter広告、LINE Ads Platformに対応)

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

![fb_to_redshift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/3d45421a-be60-e29e-2b34-021f8627ead1.png)


## ゴール
↓画像のようにグラフをまとめたものを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
<img width="1791" alt="qiita_20191210_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/2f7f38db-bcbf-7265-4711-5b0c8d7212c5.png">

## こんな人におすすめ
* Facebook広告を利用しており、分析基盤やデータウェアハウスへのデータ移行を考えている方
* 様々な広告媒体レポートをまとめてひとつのサービスで管理したい方
* 広告管理画面からデータ取得を行う作業に疲れている方

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

* Amazon Redshift
* Google BigQuery
* MySQLやPostgreSQL

今回はAmazon Redshiftを利用することにします。

### 1-2. Facebook広告のデータをAmazon Redshiftに転送する4つの方法
Amazon Redshiftにデータを集約することが決まったので、続いては転送するための手段を検討します。
**1.** Facebook広告のデータを管理画面からダウンロードし、手動でAmazon Redshiftにアップロードする
**2.** Facebook広告とAmazon Redshiftの各APIを用いて、プログラムを書いて連携する
**3.** Embulkを利用し、自分で環境を構築する
**4.** [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_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=facebook_ads_to_redshift)というSaaSを利用します。

## 2. troccoでFacebook広告→Redshiftの転送自動化
### 2-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)のアカウント・Facebookアカウントが必要です。
[無料トライアル](https://trocco.io/inquiry_trial/new?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)を実施しているので、事前に申し込み・登録しておいてください！
（申込の際に、この記事を見た旨を記載して頂ければご案内がスムーズに行えます）
### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<img width="1792" alt="qiita_20200827_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/098f74e5-a834-6b9f-0ea2-2b9c592a6169.png">
転送元に「Facebook Ads Insights」を指定し、転送先に「Redshift」を選択して転送設定作成ボタンを押します。
![スクリーンショット_2020-11-02_22_46_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/eb95499a-2c6b-f65b-e440-0835c9ffd6b7.png)

すると、設定画面になるので、必要な情報を入力していきます。
### 2-2. Facebook広告との連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![転送設定作成__名前設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/8c09c658-c8e6-86b9-ac98-082069982e8e.png)
次に「転送元の設定」内の「接続情報を追加」ボタンを押します。
![転送設定作成___接続設定クリック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/4e19a453-da56-d133-b8f8-25af9fd443f4.png)

別タブで接続情報の新規作成画面が開きますので、「Facebookアカウントを連携する」ボタンを押します。
![Facebook_Ads_Insightsの接続情報作成___trocco-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/07b7dae5-55db-c641-e6a6-8e54a3a8a640.png)


Facebookログイン画面が出てきますので、内容を確認の上、進みます。
![Facebookでログイン-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/033695f3-07af-7a26-fc7b-2120bae22920.png)
自分でわかるように名前とメモを入力して保存を押します。
![Facebook_Ads_Insightsの接続情報作成完了.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/ec3a6818-a8b1-8c94-7450-407cfcdc9979.png)

再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。
![転送設定編集___trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/5fc1c4cc-c171-47e1-10b6-9a8a3c9b16e0.png)
これでFacebook広告との連携は完了です。

### 2-3. Facebook広告からのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。
ここではキャンペーンの日次レポートを抽出してみます。
アカウントID、レポートを指定して、グラフを作成するために必要なデータ項目をフィールドで指定します。
取得期間で転送時にどの期間のデータを取得するかを設定しています。
![転送設定全体-FB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/e85097fe-bece-6d71-1c0a-c068631ec860.png)

### 2-4. 転送先Redshiftの設定
転送元と同様に設定していきます。
転送先とするデータベース名、スキーマ、テーブルを設定します。
また、一時的にデータを保存するS3バケットとプレフィックスを指定してください。
最後に転送モードを選択します。insertとすることでテーブルにデータを追加することができます。
![転送設定全体-redshift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/d53e781d-5c01-9a9e-b2b5-63185ce1888c.png)
これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。
### 2-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではFacebook広告から取り込んだデータが表示されています。
![転送詳細設定___trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/197a769e-e0bb-aa55-116c-2a77968354bf.png)
転送したいデータが取れているので、このまま「スケジュール・通知設定」に進みます。

### 2-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。
![スケジュール設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/6fec9011-7fcd-3e4f-b63a-698861fb90d6.png)
「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![転送設定詳細_-_実行設定___trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/5aa6b7f2-3814-c0d5-0dbc-70818d507949.png)

### 2-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Redshiftにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![ジョブ実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/1d9f8ede-f62e-5c7a-0fd4-63c936702b3c.png)
これで転送は完了です！

## 3. Redshiftの設定
特に設定することありません。データが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかをプレビューで確認してみます。
![Redshiftプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/6a551388-4d6b-ad88-ae3a-2d001e3da936.png)
転送されていることが確認できました！
## 4. Lookerで可視化
それでは、これらのデータを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」から接続するデータベース情報を入力します。
![貼り付けた画像_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のデータベースに接続できたら、次はデータを可視化するために必要な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)
![LookerNew_Project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/747db0df-4bbb-62f4-9ab7-b99fa01ac6a4.png)

「Create Project」を押したら、エディタでmodelとviewを定義します。
後々必要になるので、modelの中ではexploreを設定しておきましょう。
(書き方が分からない場合はLookerの[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development#adding_a_new_view_from_an_existing_database_table)を参照してください)
![qiita_facebook_ads_model_–_qiita_facebook_ads.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/b8cd6796-93c3-c3fd-a04d-b33b0b753a0f.png)
![facebook_ads_campaign_reports_view_–_qiita_facebook_ads.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/50593eb9-1541-9968-989a-78c364c82e50.png)

これでグラフを作る準備が整いました。
トップページに戻って「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)

白紙のダッシュボードができました。ここに各種グラフを追加していきます。「新しいTILE」を押します。
![貼り付けた画像_2020_11_02_16_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/77a68e9e-afca-d906-cad6-90424d172bdf.png)

先ほどのmodel内で定義したExploreを選択します。
![Qiita_FacebookAds青.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/c3fe4550-1492-3e41-af11-772bbe1d4230.png)


DIMENSIONSにグラフの横軸に表示したいデータ、MEASURESにグラフの縦軸に表示したいデータを設定し、Tileに表示したいデータをプロットします。ここでは日毎のクリック数を分析しています。
![Qiita_FacebookAdsグラフ作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/fe54411b-6ec1-fef0-7acf-39a2a0522545.png)


これで一つTileが完成しました。この調子で他のTileも作成すると、今回のゴールであるFacbook広告のデータダッシュボードが出来上がります。
![Qiita_FacebookAds-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/26ddc2e6-cda0-2146-bd5e-798e44afb487.png)
![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=facebook_ads_to_redshift)を使うとFacebook広告の管理画面を触ることなく、簡単にデータを取得し、DWH(Redshift)に貯めることが出来ます。
Redshiftにデータを貯めると、Lookerと連携することでデータを使ってグラフを作り、可視化できます。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。

実際に試してみたい場合は、[無料トライアル](https://trocco.io/inquiry_trial/new?utm_medium=social&utm_source=qiita&utm_campaign=facebook_ads_to_redshift)を実施しているので、この機会にぜひ一度お試しください。
（申込時に、この記事を見た旨を記載して頂ければスムーズにご案内できます）

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