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

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

बैच को बांटना

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

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

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

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

  • एक ही AssetGroup को टारगेट करने वाले सभी AssetGroupListingGroupFilterOperation ऑपरेशन (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 से मिले जवाब को प्रोसेस करते समय:

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