ব্যাচ জবে লিস্টিং গ্রুপ ফিল্টার ব্যবহার করুন

আপনি যখন কোনও AdGroupCriterion.listing_group বা AssetGroupListingGroupFilter-এর প্রসঙ্গে তালিকাভুক্ত গ্রুপ ফিল্টার নিয়ে কাজ করেন, তখন আপনার ইন্টিগ্রেশন ডিজাইন করার সময় নিম্নলিখিত বিষয়গুলি বিবেচনা করুন।

ব্যাচ স্প্লিটিং

LISTING_GROUPAdGroupCriterion.listing_groupAdGroup

কোনও ব্যাচ জবে যদি এমন কোনও অপারেশন থাকে যাতে বিজ্ঞাপন গ্রুপের মাপকাঠি বা অ্যাসেট গ্রুপ লিস্টিং গ্রুপের ফিল্টার থাকে, তাহলে 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 সার্ভার যে সাব-ব্যাচ তৈরি করে তা দেখানোর জন্য আলাদা অপারেশনগুলি রঙ অনুযায়ী গ্রুপ করা হয়। প্রতিটি ধূসর বক্সে অপারেশনের ক্রম, ব্যাচ জবে অপারেশন যোগ করার ক্রমের সাথে মিলে যায়।

ডায়াগ্রামে দেখানো হয়েছে যে ব্যাচ অপারেশনকে সাব-ব্যাচে গ্রুপ করা হয়েছে

সীমাবদ্ধতা

ব্যাচ জব প্রসঙ্গে তালিকাভুক্ত গ্রুপ ফিল্টার নিয়ে কাজ করার সময়, নিম্নলিখিত সীমাবদ্ধতা প্রযোজ্য হয়:

  • LISTING_GROUP ক্রাইটেরিয়ার জন্য পরপর AdGroupCriterionOperation অপারেশনের (create, update এবং remove) একটি সিঙ্গেল অ্যাটমিক সাব-ব্যাচ (AdGroupCriterion.listing_group) একই AdGroup টার্গেট করলে, সেটি ২০,০০০ অপারেশনের বেশি হতে পারবে না। তবে, ১০,০০০-এর বেশি অপারেশন না করার সাজেশন দেওয়া হয়। প্রতিটি AddBatchJobOperationsRequest-এ ১০,০০০টি অপারেশনের সীমা নির্ধারিত থাকার কারণে, ১০,০০১ থেকে ২০,০০০টি অপারেশনের একটি AdGroup সাব-ব্যাচকে অন্তত দুটি পরপর AddBatchJobOperations অনুরোধে আপলোড করতে হবে।
  • একই AssetGroup-কে টার্গেট করে পরপর AssetGroupListingGroupFilterOperationটি অপারেশন (create, update এবং remove)-এর একটি অ্যাটমিক সাব-ব্যাচে ১০,০০০-এর বেশি অপারেশন থাকতে পারবে না।
  • এইসব অপারেশন সংখ্যার সীমা লঙ্ঘন করলে (অথবা কোনও একটি সাব-ব্যাচের জন্য সার্ভারের ইন্টার্নাল সিরিয়ালাইজড বাইট সাইজের সীমা অতিক্রম করলে) সেই সাব-ব্যাচে ব্যাচ জব বাতিল হয়ে যায়: আগে সম্পূর্ণ হয়ে যাওয়া সাব-ব্যাচগুলি কমিট করা থাকে, তবে লঙ্ঘনকারী সাব-ব্যাচের সব অপারেশন এবং পরবর্তী সব সাব-ব্যাচ InternalError.INTERNAL_ERROR কোড সহ ব্যর্থ হয়।

সমস্যার সমাধান

ব্যাচ জবে তালিকাভুক্ত গ্রুপ ফিল্টার অপারেশনকে একটি ট্রানজ্যাকশন হিসেবে প্রসেস করা হয়, এর ফলে এমন পরিস্থিতি তৈরি হতে পারে যেখানে অল্প সংখ্যক ভুল অপারেশনের কারণে অনেক অপারেশন ব্যর্থ হয়। এছাড়াও, BatchJob অপারেশন প্রসেস করার পদ্ধতির কারণে, ডাউনস্ট্রিম ব্যর্থতার আগে বা পরে কোনও ইন্ডেক্সে ব্যর্থতার মূল কারণ দেখা যেতে পারে।

যেমন, ListBatchJobResults থেকে পাওয়া উত্তর প্রসেস করার সময়:

এইসব সমস্যা থেকে বোঝা যায় যে সেই ইন্ডেক্সে অপারেশনটি রোলব্যাক করা হয়েছে কারণ একই অ্যাটমিক সাব-ব্যাচে অন্য একটি অপারেশন ব্যর্থ হয়েছে। সমস্যার মূল কারণ শনাক্ত করতে, প্রতিটি BatchJobResult-এ status মেসেজগুলি পুনরাবৃত্তি করুন—ট্রানজ্যাকশন ত্রুটির operation_index-এর আগে এবং পরে—একই AdGroup বা AssetGroup আইডি শেয়ার করার ক্রিয়াকলাপের জন্য।