تصحيح خطأ "نفاد ميزانية الخصوصية"

يوضّح هذا الدليل كيفية استخدام ميزة تصحيح أخطاء ميزانية الخصوصية الجديدة لمعالجة أخطاء PRIVACY_BUDGET_EXHAUSTED المتوفّرة الآن في "خدمة تجميع البيانات"، اعتبارًا من v2.12.0. كما هو موضّح في المستندات، أثناء إرسال التقارير القابلة للتجميع إلى عملية تكامل لـ "خدمة تجميع البيانات" من خلال المهام، تعتمد البنية الأساسية على "خدمة حسابات التقارير القابلة للتجميع" في منسقِي TEE (بيئة التنفيذ الموثوقة)، وذلك لتحديد الحد الأقصى لاستخدام ميزانية الخصوصية. للتذكير، تُحدِّد ميزانية الخصوصية الحدّ الأقصى لعدد المرات التي يمكن فيها استخدام هذه التقارير القابلة للتجميع لإنشاء تقارير تلخيصية من أجل الحدّ من اكتساب المعلومات. ولن تنجح أي عملية جمع لتقرير تتجاوز ميزانية الخصوصية المخصّصة له، وسيظهر خطأ PRIVACY_BUDGET_EXHAUSTED.

يرشدك هذا الدليل إلى ميزة تصحيح الأخطاء التي بدءًا من v2.12.0، تُنشئ وتُخزِّن ملف JSON مساعدًا يتضمّن التقارير ذات الصلة التي ساهمت في حدوث أي أخطاء PRIVACY_BUDGET_EXHAUSTED لاحقة واجهتها مهامك.

إذا كنت مهتمًا باسترداد الميزانية، يمكنك الاطّلاع على الإرشادات العامة على GitHub.

شرط أساسي

يفترض الدليل أنّك تمتلك ما يلي من خلال المتابعة:

تصحيح أخطاء مهمة تعذّر إكمالها بسبب الخطأ PRIVACY_BUDGET_EXHAUSTED

في هذه المرحلة، نتوقع أنّك نفّذت نقطة نهاية getJob باستخدام معرّف طلب العمل الأخير، وتلقّيت خطأ PRIVACY_BUDGET_EXHAUSTED مشابهًا للردّ التالي. من "خدمة تجميع البيانات" v2.12.0، من المفترض أن يكون لديك ملف JSON لتصحيح أخطاء استنفاد ميزانية الخصوصية الذي تم إنشاؤه حديثًا في حزمة التخزين العلني في السحابة الإلكترونية.

يتم تحديد المسارات من خلال return_message وتتّبع التنسيقات التالية:

  • مسار الملف: <output_data_bucket_name>/<output_data_blob_prefix>/
  • اسم الملف: privacy_budget_exhausted_<request_received_at_timestamp>.json
{
  "job_status": "FINISHED",
  "request_received_at": <utc timestamp>,
  "request_updated_at": <utc timestamp>,
  "job_request_id": <customer assigned job id>,
  
  "request_processing_started_at": <utc timestamp>,
  "result_info": {
    "return_code": "PRIVACY_BUDGET_EXHAUSTED",
    "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException: Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear in more than one aggregation job. Information related to reports that do not have budget can be found in the following file:
    File path: ags-privacy-budget-codelab/output-bucket/output-domain Filename: privacy budget exhausted debugging information <utc timestamp> \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
    "error_summary": {
      "error_counts": "",
      "error_messages": ""
    }
  }
}

خطوات حلّ الأخطاء

ابحث عن ملف privacy_budget_exhausted_debugging_information_<utc timestamp>.json output الذي تم تزويدك به في حزمة التخزين العام على السحابة الإلكترونية وافتحه. يمكن العثور على ذلك في المسار <output_data_bucket_name>/<output_data_blob_prefix>المقدَّم في return_message. في ملف JSON هذا، قارِن السمتَين filtering_id (القيمة التلقائية هي 0) وrelevant_shared_info مع تقارير الإدخال القابلة للتجميع shared_info. ويعني العثور على مطابقة أنّ هذه التقارير تتجاوز الميزانية المخصّصة وتؤدي إلى تعذُّر إكمال إحدى المهام، ويجب استبعادها في المهام المستقبلية. يُرجى العلم أنّه لا يزال بإمكانك إعادة استخدام تقارير المطابقة باستخدام معرّف فلترة مختلف. بعد تحديد التقارير المطابقة وإزالتها من ملف AVRO الخاص بتقارير الدفعات، تكون مستعدًا لإعادة تنفيذ مهمتك.

في ما يلي مثال على ناتج privacy_budget_exhausted_debugging_information_<utc timestamp>.json.

{
 "privacy_budget_exhausted_info" : {
   "aggregatable_input_budget_consumption_info" : [ {
     "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738814400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   }, {
       "aggregateable_input_budget_id" : {
       "filtering_id" : 0,
       "relevant_shared_info" : {
         "api" : "attribution-reporting",
         "attribution_destination" : "f246a4e6-dde9-46a5-a6b2-ea523b484d0a",
         "reporting_origin" : "foo.com",
         "scheduled_report_time" : 1738796400.000000000,
         "source_registration_time" : 1738713600.000000000,
         "version" : "0.1"
       }
     }
   } ]
 }
}

الخطوات التالية

تحقّق ممّا إذا واجه أي مستخدم آخر المشكلة نفسها على لوحة بيانات حالة "مبادرة حماية الخصوصية" أو على مستودع GitHub العلني. إذا لم يتم حلّ مشكلة "خدمة التجميع"، يُرجى إرسال ملف تعريف شخصي على GitHub أو إرسال نموذج الدعم الفني.