استخدام فلاتر مجموعات بيانات المؤسسات في المهام المجمّعة

عند العمل مع فلاتر مجموعات البيانات في سياق AdGroupCriterion.listing_group أو AssetGroupListingGroupFilter، يجب مراعاة الاعتبارات التالية عند تصميم عملية الدمج.

تقسيم الدفعات

إذا كانت هناك أي عمليات في مهمة مجمّعة تحتوي على معايير مجموعات إعلانية أو فلاتر مجموعات بيانات في مجموعات مواد العرض، يتم تقسيم العمليات في المهمة المجمّعة إلى عدة دفعات فرعية عند تلقّيها من خادم Google Ads API. على عكس العمليات العادية في وظيفة مجمّعة، يتم التعامل مع كل دفعة فرعية تحتوي على عمليات فلترة مجموعات البيانات بشكل مستقل.

يتم تحديد طريقة تقسيم المهام المجمّعة التي تحتوي على فلاتر مجموعات البيانات إلى مهام فرعية مجمّعة وفقًا للعوامل التالية:

  1. نوع فلتر مجموعة بيانات المؤسسة
  2. AdGroup أو AssetGroup يستهدف فلتر مجموعة البيانات
  3. ترتيب العمليات الحسابية

ضَع في اعتبارك كيفية تجميع العمليات:

  • يتم تجميع كل عمليات AssetGroupListingGroupFilterOperation المتتالية (create وupdate وremove) التي تستهدف AssetGroup نفسه معًا في دفعة فرعية ذرية (لا يوجد سلوك فشل جزئي).
  • يتم تجميع جميع عمليات AdGroupCriterionOperation المتتالية (create وupdate وremove) لمعايير LISTING_GROUP (AdGroupCriterion.listing_group) التي تستهدف AdGroup نفسه في مجموعة فرعية واحدة (بدون سلوك تعذُّر جزئي).
  • يتم تجميع جميع العمليات المتتالية الأخرى معًا في دفعات فرعية غير ذرية (سلوك الفشل الجزئي).

يوضّح الرسم البياني التالي هذا المفهوم. يمثّل كل مربّع رمادي مهمة معالجة مجمّعة تم إرسالها باستخدام Google Ads API. داخل المربّعات الرمادية، يتم تجميع العمليات الفردية حسب اللون لتمثيل الدفعات الفرعية التي ينشئها خادم Google Ads API. يتوافق ترتيب العمليات في كلّ من المربّعات الرمادية مع الترتيب الذي تمت به إضافة العمليات إلى مهمة الدفعة.

مخطّط بياني يعرض العمليات المجمّعة في مجموعات فرعية

القيود

عند استخدام فلاتر مجموعات البيانات في سياق مهام الدفعات، تسري القيود التالية:

  • لا يمكن أن تتجاوز الدفعة الفرعية الذرية الواحدة من عمليات AdGroupCriterionOperation المتتالية (create وupdate وremove) لمعايير LISTING_GROUP (AdGroupCriterion.listing_group) التي تستهدف AdGroup نفسه 20,000 عملية في الطول. ومع ذلك، ننصح بعدم تجاوز 10,000 عملية. بما أنّ كل AddBatchJobOperationsRequest يقتصر على 10,000 عملية، يجب تحميل دفعة فرعية من AdGroup تتضمّن من 10,001 إلى 20,000 عملية على الأقل من خلال طلبَين متتاليَين من طلبات AddBatchJobOperations.
  • لا يمكن أن يتجاوز عدد العمليات في الدفعة الفرعية الذرية الواحدة والمتسلسلة من عمليات AssetGroupListingGroupFilterOperation (create وupdate وremove) التي تستهدف AssetGroup نفسه 10,000 عملية.
  • في حال مخالفة أيّ من هذين الحدَّين الأقصيَين لعدد العمليات (أو تجاوز الحدّ الأقصى الداخلي لحجم البايت المتسلسل في الخادم لدفعة فرعية واحدة)، يتم إلغاء مهمة الدفعة في تلك الدفعة الفرعية: تظلّ أيّ دفعات فرعية سابقة تم إكمالها ملتزمة، في حين يتعذّر تنفيذ جميع العمليات في الدفعة الفرعية المخالفة وأيّ دفعات فرعية لاحقة مع ظهور الخطأ InternalError.INTERNAL_ERROR.

تحديد المشاكل وحلّها

تتم معالجة عمليات فلترة مجموعات البيانات في وظيفة مجمّعة كمعاملة واحدة، ما قد يؤدي إلى سيناريوهات تفشل فيها العديد من العمليات بسبب عدد صغير من العمليات الخاطئة. بالإضافة إلى ذلك، وبسبب طريقة معالجة عمليات BatchJob، قد يظهر السبب الأساسي للأخطاء في فهرس قبل الأخطاء اللاحقة أو بعدها.

على سبيل المثال، عند معالجة ردّ من ListBatchJobResults:

تشير هذه الأخطاء إلى أنّه تم التراجع عن العملية في هذا الفهرس لأنّ عملية أخرى في الدفعة الفرعية الذرية نفسها تعذّر تنفيذها. لتحديد السبب الأساسي للمشكلة، يمكنك تكرار رسائل status في كل BatchJobResult، قبل وبعد operation_index خطأ المعاملة، للعمليات التي تشارك معرّف AdGroup أو AssetGroup نفسه.