診断

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

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

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

    リクエストが成功しなかった場合は、エラーに対処するようにリクエストを変更して、リクエストを再度送信します。

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

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

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

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

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

  6. 手順 1 に戻り、アップロードに関するすべての問題に対処するまで繰り返します。

リクエストの送信

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

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

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

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

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

グラフ

ポーリング戦略

データ

試行 Time Since Ingestion Request (hh:mm)(取り込みリクエストからの経過時間(hh:mm)) Delay Before Attempt メモ
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 時間の最大合計時間の前の最後のリクエスト

バックオフ遅延にランダムなジッターを少し追加して、多くのクライアントが同時に再試行する「サンダリング ハード」の問題を防ぎます。

回答を確認する

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

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

移行先の全体的なステータスを確認する

まず、request_status フィールドを調べて、Data Manager API が RequestStatusPerDestinationdestination のデータを処理し終えたかどうかを確認します。

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

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

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

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

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

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

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

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

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

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

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

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

user_data_ingestion_status

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

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

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

mobile_data_ingestion_status

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

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

pair_data_ingestion_status

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

pair_id_count を確認して、受け取ったペア ID の数が想定どおりであることを確認します。

ppid_data_ingestion_status

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

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

user_id_data_ingestion_status

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

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

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

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

user_data_removal_status
ユーザーデータの削除ステータス。
mobile_data_removal_status
モバイルデータの削除ステータス。
pair_data_removal_status
PAIR データの削除ステータス。
ppid_data_removal_status
PPID データの削除ステータス。
user_id_data_removal_status
ユーザー ID データの削除ステータス

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

また、user_identifier_countmobile_id_countpair_id_count を確認して、受信したユーザー識別子、モバイル ID、PAIR ID の合計数を確認します。

警告とエラーを確認する

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

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

たとえば、Google 広告のオフライン コンバージョンの Event に暗号化された UserIdentifier データと gclid などの AdIdentifiers が含まれており、UserIdentifier データを復号できない場合でも、Data Manager API は AdIdentifiers を使用してレコードを処理しますが、警告 PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR を返します。

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

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

warning_info

WarningCount オブジェクトのリスト。各 WarningCount には、警告のタイプを含む reason と、そのタイプの警告が発生したレコードの数を示す record_count が含まれます。

コピー先全体のステータスSUCCESS であっても、warning_info を確認します。

error_info

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