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


## 概要
Yahoo!で広告掲載をする際、クリック率やインプレッション数を解析することが重要となります。しかし、新しくデータが増える度にデータをダウンロードして最新の状態にし、グラフを作り直すのは手間がかかります。
そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)という分析基盤向けデータ統合サービスを使い、Yahoo!広告データの抽出自動化＋DWH(データウェアハウス)への統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)は、Yahoo!広告の他にも、様々な広告・CRM・DBなどのデータソースにも対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![イメージ画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/20f88a71-ced4-604f-6782-5c8b224f98d7.png)




## ゴール

Yahoo!広告のデータをこのようにSnowflakeに統合し

![データプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/7f5f21b4-56b7-257f-97b3-04a6f0002347.png)

Lookerで可視化します(作成後は自動で最新値に更新することも可能です）
![完成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4f217f97-ab1f-3a40-e483-5834a7a221c0.png)

## こんな人におすすめ
* Yahoo!広告のレポートをcsvファイルにエクスポートして分析基盤に取り込むまでの作業時間が長く、無駄が多いと感じている方
* Yahoo!広告を利用中で、分析基盤やDWH(データウェアハウス)へのデータ統合・ETLを考えている方
* LookerやSnowflakeでYahoo!広告のデータを分析したい方


## 1. troccoでYahoo!広告→Snowflakeの転送自動化
### 1-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)のアカウント・Yahoo!のアカウントが必要です。
無料トライアルを実施しているので、事前に申し込み・登録しておいてください！
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)
（申込の際に、この記事を見た旨を記載して頂ければご案内がスムーズに行えます）
### 1-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
![ダッシュボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9da76a65-4f0e-1a7b-98f1-c435752ff2b3.png)

転送元に「YSS」を指定し、転送先に「Snowflake」を選択して転送設定作成ボタンを押します。
![新規作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/37c5c559-6d27-7e41-e774-c9842b3914af.png)




すると、設定画面になるので、必要な情報を入力していきます。
### 1-2. Yahoo!広告との連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![名前入力.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/fdce1208-cb08-35fe-c6fe-66ec3575fedc.png)


次に「転送元の設定」内の「接続情報を追加」ボタンを押します。
![接続情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/b55b6ddd-be06-1961-d69e-f03beb190d17.png)


別タブで接続情報の新規作成画面が開きますので、「Yahooアカウント認証」をクリックします。
![Yahoo接続情報.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/ec202451-5308-e91b-501d-9b8a72a4bd7e.png)

「Yahoo! JAPANビジネスIDでログイン」の画面に進むのでログインし、画面の指示に従い接続情報を登録すると、アクセストークンを発行することができます。


再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。
![qiitaサンプル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/2053dbdb-fc7e-bb8c-e5b1-94733aeca794.png)


これでYahoo!広告との連携は完了です。

### 1-3. Yahoo!広告からのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。

◯アカウントID
スポンサードサーチのアカウント管理画面から取得対象のアカウントIDを登録してください。

◯レポートタイプ
レポートタイプを選択して下さい。各レポートごとに取得できる項目が異なります。
レポートタイプは`ACCOUNT`,`CAMPAIGN`,`ADGROUP`,`AD`,`KEYWORDS`の中から選択できます。

◯データ取得期間
絞り込み範囲の開始日、終了日を入力してください。

◯カラム
データを取得するにあたって必要となるカラムを追加してください。

![yahoo設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/5d6061e1-c67f-c99a-879b-f90ca5c6f3f1.png)




### 1-4. 転送先Snowflakeの設定
転送元と同様に設定していきます。Snowflakeの接続情報を作成していきます。
転送先となるSnowflakeの接続先ホスト、ユーザー名、及びパスワードが必要になります。

![snowflake追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/1fa11954-2168-7e2d-879c-042a36d080d9.png)


先ほど作成した接続情報を選択し、転送先とするウェアハウス、データベース名、スキーマ名を設定します。
転送モードに関しては`replace`を選択します。各転送モードの詳細は[こちら](https://docs.trocco.io/s/article/転送先-Snowflake)の「転送モードについて」をご確認ください。

![snowflake.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/97aeede8-0036-004d-d08c-119db3c23366.png)



これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。

### 1-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではYahoo!広告から取り込んだデータが表示されています。
![転送設定の新規作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/06d22709-9589-711f-7029-0b60e67c1603.png)


転送したいデータが取れているので、このまま「スケジュール・通知設定」に進みます。

### 1-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。
![スケジュール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/76c8412f-df93-4f2c-b375-f008eff66cb9.png)

「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![スケジュール追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/e29cad63-b5ce-069b-5612-22f3756bed31.png)


### 1-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Snowflakeにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![実行する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0ce6c23e-d674-b313-9a1c-ce5350597e52.png)


これで転送は完了です！

## 2. Snowflakeの設定
特に設定することありません。データが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかは「データをプレビュー」押すことで確認してみます。
![データプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/b2d6967a-544b-53cd-b667-dfa6818f3fd6.png)


転送されていることが確認できました！
## 3. Lookerで可視化
それでは、これらのデータをLookerで可視化していきます。  
まずはSnowflakeとLookerの接続設定を行います。
管理タブを開いて「データベース」の「接続」を開きます。
![接続選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/7fab6490-acee-6690-a728-d3742491d9f3.png)


接続しているデータベース一覧が表示されています。ここで「Add Connection」→「Database Connection」から接続するデータベース情報を入力します。
![addconnection.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0fb758d6-073d-48db-47a7-28ba6b6fe234.png)
![connectionsettings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/528bc116-ca7f-4f03-1943-3635b634b586.png)



Snowflakeのデータベースに接続できたら、次はデータを可視化するために必要なLookMLプロジェクトを作成していきます。 開発タブを開いて「LookMLプロジェクトの管理」に移動します。 

![プロジェクトの管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4a6bf16b-e4e2-5b4a-401f-4b7ba6c7f9ab.png)

「New LookML Project」からLookMLプロジェクトを作成します。 
![newlookerml.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/04bb62b5-3bbc-b6b3-4508-96a35ee93f53.png)

![yssdata.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d5f10185-31bb-0bcd-c951-47865f2b8350.png)



「Create Project」を押したら、エディタでmodelとviewを定義します。 後々必要になるので、modelの中ではexploreを設定しておきましょう。 (書き方が分からない場合はLookerの[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development)を参照してください)
![views.yahoo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4d87bda7-32f1-47d8-0fc9-22a4e80931ec.png)
![model.yahoo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/093491cc-51d7-a225-338e-cfbf8b4120a1.png)



これで下準備が整いました。 トップページに戻って「New」からDashboardを作成します。 
![newdash.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9bf025e6-72f2-b47d-0614-fd1256d87c20.png)

白紙のダッシュボードが作成されるので「yss_ダッシュボード」と名前をつけます。
そして「Dashborardの編集」→「タイルの追加」を選択し、先ほどのmodel内で定義したExploreを選択します。

![yss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4c4e5aba-5003-c37d-ae76-a4863a71a86a.png)



ディメンションとメジャーを設定し、Tileに表示したいデータをプロットします。例えば、キーワードのクリック率を分析したいときはディメンションに「キーワード」とメジャーに「クリック数」を選択します。

![データ可視化例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/fb35154a-58a5-cbdd-6a86-c737ce4d8bdb.png)



そのほかに必要なタイルを作成し、ダッシュボードにまとめていきます。
![完成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d538375f-79df-8a2b-109e-974f31578f00.png)

完成しました！


## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)を使うとYahoo!広告の管理画面を触ることなく、簡単にデータを取得し、DWH(Snowflake)に貯めることが出来ます。
Snowflakeにデータを貯めると、Lookerと連携することでデータを使ってグラフを作り、可視化できます。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=yss_to_snowflake)

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

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