コストETL—バケット内の粒度の細かいキャンペーンコスト

概要:AppsFlyer Xpendの一部であるコストETLは、メディアソースごとに最適な粒度でキャンペーンコストを広告主に提供します。毎日4回更新されるデータは、広告主のBIシステムに格納できるようにAWS S3バケットに配信されます。

5896_CostETL_graphic.png

コストETLの原則

キャンペーンのコストデータは次のように書き込まれます。

  • コストデータの表示、転送、およびシステムへのロードを行うためバケットへ配信されます。
  • 毎日4回バケットへ配信されます(更新頻度:日中)。
  • 当日と過去6日間(本記事では7日間と表記)の他、14日目、29日、88日も同様に配信できます。過去のデータにより、データレポートの更新と修正が可能になります。

データは次の主なディメンションで提供されます。

  • 地域:国別の内訳
  • チャネル:メディアソースのチャネル。例えば、Googleの場合「YouTube」等

レポートに含まれる他のディメンションと指標は、必要に応じてカスタマイズできます。

実装について

レポートのディメンション

  • レポートは、コストETLに含まれる全てのアプリを対象に、1日あたり、バッチごとに配信されます。
  • データがバケットに書き込まれるたびに(つまり1日4回)、過去6日間および、14日間、29日間、88日間の履歴を含む、すべての利用可能なデータが記入されます。データ格納プロセスでは、この点を考慮してください。
  • レポート構造の詳細については、ファイル項目の表をご確認ください。構造は次のとおりです。
    • サマリーレポートは、より簡単かつ迅速に取り込めるよう粒度が低くなっています。
    • ディメンションレポートには、常に含まれているプライマリーディメンションが含まれています。つまり全てのメディアソースで利用できるディメンションがこのレポートに含まれています。一方、メディアソースが主要なディメンションデータを提供していない場合、そのデータは特定のディメンションレポートには含まれません。セカンダリーディメンションが利用可能な場合は、これらも含まれていますが、これらは常に含まれているものではありません。
    • 利用可能なプライマリー(保証)は次のとおりです:
      • 地域:国別にグループ化されたデータ
      • チャネル:メディアソースのチャネル。例えば、Googleでいう「YouTube」、Facebookでいう「Instagram」等
    • ビジネスニーズに最も適したディメンションを使用してください。メディアソースにより可用性が異なる場合があります。

ディレクトリとファイル名の構造

  • S3バケットに取り込まれるデータには、ディレクトリとファイル構造があります。
  • コストETLがディレクトリへの書き込みを完了すると、success.txt というファイルが作成されることによりフラグが設定されます。これは、常にディレクトリ内の最新のタイムスタンプです。
  • データが書き込まれるたびに、当日と過去6日間(記事内では7日間分のデータと記載されています)、および14日間、29日間、88日間のデータが含まれます。
  • フォルダ/ファイル数は、次のとおりです。
    • サマリー:1日あたり4つのバッチフォルダ。
      • 各バッチフォルダには、7日間のデータを含むParquetファイルが含まれています。
    • ディメンション:常に含まれる各ディメンションには、1日あたり4つのバッチフォルダが含まれています。
      • 各バッチフォルダには、番号付けが1から始まるデータを含むParquetファイルが含まれています。

ディレクトリ構造の例

cost_etl_structure_4.jpg

ディレクトリ構造

/<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 コストETLのバージョン
date

コストの日付

形式: yyyy-mm-dd

batch 数値 1-4
ディメンション

データディメンション:

  • geo
  • channel
file 00001から始まる番号
ディレクトリ構造

ファイル名の構造 

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

はい

String

media_source

広告を表示するメディアソース

はい

String

agency

広告を配信する代理店

いいえ

String

-

campaign

広告階層のコンポーネント

いいえ

String

-

campaign_id

広告階層のコンポーネント

いいえ

String

-

adset

広告階層のコンポーネント

いいえ

String

-

adset_id

広告階層のコンポーネント

いいえ

String

-

ad

広告階層のコンポーネント

いいえ

String

-

ad_id

広告階層のコンポーネント

いいえ

String

ad_account

  • コストデータが取得される広告アカウント
  • oAuth(認証情報でのログイン)を使用して連携するネットワーク(例: GoogleやFacebook)に関連します

いいえ

String

-

currency

AppsFlyerでアプリに対して定義された広告主支出の通貨

はい

ISO-4217 に準拠した3文字の文字列

original_currency

変換前にネットワークから報告されたコストの通貨

はい

ISO-4217 に準拠した3文字の文字列

-

timezone

  • AppsFlyerに保存されているデータのタイムゾーン
  • ネットワークは、AppsFlyerで定義されているものとは異なるタイムゾーンでデータを報告することがあります。このデータポイントは、AppsFlyerとネットワーク間のコストの不一致を説明するのに役立ちます

はい

String型

-

geo

広告階層のディメンション

いいえ

ISO 3166に準拠した2文字の文字列

channel

広告階層のディメンション

いいえ

String

- 

Keywords

ユーザーがオンライン検索に使用する単語

はい

String型

-

site_id

パブリッシャーID/配信面

いいえ

String型

-

campaign_objective

キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

String型

-

cost_model

キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

String型

-

af_cost_model

AppsFlyerによってマッピングされ正規化されたコストモデル。キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

String型

-

bid_strategy

キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

String型

-

af_bid_strategy

AppsFlyerによってマッピングされ正規化された入札ストラテジー。キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

String型

-

bid_amount

キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

Integer

-

original_bid_amount

キャンペーンプロパティのコンポーネント。詳細はこちら

いいえ

Integer

-

ファイル/ディメンション

項目

備考

常に記入

形式

サマリーファイルに含まれる

impressions

AppsFlyerにより計測

はい。

特定のメトリックで使用可能な値がない場合は、0が入力されます。

Integer

clicks

AppsFlyerにより計測

Integer

reported_impressions

メディアソースにより計測

Integer

reported_clicks

メディアソースにより計測

Integer

installs

AppsFlyerにより計測

Integer

reported_conversions

メディアソースにより計測

Integer

 

re_engagements

AppsFlyerにより計測

Integer

re_attributions

AppsFlyerにより計測

Integer

cost

支出額

value

original_cost

ネットワークから報告される通貨単位でのネットワークから報告されるコスト(通貨変換前)

値 

-

impressions_discrepancy

アドネットワークとAppsFlyerでカウントされる乖離

Integer

-

clicks_discrepancy

アドネットワークとAppsFlyerでカウントされる乖離

Integer

-

installs_discrepancy

アドネットワークとAppsFlyerでカウントされる乖離

Integer

-

ctr

クリック率。AppsFlyerにより計測

 

 

 

 

いいえ

Integer

-

cvr

コンバージョン率。AppsFlyerにより計測

整数型

-

ecpm

AppsFlyerにより計測

Integer

cpi

AppsFlyerにより計測

Integer

ccvr

コンバージョン当たりのコスト

Integer

cvvr

完了したビデオ視聴率。AppsFlyerにより計測

Integer

-

reported_cvr

報告されたコンバージョン率

Integer

ecpc

AppsFlyerにより計測

Integer

-

video_25p_views

動画が25%再生されました。アドネットワークにより報告されます

Integer

video_50p_views

動画が50%再生されました。アドネットワークにより報告されます

Integer

video_75p_views

動画が75%再生されました。アドネットワークにより報告されます

Integer

video_completions

アドネットワークにより報告されます

Integer

指標

コストETLの設定

はじめる前に

  • コストETLの設定には、独自のAWSバケットの設定(そしてそれにAppsFlyerがデータを書き込む権限の付与)、およびAppsFlyerでのコストETL設定が必要です。
  • コストETLの設定を完了するには、AWSアドミン権限とAppsFlyer管理画面へのアクセス権限の両方が必要です。
  • セットアップ中は、AWSとAppsFlyerの両方にタブを開いたままにしておいてください。
  • :KMSバケット暗号化はAppsFlyerではサポートされていません。 

AWSバケットとコストETLの設定方法:

  1. AWSコンソールにサインインします。
  2. S3サービスへ進みます。
  3. バケットの作成方法
    1. Create bucketをクリックしてください。
    2. バケット名を次のとおり入力してください:必須の接頭辞 af-xpend-cost-etl-<af-account-id>- で始め、この後にフリーテキストのサフィックスを追加してください。
    3. Create bucketをクリックしてください。
  4. AppsFlyerにて、インテグレーション > コストETLへ進みます。
  5. コストETLを有効にしてください。
  6. Amazon S3の設定に進みます。

  7. ドロップダウンメニューから、S3バケットの地域を選択してください。対象の地域が表示されない場合は、CSMまでお問合せください。
  8. Amazon S3バケット名を入力してください。
  9. 次へ をクリックします。
    バケットポシリーのコードスニペットが表示されます。

  10. バケットポリシーのコードスニペットをコピーし、AWSの設定画面に貼り付けてください。
    1. AWSにて、コストETL用に作成したバケットを選択してください。
    2. 権限タブへ進んでください。
    3. Bucket policy セクションにて、Edit(編集)をクリックしてください。
    4. バケットポリシー画面が開きます。
    5. バケットポリシースニペットを画面に貼り付けてください。
  11. AppsFlyerのコストETL設定にて、次へをクリックしてください。
    バケットの検証ステップが表示されます。

  12. 検証をクリックしてください。
    検証が成功しましたというメッセージが表示されることを確認してください。
  13. 完了をクリックしてください。
  14. 1つ以上または全てのアプリを選択してください。  全て を選択すると、今後追加したアプリが自動的に含まれるようになります。
  15. 適用をクリックしてください。 
  16. 少なくとも常に含まれるディメンションを一つ選択してください:チャネルおよび/または地域。
  17. 少なくとも追加のディメンションを1つ選択してください。

  18. レポートに含まれる指標を少なくとも1つ選択してください。

  19. 適用をクリックしてください。

ベストプラクティス

データの上書き

データを取得し分析する際は、特定の日付とバッチのデータを取得するか、全ての過去のデータを現在のバッチのデータで上書きすることをお勧めします。そうしないと、同じデータが繰り返し表示される可能性があります

例えば、2月20日のバッチ1には2月14~20日のデータが含まれていますしかし、2月19日に書かれたバッチにも、2月14日~2月19日のデータが含まれていました。2月19日に受信した以前のデータを、直近の2月20日のバッチで受信したデータで上書きします。

地域 vs. チャネル

全てのネットワークが全てのディメンションのデータを一緒に提供しているわけではありません。Facebookの地域とチャネルデータが最も一般的な例です。2つの別々のデータセットが提供されるのは、このためです。地域データセットには地域データが、チャネルデータセットにはチャネルデータが含まれることが保証されています。

多くの場合、大部分のメディアソースでは、地域とチャネルデータは同じになります。そのため、ビジネスニーズに応じて、いずれかのデータセット(地域またはチャネル)を取り込んでください。

集計データ

コストETLは、アドネットワークから抽出できる最も粒度の細かいフレキシブルなデータを提供します。このような膨大な量のデータから実用的なインサイトを引き出すには、ビジネスニーズに最適な方法でデータを集約することをお勧めします。例えば、キャンペーンおよび国レベルでコストデータを理解する必要がある場合は、これらのディメンションを使用してください。

ネットワーク全体の標準化

すべてのネットワークが同じ粒度のデータを提供するわけではありません。例えば、FacebookはサイトID別のコストデータを提供せず、Twitterは地域別のコストデータを提供していません。コストETLデータを集計する場合は、このようなケースに注意し、ネットワークを比較する時に同様のデータを確認します。

データの比較

コストETLでは、全てのコストデータを提供しています。コストETLで提供される一部のキャンペーンは、AppsFlyer管理画面に表示されません(例えば、AppsFlyer上でまだコンバージョンが発生していないが、インストールを生成したキャンペーン)。データを比較するためには、オーバービュー管理画面で特定のキャンペーンIDを見つけ、コストETLでのコストデータと比較してください。

この記事は役に立ちましたか?