যখন আপনি AdGroupCriterion.listing_group বা AssetGroupListingGroupFilter এর প্রেক্ষাপটে লিস্টিং গ্রুপ ফিল্টার নিয়ে কাজ করেন, তখন আপনার ইন্টিগ্রেশন ডিজাইন করার সময় নিম্নলিখিত বিষয়গুলো বিবেচনায় রাখুন।
ব্যাচ বিভাজন
যদি কোনো ব্যাচ জবে এমন কোনো অপারেশন থাকে যাতে অ্যাড গ্রুপ ক্রাইটেরিয়া বা অ্যাসেট গ্রুপ লিস্টিং গ্রুপ ফিল্টার অন্তর্ভুক্ত থাকে, তাহলে গুগল অ্যাডস এপিআই সার্ভারে গৃহীত হওয়ার পর ব্যাচ জবের অপারেশনগুলো একাধিক সাব-ব্যাচে বিভক্ত হয়ে যায়। ব্যাচ জবের সাধারণ অপারেশনের থেকে ভিন্নভাবে, লিস্টিং গ্রুপ ফিল্টার অপারেশনযুক্ত প্রতিটি সাব-ব্যাচকে অ্যাটমিকভাবে বিবেচনা করা হয়।
লিস্টিং গ্রুপ ফিল্টারযুক্ত ব্যাচ জবগুলোকে যেভাবে সাব-ব্যাচে বিভক্ত করা হয়, তা নিম্নলিখিত বিষয়গুলোর দ্বারা নির্ধারিত হয়:
- তালিকার প্রকার গ্রুপ ফিল্টার
- লিস্টিং গ্রুপ ফিল্টারটি যে
AdGroupবাAssetGroupটার্গেট করছে - কার্যক্রমের ক্রম
অপারেশনগুলো কীভাবে দলবদ্ধ করা হয় তা বিবেচনা করুন:
- একই
AssetGroupলক্ষ্য করে পরিচালিত সমস্ত ধারাবাহিকAssetGroupListingGroupFilterOperationঅপারেশন (create,updateএবংremove) একটি অ্যাটমিক সাব-ব্যাচে একত্রিত করা হয় (কোনো আংশিক ব্যর্থতার আচরণ নেই)। - একই
AdGroupলক্ষ্য করেLISTING_GROUPক্রাইটেরিয়ার (AdGroupCriterion.listing_group) জন্য পরপর সমস্তAdGroupCriterionOperationঅপারেশন (create,update, এবংremove) একটি অ্যাটমিক সাব-ব্যাচে একত্রিত করা হয় (কোনো আংশিক ব্যর্থতার আচরণ নেই)। - অন্যান্য সমস্ত ধারাবাহিক অপারেশনগুলিকে নন-অ্যাটমিক সাব-ব্যাচে একত্রিত করা হয় (আংশিক ব্যর্থতার আচরণ)।
নিম্নলিখিত ডায়াগ্রামটি এই ধারণাটি ব্যাখ্যা করে। প্রতিটি ধূসর বাক্স গুগল অ্যাডস এপিআই ব্যবহার করে জমা দেওয়া একটি ব্যাচ জবকে প্রতিনিধিত্ব করে। ধূসর বাক্সগুলির মধ্যে, গুগল অ্যাডস এপিআই সার্ভার দ্বারা তৈরি সাব-ব্যাচগুলিকে বোঝানোর জন্য স্বতন্ত্র অপারেশনগুলিকে রঙ অনুসারে গোষ্ঠীভুক্ত করা হয়েছে। প্রতিটি ধূসর বাক্সে অপারেশনগুলির ক্রম সেই ক্রমের সাথে মিলে যায়, যে ক্রমে অপারেশনগুলি ব্যাচ জবে যুক্ত করা হতো।
সীমাবদ্ধতা
ব্যাচ জবের প্রেক্ষাপটে লিস্টিং গ্রুপ ফিল্টার নিয়ে কাজ করার সময় নিম্নলিখিত সীমাবদ্ধতাগুলো প্রযোজ্য হয়:
- একই
AdGroupলক্ষ্য করেLISTING_GROUPক্রাইটেরিয়ার (AdGroupCriterion.listing_group) জন্যAdGroupCriterionOperationএর ধারাবাহিক অপারেশনগুলোর (create,update, এবংremove) একটি একক অ্যাটমিক সাব-ব্যাচের দৈর্ঘ্য ২০,০০০ অপারেশনের বেশি হতে পারবে না। তবে, ১০,০০০ অপারেশনের বেশি না করার পরামর্শ দেওয়া হয়। যেহেতু প্রতিটিAddBatchJobOperationsRequestসর্বোচ্চ সীমা ১০,০০০ অপারেশন, তাই ১০,০০১ থেকে ২০,০০০ অপারেশনের একটিAdGroupসাব-ব্যাচ অবশ্যই কমপক্ষে দুটি ধারাবাহিকAddBatchJobOperationsরিকোয়েস্টের মাধ্যমে আপলোড করতে হবে। - একই
AssetGroupলক্ষ্য করে পরিচালিত ধারাবাহিকAssetGroupListingGroupFilterOperationঅপারেশনগুলোর (create,updateএবংremove) একটি একক অ্যাটমিক সাব-ব্যাচ ১০,০০০-এর বেশি অপারেশন করতে পারবে না। - এই অপারেশন সংখ্যার সীমাগুলোর যেকোনো একটি লঙ্ঘন করলে (অথবা একটি একক সাব-ব্যাচের জন্য সার্ভারের অভ্যন্তরীণ সিরিয়ালাইজড বাইট আকারের সীমা অতিক্রম করলে) সেই সাব-ব্যাচটিতে ব্যাচ জবটি বাতিল হয়ে যায়: এর আগে সম্পন্ন হওয়া যেকোনো সাব-ব্যাচ কমিট করা অবস্থায় থাকে, কিন্তু সমস্যা সৃষ্টিকারী সাব-ব্যাচ এবং এর পরবর্তী যেকোনো সাব-ব্যাচের সমস্ত অপারেশন
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ত্রুটির কারণে ব্যর্থ হয়েছে।
এই ত্রুটিগুলি নির্দেশ করে যে, একই অ্যাটমিক সাব-ব্যাচের অন্য একটি অপারেশন ব্যর্থ হওয়ায় ওই ইনডেক্সের অপারেশনটি রোলব্যাক করা হয়েছে। সমস্যার মূল কারণ শনাক্ত করতে, একই AdGroup বা AssetGroup ID শেয়ার করা অপারেশনগুলির জন্য প্রতিটি BatchJobResult এর status মেসেজগুলি—ট্রানজ্যাকশন ত্রুটির operation_index এর আগে ও পরে—পর্যালোচনা করুন।