عند العمل مع فلاتر مجموعات البيانات في سياق
AdGroupCriterion.listing_group أو
AssetGroupListingGroupFilter، يجب مراعاة
الاعتبارات التالية عند تصميم عملية الدمج.
تقسيم الدفعات
إذا كانت هناك أي عمليات في مهمة مجمّعة تحتوي على معايير مجموعات إعلانية أو فلاتر مجموعات بيانات في مجموعات مواد العرض، يتم تقسيم العمليات في المهمة المجمّعة إلى عدة دفعات فرعية عند تلقّيها من خادم Google Ads API. على عكس العمليات العادية في وظيفة مجمّعة، يتم التعامل مع كل دفعة فرعية تحتوي على عمليات فلترة مجموعات البيانات بشكل مستقل.
يتم تحديد طريقة تقسيم المهام المجمّعة التي تحتوي على فلاتر مجموعات البيانات إلى مهام فرعية مجمّعة وفقًا للعوامل التالية:
- نوع فلتر مجموعة بيانات المؤسسة
AdGroupأوAssetGroupيستهدف فلتر مجموعة البيانات- ترتيب العمليات الحسابية
ضَع في اعتبارك كيفية تجميع العمليات:
- يتم تجميع كل عمليات
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:
- بالنسبة إلى مجموعات بيانات
AdGroupCriterionOperation، قد تلاحظ أنّ العمليات المتتالية التي تستهدفAdGroupنفسه قد تعذّر تنفيذها بسبب الخطأCriterionError.LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION(Product group operations are atomic within the same ad group. This operation failed because another operation targeting the same ad group ID was invalid.). - بالنسبة إلى عمليات
AssetGroupListingGroupFilterOperation، قد تلاحظ أنّ العمليات المتتالية التي تستهدفAssetGroupنفسه تعذّر إكمالها بسبب الخطأBatchJobError.ASSET_GROUP_LISTING_GROUP_FILTER_TRANSACTION_FAILURE.
تشير هذه الأخطاء إلى أنّه تم التراجع عن العملية في هذا الفهرس لأنّ عملية أخرى في الدفعة الفرعية الذرية نفسها تعذّر تنفيذها. لتحديد السبب الأساسي للمشكلة، يمكنك تكرار رسائل status في كل BatchJobResult، قبل وبعد operation_index خطأ المعاملة، للعمليات التي تشارك معرّف AdGroup أو AssetGroup نفسه.