こんにちは、テクニカルサポートエンジニアの宮本です。
今回は Yahoo! 広告のデータを定期的に BigQuery にレプリケートして、ジョブ実行時のデータをスナップショットとして保持する方法をご紹介します。
Yahoo! 広告とは?
Yahoo! Japanが提供するWeb広告サービスです。
ads-promo.yahoo.co.jp
広告は Yahoo! JAPANの検索結果に表示される「検索広告」とコンテンツページに表示される「ディスプレイ広告」の2種類があります。
さらに Yahoo! 広告では広告業務の自動化やレポートの取込を行うAPIが提供されており、様々なツール・プログラムと連携させることが可能になっています。
本記事のシナリオ
今回はYahoo! 広告で作成したキャンペーン状況を県別に集計したレポート情報をレプリケーションツールの CData Sync を用いて定期的に BigQuery にレプリケートしていきます。また、実行時のレポートデータを BigQuery で保持できるように連携ジョブ実行ごとにテーブルを作成します。
ではさっそくやっていきましょう。
CData Sync とは?
クラウドサービスからデータベースへのノーコードレプリケートアプリケーションになります。レプリケートとは同期するという意味になりますので、CDataSync から接続できるクラウドサービスのデータをデータベースにまるっとコピーすることができます。
https://www.cdata.com/jp/
CData Sync のダウンロード&インストール
AMI 版もありますが、今回は.NET版をダウンロードしてローカルマシンにインストールしていきます。
それでは下記リンクより CData Sync .NET エディションをダウンロードしていきます。
https://www.cdata.com/jp/sync/download/
ダウンロードしましたら、インストーラーを実行して基本的にはそのまま進んでいただければすぐにインストールが完了します。
インストール完了後にCDataSync が起動したら、「http://localhost:8019」にアクセスし、情報タブよりトライアルアクティベートを行います。(トライアルは30日間可能です)
Yahoo! 広告のコネクタを追加
次に接続画面を開きます。デフォルトでは Yahoo! 広告のコネクタは CData Sync にセットされていませんが、以下の「Add More+」ボタンをクリック後、「yahoo」などで検索することでコネクタが表示されますのでそのまま選択してインストールすることが可能です。
もしコネクタ追加方法が不明な場合はテクニカルサポートまでご連絡ください。
CData Software Japan - Technical Support
接続設定(Yahoo! 広告)
コネクタが追加されましたら、Yahoo! 広告のアイコンをクリックして接続設定を行います。
接続情報名を設定しましたら、Advanced タブを開きます。
Advanced より下記項目にそれぞれアカウント情報などを設定します。
項目 | 項目内容 |
---|---|
Display Ads Account Id | ディスプレイ広告のアカウントID |
Search Ads Account Id | 検索広告のアカウントID |
Language | レポートの表示項目に利用される言語設定。ENとJPが選択できます。今回BigQueryは日本語カラム名が利用できないのでENを選択しましょう |
設定しましたら、もう一度設定タブを表示して右下の「次に接続」ボタンをクリックします。
パスワードを入力して Yahoo! にログインします。
CData Sync からのアクセスを許可します。
この画面が表示されれば接続成功となります。
最後に接続情報の保存を行って完了です。
接続設定(BigQuery)
BigQuery へは OAuth 認証とサービスアカウントでの認証方法がありますが、今回は OAuth 認証を行います。
OAuth 認証の場合は プロジェクトID とデータセットID を指定するだけでOKです。入力が終わりましたら右側の接続ボタンをクリックします。
あとは Google アカウントでログインするだけでOKです。
これで接続設定が完了となります。
ジョブ作成
実際にどのデータをどうやってレプリケートするかの定義をここから行っていきます。
まずはジョブ画面を開き、「ジョブを追加」をクリック後、任意のジョブ名と先ほど作成した接続情報をそれぞれデータソース・同期先に指定したら作成ボタンをクリックします。
同期先テーブル名に動的に実行日を付与する設定
本シナリオでは定期実行した際にその都度テーブルを作成することを目的としているので、同期先テーブル名には動的に実行日が付与されるようにする必要があります。
CData Sync ではイベントタブのPre-Job の中でジョブに引き継ぐための処理を手動で設定することができます。今回は実行日を取得してその日時を使ってテーブル名に付与していきます。
それでは設定していきましょう。
イベントタグを開き、Pre-Job 内に下記コードを追加します。
<api:set attr="out.env:currentdate" value="[null | now() | todate('yyyyMMdd')]" /> <api:push item="out"/>
変更を保存ボタンでコードを保存後、テーブルタブをクリックしてクエリ設定画面をひらきます。
テーブルを追加ボタンをクリックすると Yahoo! 広告 に対応したエンドポイントがテーブル名として一覧表示されます。
ただ今回はキャンペーン状況を県別に集計したレポートデータを BigQuery にレプリケートするために条件などを付与するため、カスタムクエリより下記クエリを設定します。
REPLICATE [ReportSearchAdsGeo_{env:currentdate}] SELECT [CampaignName], [Prefecture], [Clicks], [Impressions] FROM [ReportSearchAdsGeo] WHERE [ReportDateRangeType] = 'ALL_TIME'
なお、{env:currentdate} を同期先テーブル名に付与していますが、これが先ほど Pre-Job で設定した現在日時取得の実行結果が入る変数になります。
ちなみにクエリの書き方やYahoo!広告の詳しいテーブル情報は下記ヘルプを参照してみてください。もしクエリの書き方が不明な場合はテクニカルサポートまでお問い合わせください。
Yahoo!広告 ディスプレイ広告テーブル: CData JDBC Driver for YahooAds - DisplayAds Data Model
Yahoo!広告 検索広告テーブル: CData JDBC Driver for YahooAds - SearchAds Data Model
テクニカルサポート: CData Software Japan - Technical Support
ジョブスケジューリング
スケジュールタブより設定します。今回は日処理として実行する想定ですので、インターバルを Daily&実行時間帯を設定します。
これでスケジューリングも設定したジョブの設定が完了しました。
ジョブの実行
毎日22時にジョブが実行されるようにセットしましたが、初回実行日は 2022/01/24 となっておりますので、実行日時まで待ちます。
では 2022/01/24 22:00 になったのでジョブ画面を開いて確認してみると、22時に48件レプリケートしたと結果が表示されていました。
BigQuery 側も参照してみますと、このように実行日付きのテーブルが作成されていることが確認できました。
ちなみにこのタイミングで再度ジョブ一覧画面を参照すると、次回実行日時が2022-01-25 22:00 と確認することができ、
ジョブが自動的に実行されるようなっています。
BigQuery にもテーブルが新規追加されました。
おわりに
いかがでしたでしょうか。今回の内容で Yahoo! 広告のデータを BigQuery に蓄積することができました。これで Yahoo! 広告以外のデータも BigQuery にため込むことで更なる分析や活用シーンが増えてくると思います。
最後に、今回ご紹介したCData Sync は 30 日間無償でのトライアル利用が可能となっておりますので、是非お試しください!