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

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

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

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

المتطلبات الأساسية

يفترض هذا الدليل أنّك تستوفي الشروط التالية:

  • خدمة التجميع v2.12.0 (أو إصدار أحدث) تم نشرها على السحابة الإلكترونية العامة التي اخترتها (Google Cloud Platform أو Amazon Web Services)

تصحيح خطأ 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_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 أو إرسال نموذج الدعم الفني.