概要: AppsFlyer ROI360 の一部である Cost ETL は、メディアソースごとに利用可能な最高の粒度を持つキャンペーンコストデータを広告主に提供します。毎日4回更新されるデータは、広告主のBIシステムに格納できるようにAWS S3 または GCS バケットに配信されます。
Cost ETL の原則
キャンペーンのコストデータは次のように書き込まれます。
- コストデータの表示、転送、およびシステムへのロードを行うためバケットへ配信されます。
- 毎日4回バケットへ配信されます(更新頻度:日中)。
- 当日と過去6日間(本記事では7日間と表記)の他、14日目、29日、88日も同様に配信できます。過去にさかのぼったデータにより、コストデータレポートの更新や訂正が可能になります。
- アトリビューション、クリック、インプレッションと一致したコスト。
注意:- 過去7日分のデータは、メディアソースから新たに取得したものです。14日目、29日目、88日目のデータは再処理しています。
- コストデータのみ遡及して更新され、アトリビューションデータは更新されません。
データは次の主なディメンションで提供されます。
- 地域:国別の内訳
- チャネル:メディアソースのチャネル。例えば、Googleの場合「YouTube」等
レポートに含まれる他のディメンションと指標は、必要に応じてカスタマイズできます。
サンプルファイルを見る:注意:提供されているサンプルは、チャネルごとのデータ内訳が記載されたExcelファイルです。Cost ETL ファイルは、Parquetファイルとしてバケットに送信されます。
実装について
レポートのディメンション
- レポートは、Cost ETL に含まれる全てのアプリを対象に、1日あたり、バッチごとに配信されます。
- データがバケットに書き込まれるたびに、つまり 1 日に 4 回、過去 6 日間と 14 日、29 日、88 日の履歴、更新、修正など、使用可能なすべてのデータが書き込まれます。データロードプロセスでは、この点を考慮に入れてください。
- レポート構造の詳細はファイルフィールドテーブルにあります。構造は以下のとおりです:
- 概要レポート:より簡単かつ迅速に使用できるように、より粒度の細かいものとなっています。
- ディメンションレポート:保証されたプライマリーディメンションがあります。つまり全てのメディアソースで利用できるディメンションがこのレポートに含まれています。一方、メディアソースが主要なディメンションデータを提供していない場合、そのデータは特定のディメンションレポートには含まれません。セカンダリーディメンションが利用可能な場合は、これらも含まれていますが、これらは常に含まれているものではありません。
- 利用可能なプライマリー(保証)ディメンションは次のとおりです:
- 地域:国別にグループ化されたデータ
- チャネル:メディアソースのチャネル。例えば、Googleでいう「YouTube」、メタ広告でいう「Instagram」等。
- ビジネスニーズに最も適したディメンションを使用してください。メディアソースにより異なる場合があります。
- [クローズドベータ] すべてのコストレポート:地域ディメンションに基づいています。AppsFlyerに追加されていないアプリ/プラットフォームを含む、すべてのプラットフォームでのすべてのマーケティング活動のコストデータが含まれます(この場合、アプリIDは不明とマークされます)。
ディレクトリとファイル名の構造
- バケットに書き込まれたデータは、ディレクトリとファイル構造が記述されています。サンプルファイルを見る: 注意:提供されているサンプルは、チャネルごとのデータ内訳が記載された Excel ファイルです。Cost ETL ファイルは、Parquet ファイルとしてバケットに送信されます。
- Cost ETL がディレクトリへの書き込みを完了すると、成功ファイルを作成してフラグが設定されます。これは常にディレクトリ内の最新のタイムスタンプです。
- データが書き込まれるたびに、当日と過去6日間(記事内では7日間分のデータと記載されています)、および14日間、29日間、88日間のデータが含まれます。
- フォルダ/ファイル数は、次のとおりです。
- 概要:1日あたり4つのバッチフォルダー。
- 各バッチフォルダには、7日間のデータを含むParquetファイルが含まれています。
- ディメンション:常に含まれる各ディメンションには、1日あたり4つのバッチフォルダが含まれています。
- 各バッチフォルダには、番号付けが1から始まるデータを含むParquetファイルが含まれています。
- [クローズドベータ] すべてのコスト:地域ディメンションに基づくと、1日あたり4つのバッチフォルダが含まれます。
- 概要:1日あたり4つのバッチフォルダー。
ディレクトリ構造の例
ディレクトリ構造
/<advertiser bucket name>/cost_etl/version/dt=<yyyy-mm-dd>/b=<n>/
<dimension>/<file name>
ディレクトリ構造
変数 |
コンテンツ |
---|---|
advertiser_bucket_name |
コストETL設定で定義された通り:af-xpend-cost-etl-<af-account-id>-[your bucket name suffix] |
cost_etl | この値は常に「cost_etl」です |
version | Cost ETL のバージョン |
date |
コストの日付 形式: yyyy-mm-dd |
batch | 数値 1-4 |
ディメンション |
データディメンション:
|
file_name |
|
パーケットファイル番号 |
|
ファイル名の構造
part-<number>
例
2020年6月23日の最初のデータプルでは、ディレクトリとファイル名の構造は次のようになります。
/bucket-name/cost_etl/v1/dt=2020-06-23/b=1/geo/part-00001
ファイル項目
フィールド / ディメンション
項目 |
備考 |
常に記入 |
形式 |
サマリーファイルに含まれる |
---|---|---|---|---|
date |
メディアソースによってレポートされたコストの日付 |
はい |
String yyyy-mm-dd |
✓ |
app_id |
AppsFlyerプラットフォームのアプリID |
はい |
文字列 |
✓ |
media_source |
広告を表示するメディアソース |
はい |
文字列 |
✓ |
os |
デバイスのOS想定値:
|
はい |
文字列 |
- |
代理店 |
広告を配信する代理店 |
いいえ |
文字列 |
- |
キャンペーン |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
campaign_id |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
adset |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
adset_id |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
ad |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
ad_id |
広告階層のコンポーネント |
いいえ |
文字列 |
- |
ad_account |
|
いいえ |
文字列 |
- |
通貨 |
AppsFlyerでアプリに対して定義された広告主支出の通貨 |
はい |
ISO-4217 に準拠した3文字の文字列 |
✓ |
original_currency |
コンバージョン前にネットワークから報告されたコストの通貨 |
はい |
ISO-4217 に準拠した3文字の文字列 |
- |
timezone |
|
はい |
文字列 |
- |
地域 |
広告階層のディメンション |
いいえ |
ISO 3166に準拠した2文字の文字列 |
✓ |
チャネル |
広告階層のディメンション |
いいえ |
文字列 |
- |
keyword_term |
ユーザーがオンライン検索に使用する単語 |
はい |
文字列 |
- |
keyword_id |
ASAキーワード用語のID |
はい |
文字列 |
- |
site_id |
パブリッシャーID/配信面 |
いいえ |
文字列 |
- |
campaign_objective |
キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
文字列 |
- |
cost_model |
キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
文字列 |
- |
af_cost_model |
AppsFlyerによってマッピングされ正規化されたコストモデル。キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
文字列 |
- |
bid_strategy |
キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
文字列 |
- |
af_bid_strategy |
AppsFlyerによってマッピングされ正規化された入札ストラテジー。キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
文字列 |
- |
bid_amount |
キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
Integer |
- |
original_bid_amount |
キャンペーンプロパティのコンポーネント。詳細はこちら |
いいえ |
Integer |
- |
指標
項目 |
備考 |
常に記入 |
形式 |
サマリーファイルに含まれる |
---|---|---|---|---|
インプレッション |
|
はい。 特定のメトリックで使用可能な値がない場合は、0が入力されます。 |
Integer |
✓ |
clicks |
|
Integer |
✓ |
|
reported_impressions |
メディアソースにより計測 |
Integer |
✓ |
|
reported_clicks |
メディアソースにより計測 |
Integer |
✓ |
|
installs |
AppsFlyerにより計測 |
Integer |
✓ |
|
reported_conversions |
メディアソースにより計測 |
Integer |
|
|
re_engagements |
AppsFlyerにより計測 |
Integer |
✓ |
|
re_attributions |
AppsFlyerにより計測 |
Integer |
✓ |
|
cost |
支出額(関連する場合、代理店手数料を含む) |
パラメータの値 |
✓ |
|
original_cost |
ネットワークによって報告されたコスト、通貨換算前のネットワークによってレポートされた通貨(関連する場合はAppsFlyerによって計算された代理店手数料が追加されます) |
パラメータの値 |
- |
|
impressions_discrepancy |
|
整数 |
- |
|
clicks_discrepancy |
|
整数 |
- |
|
installs_discrepancy |
|
整数 |
- |
|
fees |
通常の広告コストに加えて代理店が請求する手数料。AppsFlyerにより計測 |
はい |
整数 |
- |
cost_without_fees |
代理店手数料を差し引いた金額。AppsFlyerにより計測 |
はい |
整数 |
- |
original_cost_without_fees |
広告ネットワークからレポートされた、広告代理店手数料を含まないオリジナルコスト |
はい |
整数 |
- |
ctr |
|
いいえ |
整数 |
- |
cvr |
|
整数型 |
- |
|
ecpm |
|
整数 |
- |
|
cpi |
|
整数 |
- |
|
ccvr |
|
整数 |
- |
|
cvvr |
|
整数 |
- |
|
reported_cvr |
|
整数 |
- |
|
ecpc |
|
整数 |
- |
|
video_25p_views |
動画が25%再生されました。アドネットワークによりレポート |
整数 |
- |
|
video_50p_views |
動画が50%再生されました。アドネットワークによりレポート |
整数 |
- |
|
video_75p_views |
動画が75%再生されました。アドネットワークによりレポート |
整数 |
- |
|
video_completions |
アドネットワークによりレポートされます |
整数 |
- |
AWS S3 の Cost ETL のセットアップ
この設定手順は、アドミン(管理者)ユーザが行う必要があります。
はじめる前に:
- Cost ETL の設定には、独自のAWSバケットの設定(そしてそれにAppsFlyerがデータを書き込む権限の付与)、およびAppsFlyerでの Cost ETL 設定が必要です。
- Cost ETL の設定を完了するには、AWSアドミン権限とAppsFlyer管理画面へのアクセス権限の両方が必要です。
- セットアップ中は、AWSとAppsFlyerの両方にタブを開いたままにしておいてください。
- 注意:KMSのバケット暗号化サポートは現在ベータ版です。
AWS バケットと Cost ETL を設定するには:
- AWSコンソールにサインインします。
- S3サービスへ進みます。
- バケットを作成します:
- Create bucketをクリックしてください。
- 以下のようにバケット名を入力します:必須のプレフィックス
af-xpend-cost-etl-acc-
から始めて、サフィックスをフリーテキストとして追加します。- - 御社の
af-account-id
は次の手順7-9に示すように、AppsFlyer UI で見つけることができます。 - Amazon S3バケットの命名要件を参照してください。
- 御社の
- Create bucketをクリックしてください。
- AppsFlyerのサイドメニューから、エクスポート > Cost ETLを選択します。
- Cost ETLを有効にしてください。
- レポートスケジュールにて、最初のレポートを受信するタイミングを選択してください。その後のレポートは、その後約6時間間隔で到着します。
-
Amazon S3の設定に進みます。
- ドロップダウンメニューから、S3バケットの地域を選択してください。
対象の地域が表示されない場合は、CSMまでお問合せください。 - Amazon S3バケット名を入力してください。
-
次へをクリックしてください。
バケットポシリーのコードスニペットが表示されます。
- バケットポリシーのコードスニペットをコピーし、AWSの設定画面に貼り付けてください。
- AWS にて、Cost ETL 用に作成したバケットを選択してください。
- 権限タブへ進んでください。
- Bucket policy セクションにて、Edit(編集)をクリックしてください。
- バケットポリシー画面が開きます。
- バケットポリシースニペットを画面に貼り付けてください。
- AppsFlyer の Cost ETL 設定にて、次へをクリックしてください。
バケットの検証ステップが表示されます。 -
検証をクリックしてください。
検証が成功しましたというメッセージが表示されることを確認してください。 - 次へをクリックしてください。
- 1つ以上のアプリまたは全てのアプリを選択してください。 All (全て) を 選択すると、自動的に今後追加するアプリも含まれるようになります。
- 適用をクリックしてください。
- 少なくとも1つの保証されているディメンションを選択してください:チャンネルおよび/または地域
- 少なくとも追加のディメンションを1つ選択してください。
- レポートに含まれる指標を少なくとも1つ選択してください。
- 適用をクリックしてください。
GCS のCost ETL のセットアップ
この設定手順は、アドミン(管理者)ユーザが行う必要があります。
はじめる前に:
- Cost ETL の設定には、独自のAWSバケットの設定(そしてそれにAppsFlyerがデータを書き込む権限の付与)、およびAppsFlyerでの Cost ETL 設定が必要です。
- コストETL の設定を完了するには、AWS アドミン権限と AppsFlyer UI へのアクセス権限の両方が必要です。
- セットアップ中は、AWSとAppsFlyerの両方にタブを開いたままにしておいてください。
GCS バケットと Cost ETL を設定するには:
- GCS コンソールにサインインします。
- バケットを作成します。
バケットに以下のような名前をつけます。- 必須のプレフィックス
af-xpend-cost-etl-acc-
から始めて、サフィックスをフリーテキストとして追加します。- - 御社の
af-account-id
は次の手順6-8に示すように、AppsFlyer UI で見つけることができます。 - 参照:GCS バケットの命名要件
- 必須のプレフィックス
- AppsFlyerのサイドメニューから、エクスポート > Cost ETLを選択します。
- Cost ETLを有効にしてください。
- レポートスケジュールにて、最初のレポートを受信するタイミングを選択してください。その後のレポートは、その後約6時間間隔で到着します。
- データ保存先 (Data destination) にアクセスし、 を選択します。
- GCSバケット名を入力します。
-
次へをクリックしてください。
GCSの権限設定に使用する、AppsFlyerのサービスアカウントが表示されます。 - GCS コンソールで、バケットの IAM パーミッション を設定します。
-
AppsFlyer のサービスアカウントを Cost ETL バケットのプリンシパルとして追加します。
- Storage Object Admin のロールを割り当てます。
-
- AppsFlyer の Cost ETL 設定にて、次へをクリックしてください。
バケットの検証ステップが表示されます。 -
検証をクリックしてください。
検証が成功しましたというメッセージが表示されることを確認してください。 - 次へをクリックしてください。
- 1つ以上のアプリまたは全てのアプリを選択してください。 All (全て) を 選択すると、自動的に今後追加するアプリも含まれるようになります。
- 適用をクリックしてください。
- 少なくとも1つの保証されているディメンションを選択してください:チャンネルおよび/または地域
- 少なくとも追加のディメンションを1つ選択してください。
- レポートに含まれる指標を少なくとも1つ選択してください。
- 適用をクリックしてください。
AWSオブジェクトの所有権
AWSでは、デフォルトで、AppsFlyerがオブジェクトをバケットに書き込む場合、そのオブジェクトのオーナーはAppsFlyerです。データ取り込みプロセスによっては、デフォルトの所有権をあなた(バケット所有者)に変更する必要がある場合があります。
自社バケットのオブジェクトの所有権を変更する方法:
-
AWS Management Consoleにサインインし、Amazon S3 console https://console.aws.amazon.com/s3/を開いてください。
-
Bucketsリストにて、S3 Object Ownershipを有効にしたいバケット名を選択してください。
-
権限タブへ進んでください。
-
Object Ownership で Edit をクリックしてください。
-
Bucket owner preferred を選択してください。
-
保存をクリックしてください。
ベストプラクティス
データの上書き
データを取得し分析する際は、特定の日付とバッチのデータを取得するか、全ての過去のデータを現在のバッチのデータで上書きすることをお勧めします。そうしないと、同じデータが繰り返し表示される可能性があります。
例えば、2月20日のバッチ1には2月14-20日のデータが含まれていますしかし、2月19日に書かれたバッチにも、2月14日~2月19日のデータが含まれていました。2月19日に受信した以前のデータを、直近の2月20日のバッチで受信したデータで上書きします。
地域 vs. チャネル
全てのネットワークが全てのディメンションのデータを一緒に提供しているわけではありません。メタ広告の地域データやチャンネルデータは、その代表的な例です。2つの別々のデータセットが提供されるのは、このためです。地域データセットには地域データが、チャネルデータセットにはチャネルデータが含まれることが保証されています。
多くの場合、大部分のメディアソースでは、地域とチャネルデータは同じになります。そのため、ビジネスニーズに応じて、いずれかのデータセット(地域またはチャネル)を取り込んでください。
メディアソースとの連携に関する契約にチャンネルが含まれておらず、チャンネルが空白の場合、そのデータにチャンネルが含まれているものとして扱います。
集計データ
Cost ETL は、アドネットワークから抽出できる最も粒度の細かいフレキシブルなデータを提供します。このような膨大な量のデータから実用的なインサイトを引き出すには、ビジネスニーズに最適な方法でデータを集約することをお勧めします。例えば、キャンペーンおよび国レベルでコストデータを理解する必要がある場合は、これらのディメンションを使用してください。
ネットワーク全体の標準化
すべてのネットワークが同じ粒度のデータを提供するわけではありません。たとえば、メタ広告はサイトIDのコストデータを提供しませんが、X Adsは地理コストデータを提供しません。Cost ETL データを集計する場合は、このようなケースに注意し、ネットワークを比較する時に同様のデータを確認します。
データの比較
Cost ETL は、お客様のすべてのコストデータに関する情報を提供します。Cost ETL で提供された一部のキャンペーンは、一部の AppsFlyer 管理画面に表示されません。例えば、非アクティブなキャンペーンのデータ、つまり、 インストールが記録されていないキャンペーン です。データを比較するためには、オーバービュー管理画面で特定のキャンペーン ID を見つけ、Cost ETL でのコストデータと比較してください。コストデータの入手方法について詳しくはこちら