Вот рекомендуемый алгоритм действий для проверки корректности загруженных данных о мероприятиях и аудитории, а также для выявления проблем с данными.
Отправляйте запросы на отправку мероприятий , а также на добавление или удаление участников из числа зрителей .
Проверьте общий статус каждого запроса. Успешный запрос имеет
Statusсcode, равным0(значение перечисленияOK, HTTP-ответ200 OK), и возвращает объектIngestEventsResponse,IngestAudienceMembersResponseилиRemoveAudienceMembersResponse.Если запрос не удался, измените его, устранив ошибку, и отправьте запрос снова.
Если запрос выполнен успешно, сохраните
request_idответа, чтобы использовать его для получения диагностической информации на следующем шаге.Подождите 30 минут, затем отправьте запрос
RetrieveRequestStatusдля каждого успешногоrequest_id.Периодически повторяйте этот шаг для каждого
request_id, пока статус назначения для каждого запроса не достигнетSUCCESS,PARTIAL_SUCCESSилиFAILURE. Используйте алгоритм экспоненциальной задержки для ожидания между каждым запросом.Проверьте каждый
RetrieveRequestStatusResponseчтобы убедиться в корректной работе загрузки данных и выявить любые проблемы с ними.Исправьте ошибки в данных.
Вернитесь к шагу 1 и повторяйте действия, пока не устраните все проблемы с загрузкой файлов.
Отправляйте запросы
Для параметра RetrieveRequestStatusRequest требуется одно значение request_id . Отправляйте отдельный запрос статуса для каждого идентификатора запроса, полученного из успешного запроса на обработку.
Периодически отправляйте запрос RetrieveRequestStatusRequest используя алгоритм экспоненциальной задержки, пока request_status не достигнет SUCCESS , FAILURE или PARTIAL_SUCCESS для каждого пункта назначения в исходном запросе. Это может занять до 24 часов, хотя API Data Manager может завершить обработку некоторых запросов всего за 30 минут.
Вот пример разумной конфигурации начального времени ожидания и повторных попыток, которая обеспечивает баланс между работоспособностью и использованием квоты:
| Параметр | Ценить |
|---|---|
| Время ожидания до первого запроса на диагностику (в минутах) | 30 |
| Множитель обратной связи | 1.3 |
| Максимальное время отступления (в минутах) | 60 (1 час) |
| Максимальное общее время (в минутах) | 1440 (24 часа) |
Вот последовательность запросов и затраченное время при данной конфигурации:
График

Данные
| Пытаться | Время с момента запроса на прием (чч:мм) | Задержитесь перед попыткой. | Примечания |
|---|---|---|---|
| 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 записи в списке destinations для отправки данных 3 разным аудиториям, то ответ со статусом будет содержать 3 записи в request_status_per_destination (по одной записи на каждую аудиторию).
Проверьте общий статус пункта назначения.
В качестве первого шага проверьте поле request_status , чтобы определить, завершил ли API Data Manager обработку данных для destination RequestStatusPerDestination .
Вот возможные значения параметра request_status :
PROCESSING: Данные для целевого объекта все еще обрабатываются. Предупреждения и ошибки для целевого объекта на данном этапе не отображаются.SUCCESS: Обработка запроса для пункта назначения завершена без ошибок. Проверьте наличие предупреждений, выявленных в процессе обработки.FAILURE: Все записи для целевого объекта не были обработаны из-за ошибок. Проверьте наличие предупреждений и ошибок , чтобы определить причину сбоя. Также проверьте наличие предупреждений, выявленных в процессе обработки.PARTIAL_SUCCESS: Часть записей для целевого объекта была успешно обработана, но другие не были обработаны из-за ошибок. Проверьте наличие ошибок , чтобы определить причину сбоя некоторых записей. Также проверьте наличие предупреждений, выявленных в процессе обработки.
Проверьте статус мероприятия или аудитории для каждого пункта назначения.
Проверьте поле статуса, соответствующее типу запроса на прием данных. В каждом RequestStatusPerDestination установлено только одно из следующих полей:
статус приема событий
Поле events_ingestion_status заполняется, если запрос был типа IngestEventsRequest .
Проверьте значение record_count объекта IngestEventStatus , чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям. record_count включает как успешные, так и неудачные записи.
Статус приема информации участниками аудитории
Поле audience_members_ingestion_status заполняется, если запрос был типа IngestAudienceMembersRequest . Вот поле IngestAudienceMembersStatus , которое нужно проверить для каждого типа данных об аудитории. Заполнено только одно из этих полей.
-
user_data_ingestion_status Проверьте значение
record_countобъектаIngestUserDataStatus, чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям.record_countвключает как успешно полученные, так и неудачно полученные записи.Проверьте значение
user_identifier_count, чтобы убедиться, что количество полученных идентификаторов пользователей соответствует вашим ожиданиям.Если запрос содержал достаточное количество записей, параметр
upload_match_rate_rangeсодержит диапазон коэффициентов совпадения для записей в запросе.-
mobile_data_ingestion_status Проверьте
record_countобъектаIngestMobileDataStatus, чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям.record_countвключает как успешно полученные, так и неудачно полученные записи.Проверьте значение параметра
mobile_id_count, чтобы убедиться, что количество полученных идентификаторов мобильных устройств соответствует вашим ожиданиям.-
pair_data_ingestion_status Проверьте значение
record_countобъектаIngestPairDataStatus, чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям.record_countвключает как успешно полученные, так и неудачно полученные записи.Проверьте значение
pair_id_count, чтобы убедиться, что количество полученных идентификаторов пар соответствует вашим ожиданиям.-
ppid_data_ingestion_status Проверьте
record_countобъектаIngestPpidDataStatus, чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям.record_countвключает как успешно полученные, так и неудачно полученные записи.Проверьте значение
ppid_count, чтобы убедиться, что количество полученных PPID соответствует вашим ожиданиям.-
user_id_data_ingestion_status Проверьте значение
record_countобъектаIngestUserIdDataStatus, чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям.record_countвключает как успешно полученные, так и неудачно полученные записи.Проверьте значение
user_id_count, чтобы убедиться, что количество полученных идентификаторов пользователей соответствует вашим ожиданиям.
Статус удаления участников аудитории
Поле audience_members_removal_status заполняется, если запрос был типа RemoveAudienceMembersRequest . Вот поле RemoveAudienceMembersStatus которое нужно проверить для каждого типа данных об аудитории. Заполнено только одно из этих полей.
-
user_data_removal_status - Статус удаления пользовательских данных .
-
mobile_data_removal_status - Статус отключения мобильной передачи данных .
-
pair_data_removal_status - Статус удаления данных PAIR .
-
ppid_data_removal_status - Статус удаления данных PPID .
-
user_id_data_removal_status - Статус удаления данных идентификатора пользователя
Проверьте значение record_count , чтобы убедиться, что общее количество полученных записей соответствует вашим ожиданиям. record_count включает как успешные, так и неудачные записи.
Кроме того, проверьте значения user_identifier_count , mobile_id_count или pair_id_count , чтобы подтвердить общее количество полученных идентификаторов пользователей, мобильных идентификаторов или идентификаторов пар.
Проверьте предупреждения и ошибки.
Помимо полей статуса для пункта назначения и типа запроса, RetrieveRequestStatusResponse содержит подробную информацию о предупреждениях и ошибках, связанных с запросом.
- Ошибка указывает на то, что API полностью отклонил запись.
- Предупреждение указывает на то, что API не отклонил запись, но был вынужден проигнорировать часть данных записи.
Например, если Event для офлайн-конверсии Google Ads содержит зашифрованные данные UserIdentifier и AdIdentifiers , такие как gclid , и данные UserIdentifier не могут быть расшифрованы, API Data Manager все равно обработает запись, используя AdIdentifiers , но вернет предупреждение PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR .
Однако, если Event не содержит AdIdentifiers , а данные UserIdentifier не могут быть расшифрованы, API Data Manager отклоняет всю запись и сообщает об ошибке PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR , поскольку допустимое Event конверсии в офлайн-режиме Google Ads должно содержать хотя бы один из параметров ad_identifiers или user_data .
Ниже представлены поля ответа, содержащие информацию о предупреждениях и ошибках. Эти поля заполняются, когда общий статус назначения достигает SUCCESS , PARTIAL_SUCCESS или FAILURE .
-
warning_info Список объектов
WarningCount. КаждыйWarningCountсодержитreasonс указанием типа предупреждения иrecord_countзаписей, в которых было обнаружено предупреждение данного типа.Проверьте
warning_infoдаже если общий статус назначения —SUCCESS.-
error_info Список объектов
ErrorCount. Каждый объектErrorCountсодержитreasonошибки и её тип, а такжеrecord_countуказывающий количество записей, обработка которых завершилась с ошибкой данного типа.