אבחון

כאן מפורט תהליך העבודה המומלץ לאימות התקינות של העלאות אירועים וקהלים ולזיהוי בעיות בנתונים.

  1. שליחת בקשות לשליחת אירועים או לשליחה או להסרה של חברי קהל.

  2. בודקים את הסטטוס הכולל של כל בקשה. בבקשה שהושלמה בהצלחה יש Status עם code ששווה ל-0 (ערך enum‏ OK, תגובת HTTP‏ 200 OK), והיא מחזירה IngestEventsResponse,‏ IngestAudienceMembersResponse או RemoveAudienceMembersResponse.

    אם הבקשה לא מצליחה, צריך לשנות אותה כדי לפתור את השגיאה ולשלוח אותה שוב.

    אם הבקשה מצליחה, צריך לתעד את request_id של התגובה כדי שתוכלו להשתמש בו בשלב הבא כדי לאחזר את נתוני האבחון.

  3. מחכים 30 דקות ואז שולחים בקשת RetrieveRequestStatus לכל request_id שהושלם בהצלחה.

    חוזרים על השלב הזה מעת לעת לכל request_id עד שסטטוס היעד של כל יעד מגיע ל-SUCCESS, PARTIAL_SUCCESS או FAILURE. צריך להשתמש באלגוריתם של השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי להמתין בין כל בקשה.

  4. כדאי לעיין בכל RetrieveRequestStatusResponse כדי לוודא שההעלאות פועלות כמו שצריך ולזהות בעיות בנתונים.

  5. לפתור בעיות בנתונים.

  6. חוזרים לשלב 1 וחוזרים על הפעולות עד שכל הבעיות בהעלאות נפתרות.

שליחת בקשות

ל-RetrieveRequestStatusRequest נדרש ערך request_id יחיד. שולחים בקשת סטטוס נפרדת לכל מזהה בקשה ששמרתם מבקשת הטמעה מוצלחת.

אישור

‫RetrieveRequestStatusRequest לא מקבל חשבונות יעד או כותרות של בקשות. במקום זאת, Data Manager API מזהה את יעדי הבקשה המקורית להטמעת נתונים שמשויכים ל-request_id ומוודא שלמתקשר יש גישה ל-operating_account בכל Destination.

כדי לבדוק את הסטטוס של בקשה, פרטי הכניסה שמשמשים ב-RetrieveRequestStatusRequest צריכים לעמוד בדרישות הבאות לגבי operating_account של כל יעד מתוך בקשת ההעלאה המקורית:

  • נתיב גישה זהה: לפרטי הכניסה חייבת להיות גישה לכל operating_account באמצעות נתיב הגישה המדויק שצוין בבקשת ההטמעה המקורית.

    לדוגמה, אם בקשת הטמעה של operating_account ב-Google Ads ציינה חשבון ניהול ראשי בתור login_account, פרטי הכניסה צריכים גם לתת גישה אל operating_account דרך אותו חשבון ניהול. גם אם לחשבון Google שמשויך לפרטי הכניסה יש גישה ישירה לחשבון הצאצא operating_account, הבקשה תיכשל ותופיע השגיאה PERMISSION_DENIED אם לחשבון הזה אין גישה דרך חשבון הניהול login_account שצוין במהלך ההטמעה.

  • רמת גישה מספיקה: לחשבון Google שמשויך לפרטי הכניסה צריכה להיות רמת גישה או תפקיד עם הרשאה להטמיע נתונים ב-operating_account.

    לדוגמה, בחשבון Google Ads, לחשבון Google צריכה להיות רמת הגישה אדמין או רגילה. בקשה עם פרטי כניסה לחשבון עם רמת הגישה לקריאה בלבד נכשלת עם השגיאה PERMISSION_DENIED.

אסטרטגיית סקרים

שולחים את RetrieveRequestStatusRequest מדי פעם באמצעות אלגוריתם של השהיה מעריכית לפני ניסיון חוזר עד שערך request_status מגיע ל-SUCCESS, FAILURE או PARTIAL_SUCCESS לכל יעד בבקשה המקורית. התהליך עשוי להימשך עד 24 שעות, אבל יכול להיות ש-Data Manager API יסיים לעבד חלק מהבקשות תוך 30 דקות בלבד.

דוגמה להגדרה סבירה של זמן המתנה ראשוני וניסיון חוזר, שמאזנת בין זמן התגובה לבין השימוש במכסה:

הגדרה ערך
זמן ההמתנה לפני בקשת האבחון הראשונה (דקות) 30
מכפיל ההשהיה 1.3
השהיה לפני ניסיון חוזר מקסימלית (בדקות) ‫60 (שעה אחת)
זמן כולל מקסימלי (דקות) ‫1440 (24 שעות)

זוהי רצף של בקשות והזמן שחלף עם ההגדרה הזו:

תרשים

אסטרטגיית דגימה

נתונים

ניסיון הזמן שחלף מאז בקשת ההטמעה (hh:mm) השהיה לפני הניסיון הערות
1 00:30 ‫30.0 דקות קודם בודקים את הזמינות של הסטטוס
2 01:09 ‫39.0 דקות
3 01:59 ‫50.7 דקות
4 02:59 ‫60.0 דקות העיכוב מוגבל עכשיו לשעה אחת
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 שעות

מוסיפים כמות אקראית קטנה של ריצוד להשהיות של השהיית הקצב כדי למנוע את בעיית "העדר הרועם", שבה לקוחות רבים מנסים שוב בו-זמנית.

בדיקת התשובות

השדה request_status_per_destination ב-RetrieveRequestStatusResponse מכיל רשומה נפרדת לכל יעד בבקשת ההטמעה המתאימה.

לדוגמה, אם IngestAudienceMembersRequest כלל 3 רשומות ברשימה destinations לשליחת נתונים ל-3 קהלים שונים, תגובת הסטטוס תכלול 3 רשומות ב-request_status_per_destination (רשומה אחת לכל קהל).

בדיקת הסטטוס הכולל של היעד

בשלב הראשון, בודקים את השדה request_status כדי לראות אם Data Manager API סיים לעבד את הנתונים של 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. רק אחד מהשדות האלה מוגדר.

composite_data_ingestion_status

בודקים את record_count של IngestCompositeDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות. הקובץ record_count כולל רשומות שהצליחו ורשומות שנכשלו.

בודקים את data_type_counts כדי לוודא שמספר המזהים תואם לציפיות. הרשימה הזו כוללת פירוט של כל המזהים שהתקבלו (כמו כתובת אימייל, מספר טלפון, כתובת פיזית וכתובת IP) על ידי DataType.

אם בבקשה היה מספר מספיק של רשומות, השדה upload_match_rate_range מכיל את טווח אחוז הלקוחות לטירגוט של הרשומות בבקשה.

google_user_id_data_ingestion_status

בודקים את record_count של IngestGoogleUserIdDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות שלכם. הקובץ record_count כולל רשומות שהצליחו ורשומות שנכשלו.

בודקים את google_user_id_count כדי לוודא שמספר מזהי המשתמשים ב-Google שהתקבלו תואם לציפיות.

mobile_data_ingestion_status

בודקים את record_count של IngestMobileDataStatus כדי לוודא שמספר הרשומות הכולל שהתקבל תואם לציפיות שלכם. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את mobile_id_count כדי לוודא שמספר המזהים לנייד שהתקבלו תואם לציפיות שלכם.

pair_data_ingestion_status

בודקים את record_count של IngestPairDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות שלכם. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את pair_id_count כדי לוודא שמספר מזהי ה-PAIR שקיבלתם תואם למה שציפיתם.

partner_provided_id_data_ingestion_status

בודקים את record_count של IngestPartnerProvidedIdDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את partner_provided_id_count כדי לוודא שמספר המזהים שהתקבלו מהשותף תואם לציפיות שלכם.

ppid_data_ingestion_status

בודקים את record_count של IngestPpidDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את ppid_count כדי לוודא שמספר המזהים שהתקבלו תואם לציפיות.

user_data_ingestion_status

בודקים את record_count של IngestUserDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות שלכם. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את user_identifier_count כדי לוודא שמספר מזהי המשתמשים שהתקבלו תואם לציפיות.

אם בבקשה היה מספר מספיק של רשומות, השדה upload_match_rate_range מכיל את טווח אחוז הלקוחות לטירגוט של הרשומות בבקשה.

user_id_data_ingestion_status

בודקים את record_count של IngestUserIdDataStatus כדי לוודא שהמספר הכולל של הרשומות שהתקבלו תואם לציפיות. הקובץ record_count כולל גם רשומות שהועלו בהצלחה וגם רשומות שההעלאה שלהן נכשלה.

בודקים את user_id_count כדי לוודא שמספר מזהי המשתמשים שהתקבלו תואם לציפיות.

סטטוס ההסרה של משתמשים מקהל היעד

השדה audience_members_removal_status מאוכלס אם הבקשה הייתה RemoveAudienceMembersRequest. זה השדה RemoveAudienceMembersStatus שצריך לבדוק בכל סוג של נתוני קהל. רק אחד מהשדות האלה מוגדר.

composite_data_removal_status
סטטוס ההסרה של נתונים מורכבים
google_user_id_data_removal_status
סטטוס ההסרה של נתוני מזהה משתמש ב-Google
mobile_data_removal_status
סטטוס ההסרה של חבילת הגלישה.
pair_data_removal_status
סטטוס ההסרה של נתוני PAIR.
partner_provided_id_data_removal_status
סטטוס ההסרה של נתוני מזהים שסופקו על ידי שותף
ppid_data_removal_status
סטטוס ההסרה של נתוני PPID.
user_data_removal_status
סטטוס ההסרה של נתוני המשתמש.
user_id_data_removal_status
סטטוס ההסרה של נתוני User-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.

אלה השדות בתגובה שמכילים מידע על אזהרות ושגיאות. השדות האלה מאוכלסים כשהסטטוס הכולל של היעד מגיע לערך SUCCESS,‏ PARTIAL_SUCCESS או FAILURE.

warning_info

אובייקט WarningInfo. השדה warning_counts שלו מכיל רשימה של אובייקטים מסוג WarningCount. כל WarningCount מכיל reason עם סוג האזהרה, ו-record_count שמציין את מספר הרשומות שבהן הופיעה אזהרה מהסוג הזה.

בודקים את warning_info גם אם הסטטוס הכולל של היעד הוא SUCCESS.

error_info

אובייקט ErrorInfo. השדה error_counts שלו מכיל רשימה של אובייקטים מסוג ErrorCount. כל ErrorCount מכיל reason עם סוג השגיאה, ו-record_count שמציין את מספר הרשומות שנכשלו בגלל סוג השגיאה הזה.