CData Facebook Ads Driver でFacebook 広告のデータを可視化する際のポイント徹底解説

facebookads

こんにちは。CData Software Japan マーケティング担当の杉本です。

私は最近Facebook 広告の運用も行っているんですが、やはり普段使い慣れたBIツールでダッシュボードを作りたいなーということがままあります。

そんな時CData Facebook Ads Driver を利用して、Power BI などのBI ツールを使いながら可視化しているのですが、Facebook Ads Driver の内部で利用しているAPI は機能がたくさんあって、どういう風にクエリするのが良いのか? というところがわからない部分もあるかなと思います。

そこで、今回はFacebook Ads Driver を利用する上で押さえておくと便利なクエリチップス集をお届けしたいと思います!

目次

Facebook Ads Driver の基本的なデータモデルの構造

Facebook Ads Driver では「広告やキャンペーンなどのデータ」「広告のインサイトに関するデータ」「主なユースケースに沿ったインサイトのテンプレートビュー」の3種類のデータモデルで構成されていると理解するのが良いです。

例えば登録している広告の一覧やキャンペーンの一覧を取得したいな、という時には以下のようなビューを利用します。

ビュー名

概要

Campaigns

キャンペーンの名前や予算などを取得

AdSets

広告セットの取得

Ads

広告の取得

AdCreatives

広告クリエイティブの取得

Pages

管理しているFacebook ページの取得

インサイトの取得は主に以下の3種類のビューを利用します。ただし後ほど詳しく解説しますが、このビューはとても柔軟な機能を持っているため様々な集計ができますが、ポイントを掴むのがちょっと難しいです。

ビュー名

概要

AdInsights

広告のインプレッションやクリック数のインサイトを取得

AdInsightsActions

広告のアクション、ページエンゲージメントやリンククリックなどの詳細内訳のインサイトを取得

AdInsightsAssets

広告の画像や動画、リンク、本文などのアセット毎のインサイトを取得

最後に主なユースケースに沿ったインサイトのテンプレートビューです。

こちらは内部的には上記のAdInsights のビューをベースに作られていますが、主なユースケースに合わせてデフォルトの集計項目などがプリセットされているビューになっており、手軽に分析結果が取得できます。

末尾に「_Report」とついているものが対象です。

ビュー名

概要

Action_Canvas_Component_Report

クリック数と広告費用対効果に焦点を当ててキャンバスコンポーネント別に分類したレポート

Action_Carousel_Card_Report

クリック数と広告費用対効果に焦点を当ててカルーセル別に分類したレポート

Action_Conversion_Device_Report

クリック数と広告費用対効果に焦点を当てて配信デバイスとコンバージョンデバイス別に分類したレポート

Action_Product_Id_Report

クリック数と広告費用対効果に焦点を当てて商品ID別に分類したレポート

Action_Reactions_Report

クリック数と広告費用対効果に焦点を当ててリアクション別に分類したレポート

Action_Video_Sound_Report

動画再生に焦点を当ててサウンドステータス別に分類したレポート

Action_Video_View_Type_Report

動画再生に焦点を当てた広告レポートを動画タイプ別に分類したレポート

Basic_Ad_Report

広告に焦点を当て、アクションタイプ別に分類したレポート

Basic_Ad_Set_Report

広告セットに焦点を当て、アクションタイプ別に分類したレポート

Basic_All_Levels_Report

アカウント、キャンペーン、広告セット、広告のすべてのレベルに焦点を当て、アクションタイプ別に分類したレポート

Basic_Campaign_Report

親キャンペーンと広告セットに関する情報をアクションタイプ別に分類したレポート

Delivery_Device_Report

キャンペーンに焦点を絞り、広告の表示に使用されたデバイスやプラットフォームごとに分類したレポート

Delivery_Platform_And_Device_Report

キャンペーンに焦点を当て、配信されたMetaプラットフォームとデバイス別に分類したレポート

Delivery_Platform_Report

キャンペーンに焦点を当て、配信されたMetaプラットフォーム別に分類したレポート

Delivery_Purchase_Roas_Report

キャンペーンに焦点を当て、ROAS別に分類したレポート

Demographic_Age_And_Gender_Report

年齢と性別の人口統計別に分類されたキャンペーンに焦点を当てたレポート

Demographic_Age_Report

年齢層別に分類されたキャンペーンに焦点を当てたレポート

Demographic_Country_Report

キャンペーンに焦点を当て、国の人口統計別に分類

Demographic_DMA_Region_Report

指定されたマーケットエリア別に分類されたキャンペーンに焦点を当てたレポート

Demographic_Gender_Report

性別別に分類されたキャンペーンに焦点を当てたレポート

Demographic_Region_Report

キャンペーンに焦点を当て、国別の地域別に分類したレポート

レポートビューを使ってPower BI を使ってどんなデータが取れるか見てみよう

とりあえずどんなデータが取得できるものかな? みたいな形でさくっと試したい場合は、前述した「_Report」とついているビューを触ってみるのが良いです。

特に使い勝手が良くわかりやすいのは、以下の4種類かなと思います。

  • Basic_Ad_Report
  • Basic_Ad_Set_Report
  • Basic_All_Levels_Report
  • Basic_Campaign_Report

これを実際にPower BI から使ってみましょう。

まずWeb Site からFacebook Ads ODBC Driver をダウンロードし、セットアップします。

https://www.cdata.com/jp/drivers/facebookads/odbc/

セットアップ後、以下のような接続画面が表示されるので、対象のFacebook 広告のアカウントID を指定して、接続を行いましょう。

コネクションが作成できたら、Power BI を立ち上げて、「データを取得」をクリック

データソースとして「ODBC」を選択します。

データソース名の一覧から先程設定したFacebook Ads のコネクションを選択しましょう。

認証方法は「現在の資格情報を使用する」でOKです。

これで以下のように「Basic_Ad_Report」を選択することで、月毎かつアクション毎の広告レポートが取得できます。

AdInsights ビューを使って、アドホックな分析をしてみよう

大まかな分析は前述のレポートビューを使うのが良いですが、CData Facebook Ads Driver は更に細かな粒度やアドホックにデータを取得できるのが大きな特徴になっています。

それではその肝である、「AdInsights」ビューの使い方を解説していきましょう。

ちなみに今回はあらかじめ接続文字列で対象のAccountIdを指定しています。このAccount Idは必須ではありませんが、ここで指定しておくことでInsightsを取得する時に暗黙的にこのAccount Idをベースに分析結果が取得できます。

実際にクエリを行っていく前に、まずAdInsights ビューのクエリ特性を把握しましょう。

https://cdn.cdata.com/help/HRK/jp/jdbc/pg_table-adinsights.htm

これはAdInsights を私の独自解釈でわかりやすいようにクエリ方法を記述したもので、基本的には5種類(+特殊1種)のカラムを駆使してデータを取得すると考えると良いかなと思います。

カラムカテゴリ

主なカラム

概要

ラベルカラム

AdAccountName

CampaignName

AdName

キャンペーン名や広告名を取得するためのカラムです。主にSELECT 部分で記述します。

指標カラム

Clicks

Impressions

CPC

Spend

など

実際の数値としてのクリック数やインプレッション数を取得するために指定するカラムです。主にSELECT 部分で記述します。

ブレークダウンカラム

Age

Country

Gender

ProductId

など

指標カラムを国毎や年代毎にブレイクダウンして表示するためのカラムです。主にSELECT 部分で記述します。

日付範囲指定カラム

DateStart

DateEnd

DatePreset

集計対象の基幹を指定するために指定するカラムです。基本的にはWHERE 句とセットで利用します。

 

集計単位カラム

TimeIncrement

Level

TimeIncrement はデータの集計日数単位を指定します。例えば1日毎の集計をしたい場合はTimeIncrement = 1、7日毎であればTimeIncrement = 7 と指定します。

Level はアカウント、キャンペーン、広告セット、広告のどのレイヤーで集計するかを指定します。例えばLevel = 'ad' であれば、広告単位で値を集計します。

特殊カラム

Target

アカウントや特定のキャンペーン、広告などを対象にする場合に指定します。

「アカウント・キャンペーン・広告セット・広告」単位の集計方法

全体像がイメージできた段階で1ステップ毎にクエリを書いていきましょう。

まずはシンプルに対象アカウントにおける「すべての広告のインプレッションの合計」を取得してみます。

SELECT AdAccountName, Impressions FROM AdInsights;

AdAccountName

Impressions

CData Japan

5,000

これをキャンペーン単位に分解していきましょう。

その場合は以下のように条件式で「Level='campaign'」を指定し、SELECT のカラムでCampaignName を追加します。これでキャンペーン毎のインプレッション数が特定できました。

SELECT AdAccountName, CampaignName, Impressions FROM AdInsights
WHERE Level = 'campaign';

AdAccountName

CampaignName

Impressions

CData Japan

A ホワイトペーパーキャンペーン

2500

CData Japan

B セミナーキャンペーン

2000

CData Japan

C ディスカウントキャンペーン

500

さらに細かくしてみましょう。広告セット単位の場合は「Level = 'adset'」を指定します。これで広告セット単位での集計値が取得できます。

SELECT AdAccountName, CampaignName, AdSetName, Impressions FROM AdInsights
WHERE Level = 'adset';

AdAccountName

CampaignName

AdSetName

Impressions

CData Japan

A ホワイトペーパーキャンペーン

コンバージョン数最大化用広告セット

1500

CData Japan

A ホワイトペーパーキャンペーン

リンククリック数の最大化用広告セット

1000

CData Japan

B セミナーキャンペーン

リンククリック数の最大化用広告セット

2000

CData Japan

C ディスカウントキャンペーン

コンバージョン数最大化用広告セット

300

CData Japan

C ディスカウントキャンペーン

リンククリック数の最大化用広告セット

200


ここまで来ると最後はわかりやすいですね。「Level = 'ad'」を指定することで広告単位の集計値になります。

SELECT AdAccountName, CampaignName, AdSetName, AdName, Impressions FROM AdInsights
WHERE Level = 'ad';

AdAccountName

CampaignName

AdSetName

AdName

Impressions

CData Japan

A ホワイトペーパーキャンペーン

コンバージョン数最大化用広告セット

デザインA

500

CData Japan

A ホワイトペーパーキャンペーン

コンバージョン数最大化用広告セット

デザインB

1000

CData Japan

A ホワイトペーパーキャンペーン

リンククリック数の最大化用広告セット

デザインC

1000

CData Japan

B セミナーキャンペーン

リンククリック数の最大化用広告セット

デザインA

1400

CData Japan

B セミナーキャンペーン

リンククリック数の最大化用広告セット

デザインB

600

CData Japan

C ディスカウントキャンペーン

コンバージョン数最大化用広告セット

デザインA

300

CData Japan

C ディスカウントキャンペーン

リンククリック数の最大化用広告セット

デザインB

200

これで集計の軸が決まるという感じですね。

指標を追加する

次に指標を追加してみましょう。先ほど決めた集計の軸に、Clicks やSpend といったカラムをSELECT に追加するだけでOKです。例えばキャンペーン一覧の「Impressions」「Clicks」「Spend」を取得した場合は以下のようなクエリになります。

SELECT AdAccountName, CampaignName, Impressions, Clicks, Spend FROM AdInsights
WHERE Level = 'campaign';

AdAccountName

CampaignName

Impressions

Clicks

Spend

CData Japan

A ホワイトペーパーキャンペーン

2500

150

6084.000000

CData Japan

B セミナーキャンペーン

2000

50

4032.000000

CData Japan

C ディスカウントキャンペーン

500

5

536.000000

集計の日付範囲を指定する

さて、ここまでなんとなく集計値を見てきましたが、実はこの集計値は過去30日間(last_30d)が暗黙的に指定されています。ですので、それ以上の期間で集計する場合や特定の期間のデータを集計したい場合は、別途細かく指定する必要があります。

https://developers.facebook.com/docs/marketing-api/reference/ad-account/insights/

まず簡単な指定方法はDatePreset  という条件式を追加して、集計範囲の規定値をコントロールすることです。

例えば過去90日間で取得したい場合は「DatePreset = 'last_90d'」と指定します。結果の範囲がわかりやすいようにSELECTに「DateStart, DateEnd」の項目も追加しておくと良いです。これで以下のように過去90日間の集計結果が取得できます。

SELECT DateStart, DateEnd, AdAccountName, CampaignName, Impressions FROM AdInsights
WHERE DatePreset = 'last_90d' AND Level = 'campaign';

DateStart

DateEnd

AdAccountName

CampaignName

Impressions

2024-12-19

2025-03-18

CData Japan

A ホワイトペーパーキャンペーン

2500

2024-12-19

2025-03-18

CData Japan

B セミナーキャンペーン

2000

2024-12-19

2025-03-18

CData Japan

C ディスカウントキャンペーン

500


このパラメータで利用できる値は以下のとおりです。

today, yesterday, this_month, last_month, this_quarter, maximum, data_maximum, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, last_quarter, last_year, this_week_mon_today, this_week_sun_today, this_year

ちなみに以下のようにDateStart とDateEnd の項目を利用することで明示的な日付も指定できます。この結果は上記の結果と同じ90日間分を取得しています。

SELECT DateStart, DateEnd, AdAccountName, CampaignName, Impressions FROM AdInsights
WHERE DateStart >= '2024-12-19' AND DateEnd <= '2025-03-18' AND Level = 'campaign';

1日毎や7日毎、30日毎などの集計を行う

日付の範囲が指定できたら、次にやりたいことは1日毎や7日毎、30日毎などの集計ではないでしょうか。推移はやっぱり見たいですよね。

そのような集計を行いたい場合は「TimeIncrement」を指定します。「TimeIncrement = 1」なら1日毎、「TimeIncrement = 7」なら7日毎の集計になります。

例えば過去7日間のインプレッションを1日毎で集計したい場合は、以下のような指定をします。今回はアカウント単位で集計していますが、Level を指定すれば、キャンペーンや広告単位でも集計可能です。

SELECT DateStart, DateEnd, AdAccountName, Impressions FROM AdInsights
WHERE TimeIncrement = 1 AND DatePreset = 'last_7d';

DateStart

DateEnd

AdAccountName

Impressions

2025-03-14

2025-03-14

CData Japan

2500

2025-03-15

2025-03-15

CData Japan

2000

2025-03-16

2025-03-16

CData Japan

500

2025-03-17

2025-03-17

CData Japan

1000

2025-03-18

2025-03-18

CData Japan

800


ちなみに「DatePreset = 'last_7d'」で過去7日間を指定しているのに、5行しか無いじゃないか! という感じなんですが、Facebook のInsights API がそういう仕様らしいです。

SELECT DateStart, DateEnd, AdAccountName, Impressions FROM AdInsights
WHERE TimeIncrement = 1 AND DatePreset = 'last_7d';

月単位はどうするの? と思われるかもしれませんが、「TimeIncrement = 'monthly'」という指定ができます。これで集計範囲を拡大すれば、月毎の集計値が取得できます。

SELECT DateStart, DateEnd, AdAccountName, Impressions FROM AdInsights
WHERE TimeIncrement = 'monthly' AND DatePreset = 'maximum';

DateStart

DateEnd

AdAccountName

Impressions

2025-01-01

2025-01-31

CData Japan

4000

2025-02-01

2025-02-28

CData Japan

8500

2025-03-01

2025-03-15

CData Japan

5000

性別や年齢層などでブレイクダウンをしてみる

性別や年齢層別で集計したい場合は、SELECT のカラムに「Age」や「Gendar」などを追加するだけです。

例えば年齢層別のインプレッションを取得したい場合は、以下のようなクエリになります。

SELECT AdAccountName, Age, Impressions FROM AdInsights;

AdAccountName

Age

Impressions

CData Japan

18-24

4000

CData Japan

25-34

8500

CData Japan

35-44

10000

CData Japan

45-54

4000

CData Japan

55-64

3000

CData Japan

65+

100


性別毎の集計方法は以下のように指定します。

SELECT AdAccountName, Gender, Impressions FROM AdInsights;

AdAccountName

Age

Impressions

CData Japan

female

8000

CData Japan

male

10000

CData Japan

unknown

500

ちなみにほとんどのブレイクダウンカラムは1種類しか指定できないみたいですが、Age とGendar のような特定の組み合わせは可能みたいです。

また、今回もアカウント単位で集計していますが、Level を指定すれば、キャンペーンや広告単位でも集計可能です。

アセットによるブレイクダウン・AdInsightsAssets の使い方

広告のリンク先URL やイメージ、テキスト、CallToAction などの単位でブレイクダウンした集計を行いたい場合は、「AdInsightsAssets 」ビューを利用します。

https://cdn.cdata.com/help/HRK/jp/jdbc/pg_table-adinsightsassets.htm

例えば、よく考えられるシチュエーションとしては、以下のような広告のCallToAction で「ダウンロード」「詳しくはこちら」どちらのほうが反応が良いのだろう? みたいな分析の時に利用できますね。

「AdInsightsAssets」ビューは前述した「AdInsights」ビューをベースに作られているので、基本的な使い方は同じです。そこに加えて以下の項目がブレイクダウンとして利用できるようになっています。

例えば、キャンペーンごとのCallToActionの種類によってインプレッションを集計したい場合は、以下のようなクエリを実行します。

SELECT CampaignName, CallToActionAssetName, Impressions FROM AdInsightsAssets 
WHERE Level = 'campaign';

CampaignName

CallToActionAssetName

Impressions

A ホワイトペーパーキャンペーン

APPLY_NOW

2500

A ホワイトペーパーキャンペーン

DOWNLOAD

1000

A ホワイトペーパーキャンペーン

LEARN_MORE

1500

B セミナーキャンペーン

APPLY_NOW

2000

B セミナーキャンペーン

DOWNLOAD

1000

ちなみにブレイクダウンの対象にできるアセットは1種類までですが、性別もしくは年代を組み合わせたドリルダウンは可能です。

SELECT CampaignName, CallToActionAssetName, Age, Impressions FROM AdInsightsAssets 
WHERE Level = 'campaign';

また、API 仕様上Account 単位では集計できないようなので、必ずLevel は指定するようにしましょう。

アクションを集計する:AdInsightsActions

AdInsightsAssets と同じようにAdInsights のアクションを集計することに特化したビューが「AdInsightsActions」です。

https://cdn.cdata.com/help/HRK/jp/jdbc/pg_table-adinsightsactions.htm

アクションとは投稿に対するリアクション(いいねやコメント)、リンククリックやランディングページの閲覧、ビデオの再生などインプレッションやコンバージョンのより詳細なユーザーのアクティビティのことですね。

「AdInsightsActions」ビューも前述した「AdInsights」ビューをベースに作られているので、日付範囲の指定やキャンペーン・広告セットでのレベル指定など基本的な使い方は同じですが、集計軸として様々なアクションのタイプとアトリビューションのメトリクスが取得できるようになっています。

まずはシンプルに自身のアカウントのアクションタイプ別の値を集計してみましょう。「AdInsightsActions」ではActionType とActionValue というカラムを使いながら、拡張していくというイメージを持ってもらうのが良いと思います。

SELECT ActionType, ActionValue FROM AdInsightsActions;

これをクエリすることで以下のような結果が取得できます。これで実際にランディングページを見た数や投稿に対するリアクションの数値を取得できます。

ActionType

ActionValue

page_engagement

2500

landing_page_view

1000

post_engagement

1500

video_view

2000

post_reaction

1000

キャンペーン事に集計する場合は、AdInsights ビューと同様にレベル指定を行います。

SELECT CampaignName, ActionType,ActionValue FROM AdInsightsActions
WHERE Level = 'campaign';

アトリビューション分析のための指標カラムの追加

「AdInsightsActions」ビューではアトリビューション分析のため指標カラムが以下の通り提供されています。これをSELECT 文に追加することで集計値として表示できます。

  • Action1dClick
  • Action1dView
  • Action7dClick
  • Action7dView
  • Action28dClick
  • Action28dView
  • ActionDDA

例えば以下のようにクエリできます。

SELECT ActionType,ActionValue,Action1dView FROM AdInsightsActions;

ActionType

ActionValue

Action1dView

page_engagement

2500

50

landing_page_view

1000

10

post_engagement

1500

13

video_view

2000

34

post_reaction

1000

8

ちなみにSELECT でアスタリスクを利用した上で指標の値を取得したい場合は、以下のように「ActionAttributionWindows」を条件式として指定します。

SELECT * FROM AdInsightsActions
WHERE ActionAttributionWindows = '1d_view,7d_view';

アクションのコレクションを追加

ActionType はVideoPlayActions やConversions といったコレクション(カテゴリといったほうがイメージが合うかもしれませんね)でより詳細な値を取得できます。

条件式で「ActionCollection = 'Conversions'」といった指定をします。

この指定できるコレクションのパラメータは以下の通り結構たくさんの種類があります。

「ActionValues, Actions, AdClickActions, AdImpressionActions, CatalogSegmentActions, CatalogSegmentValue, CatalogSegmentValueMobilePurchaseRoas, CatalogSegmentValueOmniPurchaseRoas, CatalogSegmentValueWebsitePurchaseRoas, ConversionValues, Conversions, ConvertedProductQuantity, ConvertedProductValue, CostPer15_secVideoView, CostPer2SecContinuousVideoView, CostPerActionType, CostPerAdClick, CostPerConversion, CostPerOneThousandAdImpression, CostPerOutboundClick, CostPerStoreVisitAction, CostPerThruplay, CostPerUniqueActionType, CostPerUniqueConversion, CostPerUniqueOutboundClick, InteractiveComponentTap, MobileAppPurchaseRoas, OutboundClicks, OutboundClicksCtr, PurchaseRoas, StoreVisitActions, UniqueActions, UniqueConversions, UniqueOutboundClicks, UniqueOutboundClicksCtr, UniqueVideoView15_sec, Video15_secWatchedActions, Video30_secWatchedActions, VideoAvgTimeWatchedActions, VideoContinuous2SecWatchedActions, VideoP100_watchedActions, VideoP25WatchedActions, VideoP50WatchedActions, VideoP75WatchedActions, VideoP95WatchedActions, VideoPlayActions, VideoPlayCurveActions, VideoPlayRetention0To15SActions, VideoPlayRetention20_to60SActions, VideoPlayRetentionGraphActions, VideoTimeWatchedActions, WebsiteCtr, WebsitePurchaseRoas」

例えばConversions を指定すると、以下のような結果が取得できます。アクションタイプの内容が変わったのがわかりますね。

SELECT ActionCollection, ActionType, ActionValue FROM AdInsightsActions
WHERE ActionCollection = 'Conversions';

ActionCollection

ActionType

ActionValue

Conversions

submit_application_total

10

Conversions

submit_application_website

5

ちなみに複数のコレクションを指定したい場合は以下のようにIN 句を使ってクエリできます。

SELECT ActionCollection,ActionType,ActionReaction,ActionValue FROM AdInsightsActions
WHERE ActionCollection IN ('Actions','Conversions','VideoPlayActions','VideoAvgTimeWatchedActions','OutboundClicks');

アクションのブレイクダウン

コレクションとは別にブレイクダウンのための項目もあります。例えばデバイス毎やリアクション(ライクやコメント)毎です。

  • ActionType
  • ActionCanvasComponentName
  • ActionCarouselCardId
  • ActionCarouselCardName
  • ActionDestination
  • ActionDevice
  • ActionLinkClickDestination
  • ActionReaction
  • ActionTargetId
  • ActionVideoSound
  • ActionVideoType

例えば以下のようなクエリをすることで、アクションタイプのデバイス毎の集計値が取得できます。

SELECT ActionType, ActionDevice, ActionValue FROM AdInsightsActions;

ActionType

ActionDevice

ActionValue

page_engagement

desktop

1500

page_engagement

iphone

700

page_engagement

android_smartphone

300

landing_page_view

desktop

700

landing_page_view

iphone

200

landing_page_view

android_smartphone

100

post_engagement

desktop

1000

post_engagement

iphone

500

video_view

ipad

2000

post_reaction

desktop

1000

おわりに

もともとのFacebook Ads API がかなり複雑かつ色んなデータが取得できるので、だいぶガッツリとした記事になってしまいました!

とはいえ、もし何か使い方でわからない部分があれば、お気軽にテクニカルサポートまでお問い合わせください。

https://www.cdata.com/jp/support/submit.asp

トライアル・お問い合わせ

関連コンテンツ