イベントとオーディエンスのアップロードの健全性を確認し、データに関する問題を特定するためのおすすめのワークフローは次のとおりです。
イベントの送信、オーディエンス メンバーの送信または削除のリクエストを発行します。
各リクエストの全体的なステータスを確認します。リクエストが成功すると、
codeが0(列挙値OK、HTTP レスポンス200 OK)に等しいStatusが返され、IngestEventsResponse、IngestAudienceMembersResponse、またはRemoveAudienceMembersResponseが返されます。リクエストが成功しなかった場合は、エラーに対処するようにリクエストを変更して、リクエストを再度送信します。
リクエストが成功した場合は、レスポンスの
request_idをキャプチャして、次のステップで診断情報を取得できるようにします。30 分待ってから、成功した
request_idごとにRetrieveRequestStatusリクエストを送信します。各宛先の宛先ステータスが
SUCCESS、PARTIAL_SUCCESS、またはFAILUREに達するまで、各request_idに対してこの手順を定期的に繰り返します。指数バックオフ アルゴリズムを使用して、各リクエスト間の待機時間を設定します。各
RetrieveRequestStatusResponseを確認して、アップロードが正しく機能していることを確認し、データに関する問題を特定します。データの問題を修正します。
手順 1 に戻り、アップロードに関するすべての問題に対処するまで繰り返します。
リクエストの送信
RetrieveRequestStatusRequest には単一の request_id 値が必要です。取り込みリクエストが成功したときに取得したリクエスト ID ごとに、個別のステータス リクエストを送信します。
元のリクエストのすべての宛先で request_status が SUCCESS、FAILURE、または 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 時間の最大合計時間の前の最後のリクエスト |
バックオフ遅延にランダムなジッターを少し追加して、多くのクライアントが同時に再試行する「サンダリング ハード」の問題を防ぎます。
回答を確認する
RetrieveRequestStatusResponse の request_status_per_destination には、対応する取り込みリクエストの各宛先のエントリが個別に含まれています。
たとえば、IngestAudienceMembersRequest に 3 つのエントリが含まれており、3 つの異なるオーディエンスにデータを送信する場合、ステータス レスポンスの request_status_per_destination には 3 つのエントリが含まれます(オーディエンスごとに 1 つのエントリ)。destinations
移行先の全体的なステータスを確認する
まず、request_status フィールドを調べて、Data Manager API が RequestStatusPerDestination の destination のデータを処理し終えたかどうかを確認します。
request_status に指定できる値は次のとおりです。
PROCESSING: 宛先のデータがまだ処理中です。この段階では、宛先の警告とエラーは入力されません。SUCCESS: 宛先のリクエスト処理がエラーなしで完了しました。処理中にフラグが設定された警告を確認します。FAILURE: エラーのため、宛先のすべてのレコードが失敗しました。警告とエラーを確認して、すべてのレコードが失敗した理由を特定します。処理中にフラグが付けられた警告も確認します。PARTIAL_SUCCESS: 宛先のレコードの一部は成功しましたが、エラーにより一部は失敗しました。エラーを確認して、一部のレコードが失敗した理由を特定します。処理中にフラグが設定された警告も確認します。
イベントまたはオーディエンスのステータスを送信先ごとに確認する
取り込みリクエストのタイプに対応するステータス フィールドを調べます。各 RequestStatusPerDestination に設定されるのは、次のフィールドのうちの 1 つのみです。
イベントの取り込みステータス
リクエストが IngestEventsRequest の場合、events_ingestion_status フィールドに値が入力されます。
IngestEventStatus の record_count を確認して、受け取ったレコードの合計数が想定どおりであることを確認します。record_count には、成功したレコードと失敗したレコードの両方が含まれます。
オーディエンス メンバーの取り込みステータス
リクエストが IngestAudienceMembersRequest の場合、audience_members_ingestion_status フィールドに値が入力されます。各タイプのオーディエンス データを確認する IngestAudienceMembersStatus フィールドは次のとおりです。これらのフィールドのうち 1 つのみが設定されます。
user_data_ingestion_statusIngestUserDataStatusのrecord_countを確認して、受け取ったレコードの合計数が想定どおりであることを確認します。record_countには、成功したレコードと失敗したレコードの両方が含まれます。user_identifier_countを確認して、受け取ったユーザー ID の数が想定どおりであることを確認します。リクエストに十分な数のレコードが含まれている場合、
upload_match_rate_rangeにはリクエスト内のレコードの一致率の範囲が含まれます。mobile_data_ingestion_statusIngestMobileDataStatusのrecord_countを確認して、受け取ったレコードの合計数が想定どおりであることを確認します。record_countには、成功したレコードと失敗したレコードの両方が含まれます。mobile_id_countを確認して、受け取ったモバイル ID の数が想定どおりであることを確認します。pair_data_ingestion_statusIngestPairDataStatusのrecord_countを確認して、受け取ったレコードの合計数が想定どおりであることを確認します。record_countには、成功したレコードと失敗したレコードの両方が含まれます。pair_id_countを確認して、受け取ったペア ID の数が想定どおりであることを確認します。ppid_data_ingestion_statusIngestPpidDataStatusのrecord_countを確認して、受け取ったレコードの合計数が想定どおりであることを確認します。record_countには、成功したレコードと失敗したレコードの両方が含まれます。ppid_countを確認して、受け取った PPID の数が想定どおりであることを確認します。user_id_data_ingestion_statusIngestUserIdDataStatusのrecord_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_count、mobile_id_count、pair_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 を返します。
ただし、Event に AdIdentifiers が含まれておらず、UserIdentifier データを復号できない場合、有効な Google 広告オフライン コンバージョン Event には ad_identifiers または user_data のいずれかが少なくとも 1 つ含まれている必要があるため、Data Manager API はレコード全体を拒否し、エラー PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR を報告します。
警告とエラーの情報を含むレスポンス フィールドは次のとおりです。これらのフィールドには、宛先の全体的なステータスが SUCCESS、PARTIAL_SUCCESS、FAILURE に達したときにデータが入力されます。
warning_infoWarningCountオブジェクトのリスト。各WarningCountには、警告のタイプを含むreasonと、そのタイプの警告が発生したレコードの数を示すrecord_countが含まれます。コピー先全体のステータスが
SUCCESSであっても、warning_infoを確認します。error_infoErrorCountオブジェクトのリスト。各ErrorCountには、エラーのタイプを示すreasonと、そのタイプのエラーが原因で失敗したレコードの数を示すrecord_countが含まれます。