診断

イベントとオーディエンスのアップロードの健全性を確認し、データの問題を特定するための推奨ワークフローは次のとおりです。

  1. イベントを送信するリクエスト、またはオーディエンス メンバーを送信または削除するリクエストを発行します。

  2. 各リクエストの全体的なステータスを確認します。リクエストが成功すると、code が 0(列挙値 OK、HTTP レスポンス 200 OK)に等しい Status が返され、IngestEventsResponse、IngestAudienceMembersResponse、または RemoveAudienceMembersResponse が返されます。

    リクエストが失敗した場合は、エラーを解決するようにリクエストを変更して、リクエストを再度送信します。

    リクエストが成功した場合は、レスポンスの request_id をキャプチャして、次のステップで診断を取得するために使用できるようにします。

  3. 30 分待ってから、成功した request_id ごとに RetrieveRequestStatus リクエストを送信します。

    各宛先の宛先のステータスが SUCCESS、PARTIAL_SUCCESS、または FAILURE になるまで、request_id ごとにこの手順を定期的に繰り返します。指数バックオフ アルゴリズムを使用して、各リクエストの間に待機時間を設けます。

  4. 各 RetrieveRequestStatusResponse を確認して、アップロードが正常に機能していることを確認し、データに関する問題を特定します。

  5. データの問題を修正します。

  6. ステップ 1 に戻り、アップロードに関するすべての問題が解決されるまで繰り返します。

リクエストの送信

RetrieveRequestStatusRequest には、1 つの request_id 値が必要です。取り込みリクエストが成功したときに取得したリクエスト ID ごとに、個別のステータス リクエストを送信します。

承認

RetrieveRequestStatusRequest は、移行先のアカウントまたはリクエスト ヘッダーを受け入れません。代わりに、Data Manager API は、request_id に関連付けられた元の取り込みリクエストから宛先を識別し、呼び出し元が各 Destination の operating_account にアクセスできることを確認します。

リクエストのステータスを確認するには、RetrieveRequestStatusRequest で使用される認証情報が、元の取り込みリクエストの各宛先の operating_account に関する次の要件を満たしている必要があります。

  • 同一のアクセスパス: 認証情報には、元の取り込みリクエストで指定されたまったく同じアクセスパスを使用して、各 operating_account にアクセスする必要があります。

    たとえば、Google 広告 operating_account の取り込みリクエストで親マネージャー アカウントを login_account として指定した場合、認証情報には同じマネージャー アカウントを介して operating_account にアクセスする権限も必要です。認証情報に関連付けられている Google アカウントが子 operating_account に直接アクセスできる場合でも、取り込み時に指定された login_account マネージャー アカウントを介してそのアカウントにアクセスできない場合、リクエストは PERMISSION_DENIED エラーで失敗します。

  • 十分なアクセスレベル: 認証情報に関連付けられた Google アカウントには、operating_account にデータを取り込む権限を持つアクセスレベルまたはロールが必要です。

    たとえば、Google 広告では、Google アカウントに管理者または標準のアクセスレベルが必要です。読み取り専用アクセスレベルのアカウントの認証情報を含むリクエストは、PERMISSION_DENIED エラーで失敗します。

ポーリング戦略

元のリクエストのすべての宛先で request_status が SUCCESS、FAILURE、PARTIAL_SUCCESS のいずれかに達するまで、指数バックオフ アルゴリズムを使用して RetrieveRequestStatusRequest を定期的に送信します。これには最大 24 時間かかることがありますが、Data Manager API では一部のリクエストの処理が 30 分ほどで完了することもあります。

以下に、liveness と割り当ての使用量のバランスを取る、適切な初期待機時間と再試行構成の例を示します。

設定 値
最初の診断リクエストまでの待機時間(分) 30
バックオフ乗数 1.3
バックオフの最大値(分) 60(1 時間)
合計時間の最大値(分) 1440(24 時間)

この構成でのリクエストと経過時間のシーケンスは次のとおりです。

グラフ

ポーリング戦略

データ

試行 取り込みリクエストからの経過時間(hh:mm) 試行前の遅延 メモ
1 00:30 30.0 分 まず、ステータスが利用可能かどうかを確認する
2 01:09 39.0 分
3 01:59 50.7 分
4 02:59 60.0 分 遅延の上限が 1 時間になりました
5 03:59 60.0 分
6 04:59 60.0 分
7 05:59 60.0 分
8 06:59 60.0 分
9 07:59 60.0 分
10 08:59 60.0 分
11 09:59 60.0 分
12 10:59 60.0 分
13 11:59 60.0 分 12 時間マーク
14 12:59 60.0 分
15 13:59 60.0 分
16 14:59 60.0 分
17 15:59 60.0 分
18 16:59 60.0 分
19 17:59 60.0 分
20 18:59 60.0 分
21 19:59 60.0 分
22 20:59 60.0 分
23 21:59 60.0 分
24 22:59 60.0 分
25 23:59 60.0 分 合計時間が 24 時間を超える前の最後のリクエスト

バックオフ遅延に少量のランダムなジッターを追加して、多くのクライアントが同時に再試行する「Thundering Herd」問題を回避します。

回答を確認する

RetrieveRequestStatusResponse の request_status_per_destination には、対応する取り込みリクエストの宛先ごとに個別のエントリが含まれています。

たとえば、IngestAudienceMembersRequest の destinations リストに 3 つのエントリが含まれていて、3 つの異なるオーディエンスにデータを送信する場合、ステータス レスポンスの request_status_per_destination には 3 つのエントリ(オーディエンスごとに 1 つのエントリ)が含まれます。

リンク先の全体的なステータスを確認する

最初のステップとして、request_status フィールドを確認して、Data Manager API が RequestStatusPerDestination の destination のデータの処理を完了しているかどうかを判断します。

request_status に指定できる値は次のとおりです。

  • PROCESSING: 宛先のデータはまだ処理中です。この段階では、宛先の警告とエラーは入力されません。

  • SUCCESS: 宛先のリクエスト処理がエラーなしで完了しました。処理中にフラグが付けられた警告を確認します。

  • FAILURE: エラーのため、宛先のすべてのレコードが失敗しました。警告とエラーを確認して、すべてのレコードが失敗した理由を特定します。また、処理中にフラグが付けられた警告がないか確認します。

  • PARTIAL_SUCCESS: 宛先の一部のレコードは成功しましたが、他のレコードはエラーのために失敗しました。エラーを確認して、一部のレコードが失敗した理由を特定します。また、処理中にフラグが設定された警告も確認します。

リンク先ごとにイベントまたはオーディエンスのステータスを確認する

取り込みリクエストのタイプに対応するステータス フィールドを調べます。各 RequestStatusPerDestination には、次のフィールドのうち 1 つだけが設定されます。

イベントの取り込みステータス

events_ingestion_status フィールドは、リクエストが IngestEventsRequest の場合に入力されます。

IngestEventStatus の record_count を確認して、受信したレコードの合計数が想定と一致していることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

オーディエンス メンバーの取り込みステータス

リクエストが IngestAudienceMembersRequest の場合、audience_members_ingestion_status フィールドが入力されます。オーディエンス データの種類ごとに確認する IngestAudienceMembersStatus フィールドは次のとおりです。これらのフィールドのうち 1 つだけが設定されます。

composite_data_ingestion_status

IngestCompositeDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

data_type_counts を確認して、識別子の数が想定どおりであることを確認します。このリストには、DataType が受信したすべての識別子(メールアドレス、電話番号、住所、IP アドレスなど)の内訳が表示されます。

リクエストに十分な数のレコードが含まれている場合、upload_match_rate_range にはリクエスト内のレコードのマッチ率の範囲が含まれます。

google_user_id_data_ingestion_status

IngestGoogleUserIdDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

google_user_id_count を確認して、受信した Google ユーザー ID の数が想定どおりであることを確認します。

mobile_data_ingestion_status

IngestMobileDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

mobile_id_count を確認して、受信したモバイル ID の数が想定どおりであることを確認します。

pair_data_ingestion_status

IngestPairDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

pair_id_count を確認して、受信した PAIR ID の数が想定どおりであることを確認します。

partner_provided_id_data_ingestion_status

IngestPartnerProvidedIdDataStatus の record_count を確認して、受信したレコードの合計数が想定と一致していることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

partner_provided_id_count を確認して、受信したパートナー提供 ID の数が想定どおりであることを確認します。

ppid_data_ingestion_status

IngestPpidDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

ppid_count を確認して、受信した PPID の数が想定どおりであることを確認します。

user_data_ingestion_status

IngestUserDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

user_identifier_count を確認して、受信したユーザー識別子の数が想定どおりであることを確認します。

リクエストに十分な数のレコードが含まれている場合、upload_match_rate_range にはリクエスト内のレコードのマッチ率の範囲が含まれます。

user_id_data_ingestion_status

IngestUserIdDataStatus の record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

user_id_count を確認して、受信したユーザー ID の数が想定どおりであることを確認します。

オーディエンス メンバーの削除ステータス

audience_members_removal_status フィールドは、リクエストが RemoveAudienceMembersRequest の場合に入力されます。オーディエンス データの種類ごとに確認する RemoveAudienceMembersStatus フィールドは次のとおりです。これらのフィールドのうち 1 つだけが設定されます。

composite_data_removal_status
複合データの削除ステータス
google_user_id_data_removal_status
Google ユーザー ID データの削除ステータス
mobile_data_removal_status
モバイルデータの削除ステータス。
pair_data_removal_status
PAIR データの削除ステータス。
partner_provided_id_data_removal_status
パートナー提供の ID データの削除ステータス
ppid_data_removal_status
PPID データの削除ステータス。
user_data_removal_status
ユーザーデータの削除ステータス。
user_id_data_removal_status
ユーザー ID データの削除ステータス

record_count を確認して、受信したレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。

また、user_identifier_count、mobile_id_count、pair_id_count、ppid_count、user_id_count、google_user_id_count、partner_provided_id_count を確認して、受信した識別子の合計数を確認します。

複合データの場合は、data_type_counts を確認して、識別子の数が想定どおりであることを確認します。このリストには、DataType が受信したすべての識別子(メールアドレス、電話番号、住所、IP アドレスなど)の内訳が表示されます。

警告とエラーを確認する

宛先とリクエスト タイプのステータス フィールドに加えて、RetrieveRequestStatusResponse にはリクエストの警告とエラーの内訳が含まれています。

  • エラーは、API がレコードを完全に拒否したことを示します。
  • 警告は、API がレコードを拒否しなかったものの、レコードのデータの一部を無視する必要があったことを示します。

たとえば、Event に暗号化された UserIdentifier データと AdIdentifiers(gclid など)が含まれていて、UserIdentifier データを復号できない場合、Data Manager API は AdIdentifiers を使用してレコードを処理しますが、警告 PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR を返します。

ただし、Event に AdIdentifiers が含まれておらず、UserIdentifier データを復号できない場合、Data Manager API はレコード全体を拒否し、エラー PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR を報告します。有効な Event には ad_identifiers または user_data の少なくとも 1 つが含まれている必要があるためです。

警告とエラーの情報を含むレスポンス フィールドは次のとおりです。これらのフィールドは、宛先の全体的なステータスが SUCCESS、PARTIAL_SUCCESS、FAILURE のいずれかに達したときに入力されます。

warning_info

WarningInfo オブジェクト。warning_counts フィールドには、WarningCount オブジェクトのリストが含まれています。各 WarningCount には、警告の種類を示す reason と、その種類の警告が発生したレコードの数を示す record_count が含まれています。

宛先の全体的なステータスが SUCCESS の場合でも、warning_info を確認します。

error_info

ErrorInfo オブジェクト。error_counts フィールドには、ErrorCount オブジェクトのリストが含まれます。各 ErrorCount には、エラーの種類を示す reason と、その種類のエラーが原因で失敗したレコードの数を示す record_count が含まれます。