बैच जॉब में लिस्टिंग ग्रुप फ़िल्टर का इस्तेमाल करना

AdGroupCriterion.listing_group या AssetGroupListingGroupFilter के संदर्भ में, लिस्टिंग ग्रुप फ़िल्टर के साथ काम करते समय, इंटिग्रेशन डिज़ाइन करते समय इन बातों का ध्यान रखें.

बैच को हिस्सों में बांटना

अगर किसी बैच जॉब में, विज्ञापन ग्रुप की शर्तों या ऐसेट ग्रुप के लिस्टिंग ग्रुप फ़िल्टर से जुड़ी कोई कार्रवाई होती है, तो Google Ads API सर्वर पर मिलने के बाद, बैच जॉब में मौजूद कार्रवाइयों को कई सब-बैच में बांटा जाता है. बैच जॉब में मौजूद स्टैंडर्ड कार्रवाइयों के उलट, लिस्टिंग ग्रुप फ़िल्टर की कार्रवाइयों वाले हर सब-बैच को एक यूनिट के तौर पर माना जाता है.

लिस्टिंग ग्रुप फ़िल्टर वाले बैच जॉब को सब-बैच में बांटने का तरीका, इन फ़ैक्टर पर निर्भर करता है:

  1. लिस्टिंग ग्रुप फ़िल्टर का टाइप
  2. वह AdGroup या AssetGroup जिसे लिस्टिंग ग्रुप फ़िल्टर टारगेट कर रहा है
  3. कार्रवाइयों का क्रम

देखें कि कार्रवाइयों को कैसे ग्रुप किया जाता है:

  • एक ही AssetGroup को टारगेट करने वाली सभी क्रम से की गई AssetGroupListingGroupFilterOperation operations (create, update, और remove) को एक ही एटॉमिक सब-बैच में ग्रुप किया जाता है. इसमें, आंशिक तौर पर गड़बड़ी होने की कोई संभावना नहीं होती.
  • एक ही AdGroup को टारगेट करने वाले LISTING_GROUP की शर्तों (AdGroupCriterion.listing_group) के लिए, क्रम से की गई सभी AdGroupCriterionOperation create, update, और remove को एक ही एटॉमिक सब-बैच में ग्रुप किया जाता है. इसमें, आंशिक तौर पर गड़बड़ी होने की कोई संभावना नहीं होती.
  • क्रम से की गई अन्य सभी कार्रवाइयों को, नॉन-एटॉमिक सब-बैच में ग्रुप किया जाता है. इसमें, आंशिक तौर पर गड़बड़ी होने की संभावना होती है.

यहां दिए गए डायग्राम में, इस सिद्धांत के बारे में बताया गया है. ग्रे रंग के हर बॉक्स में, Google Ads API का इस्तेमाल करके सबमिट किया गया बैच जॉब दिखता है. ग्रे रंग के बॉक्स में, अलग-अलग कार्रवाइयों को रंग के हिसाब से ग्रुप किया जाता है. इससे, Google Ads API सर्वर से बनाए गए सब-बैच दिखते हैं. ग्रे रंग के हर बॉक्स में कार्रवाइयों का क्रम, बैच जॉब में कार्रवाइयों को जोड़ने के क्रम के मुताबिक होता है.

इस डायग्राम में, बैच ऑपरेशन को सब-बैच में ग्रुप करके दिखाया गया है

सीमाएं

बैच जॉब के संदर्भ में, लिस्टिंग ग्रुप फ़िल्टर के साथ काम करते समय, ये सीमाएं लागू होती हैं:

  • एक ही AdGroup को टारगेट करने वाले LISTING_GROUP की शर्तों (AdGroupCriterion.listing_group) के लिए, क्रम से की गई AdGroupCriterionOperation कार्रवाइयों (create, update, और remove) के एक एटॉमिक सब-बैच में, 20,000 से ज़्यादा कार्रवाइयां नहीं हो सकतीं. हालांकि, हमारा सुझाव है कि 10,000 से ज़्यादा कार्रवाइयां न करें. हर AddBatchJobOperationsRequest में ज़्यादा से ज़्यादा 10,000 कार्रवाइयां अपलोड की जा सकती हैं. इसलिए, 10,001 से 20,000 कार्रवाइयों वाले AdGroup सब-बैच को, क्रम से किए गए कम से कम दो AddBatchJobOperations अनुरोधों के ज़रिए अपलोड करना होगा.
  • एक ही AssetGroup को टारगेट करने वाली, क्रम से की गई AssetGroupListingGroupFilterOperation कार्रवाइयों (create, update, और remove) के एक एटॉमिक सब-बैच में, 10,000 से ज़्यादा कार्रवाइयां नहीं हो सकतीं.
  • कार्रवाइयों की संख्या से जुड़ी इन सीमाओं में से किसी का भी उल्लंघन करने पर (या किसी एक सब-बैच के लिए, सर्वर की इंटरनल सीरियलाइज़्ड बाइट साइज़ की सीमा से ज़्यादा होने पर), बैच जॉब को उस सब-बैच पर रोक दिया जाता है. इससे पहले के सब-बैच, जो पहले ही पूरे हो चुके हैं, कमिट किए जाते हैं. वहीं, गड़बड़ी वाले सब-बैच और उसके बाद के सभी सब-बैच, InternalError.INTERNAL_ERROR के साथ फ़ेल हो जाते हैं.

समस्या का हल

बैच जॉब में, लिस्टिंग ग्रुप फ़िल्टर की कार्रवाइयों को एक लेन-देन के तौर पर प्रोसेस किया जाता है. इससे ऐसी स्थितियां बन सकती हैं जहां कुछ गड़बड़ी वाली कार्रवाइयों की वजह से, कई कार्रवाइयां फ़ेल हो जाती हैं. इसके अलावा, BatchJob कार्रवाइयों को प्रोसेस करने के तरीके की वजह से, गड़बड़ियों की असल वजह, डाउनस्ट्रीम में होने वाली गड़बड़ियों से पहले या बाद में किसी इंडेक्स पर दिख सकती है.

उदाहरण के लिए, ListBatchJobResults से मिले जवाब को प्रोसेस करते समय:

इन गड़बड़ियों से पता चलता है कि उस इंडेक्स पर मौजूद कार्रवाई को रोल बैक कर दिया गया है, क्योंकि उसी एटॉमिक सब-बैच में मौजूद कोई दूसरी कार्रवाई फ़ेल हो गई थी. समस्या की मुख्य वजह की पहचान करने के लिए, एक ही AdGroup या AssetGroup आईडी शेयर करने वाली कार्रवाइयों के लिए, लेन-देन की गड़बड़ी के operation_index से पहले और बाद में, हर BatchJobResult में मौजूद status मैसेज को दोहराएं.