দক্ষতার সাথে ডেটা পরিচালনা করুন

অনেক Google বিজ্ঞাপন অ্যাপ্লিকেশনের একটি মূল কাজ হল ডেটা বিশ্লেষণ, গ্রাহকের প্রশ্ন এবং নীতি সম্মতি পরীক্ষাগুলির মতো ব্যবহারের ক্ষেত্রে অ্যাকাউন্ট ডেটা পুনরুদ্ধার করা। ডেটা আনার সময়, আপনার ব্যবহার অপ্টিমাইজ করা উচিত যাতে Google সার্ভারগুলিকে ওভারলোড না করা যায়, বা রেট সীমিত হওয়ার ঝুঁকি না থাকে৷ আরও বিশদ বিবরণের জন্য, রেট-সীমিতকরণ এবং একটি আপ-টু-ডেট যোগাযোগের ইমেল ঠিকানা বজায় রাখার নির্দেশিকা দেখুন।

আপনার ডেটা ক্যাশে করুন

প্রতিবার আপনার ডেটার প্রয়োজন হলে সার্ভারে কল করার পরিবর্তে স্থানীয় ডাটাবেসে API সার্ভার থেকে যে সত্তার বিবরণ আপনি আনেন তা ক্যাশে করা উচিত, বিশেষ করে এমন সত্তাগুলির জন্য যা ঘন ঘন অ্যাক্সেস করা হয় বা যা কদাচিৎ পরিবর্তন হয়। আপনি শেষবার ফলাফল সিঙ্ক করার পর কোন বস্তুগুলি পরিবর্তিত হয়েছে তা সনাক্ত করতে যেখানে সম্ভব পরিবর্তন-ইভেন্ট এবং পরিবর্তন-স্থিতি ব্যবহার করুন।

চলমান প্রতিবেদনের ফ্রিকোয়েন্সি অপ্টিমাইজ করুন

Google Ads ডেটা সতেজতা এবং কত ঘন ঘন ডেটা আপডেট করা হয় সে সম্পর্কে নির্দেশিকা প্রকাশ করেছে । কত ঘন ঘন রিপোর্ট আনতে হবে তা নির্ধারণ করতে আপনার এই নির্দেশিকা ব্যবহার করা উচিত।

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

আপনার রিপোর্টের আকার অপ্টিমাইজ করুন

আপনার অ্যাপ্লিকেশনটি প্রচুর পরিমাণে ছোট রিপোর্ট চালানোর পরিবর্তে ডেটার বড় ব্যাচ আনতে হবে। একটি ফ্যাক্টর যা এই পছন্দে ভূমিকা রাখে তা হল অ্যাকাউন্টের সীমা

উদাহরণস্বরূপ, নিম্নলিখিত কোডটি বিবেচনা করুন যা নির্দিষ্ট বিজ্ঞাপন গোষ্ঠীর পরিসংখ্যান টানে এবং একটি পরিসংখ্যান ডাটাবেস টেবিল আপডেট করে:

  List<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  foreach (long adGroupId in adGroupIds)
  {
    string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
        "metrics.cost_micros, metrics.impressions, segments.date FROM " +
        "ad_group WHERE segments.date DURING LAST_7_DAYS AND " +
        "ad_group.id = ${adGroupId}";
    List<GoogleAdsRow> rows = RunGoogleAdsReport(customerId, query);
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

এই কোডটি একটি ছোট পরীক্ষার অ্যাকাউন্টে ভাল কাজ করে। যাইহোক, Google Ads প্রতি প্রচারাভিযানে 20,000টি বিজ্ঞাপন গোষ্ঠী এবং অ্যাকাউন্ট প্রতি 10,000টি প্রচারাভিযান সমর্থন করে৷ তাই যদি এই কোডটি একটি বড় Google Ads অ্যাকাউন্টের বিরুদ্ধে চলে, তাহলে এটি Google Ads API সার্ভারগুলিকে ওভারলোড করতে পারে, যার ফলে রেট সীমিত এবং থ্রটলিং হতে পারে।

একটি একক প্রতিবেদন চালানো এবং স্থানীয়ভাবে এটি প্রক্রিয়া করা একটি ভাল পদ্ধতি হবে। একটি ইন-মেমরি মানচিত্র ব্যবহার করে এমন একটি পদ্ধতি দেখানো হয়েছে।

  Hashset<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
      "metrics.cost_micros, metrics.impressions, segments.date FROM " +
      "ad_group WHERE segments.date DURING LAST_7_DAYS";
  List<GoogleAdsRow> rows = RunGoogleAdsReport(customer_id, query);

  var memoryMap = new Dictionary<long, List<GoogleAdsRow>>();
  for each (GoogleAdsRow row in rows)
  {
    var adGroupId = row.AdGroup.Id;

    if (adGroupIds.Contains(adGroupId))
    {
      CheckAndAddRowIntoMemoryMap(row, adGroupId, memoryMap);
    }
  }
  foreach (long adGroupId in memoryMap.Keys())
  {
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

কম সংখ্যক রিপোর্ট চালানোর কারণে এটি Google Ads API সার্ভারে লোড কমিয়ে দেয়।

আপনি যদি দেখেন যে রিপোর্টটি মেমরিতে রাখা খুব বড়, তাহলে আপনি এইরকম একটি LIMIT ক্লজ যোগ করে ক্যোয়ারীটিকে ছোট গোষ্ঠীতে বিভক্ত করতে পারেন:

SELECT
  ad_group.id,
  ad_group.name,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  segments.date
FROM ad_group
WHERE segments.date DURING LAST_7_DAYS
  AND ad_group.id IN (id1, id2, ...)
LIMIT 100000

লেবেলগুলি সত্তাকে গোষ্ঠীবদ্ধ করার এবং রিপোর্টিং প্রশ্নের সংখ্যা কমানোর আরেকটি উপায়। আরও জানতে লেবেল নির্দেশিকা দেখুন।

আপনি যা আনছেন তা অপ্টিমাইজ করুন

প্রতিবেদনগুলি চালানোর সময়, আপনি আপনার প্রশ্নের মধ্যে যে কলামগুলি অন্তর্ভুক্ত করেন সেগুলি সম্পর্কে আপনার মনে রাখা উচিত৷ নিম্নলিখিত উদাহরণটি বিবেচনা করুন যা প্রতি ঘন্টায় চালানোর জন্য নির্ধারিত হয়:

SELECT
  customer.id,
  customer.currency_code,
  campaign.id,
  campaign.name,
  ad_group.id,
  ad_group.name,
  ad_group_criterion.keyword.match_type,
  ad_group_criterion.keyword.text,
  ad_group_criterion.criterion_id,
  ad_group_criterion.quality_info.creative_quality_score,
  ad_group_criterion.system_serving_status,
  ad_group_criterion.negative,
  ad_group_criterion.quality_info.quality_score,
  ad_group_criterion.quality_info.search_predicted_ctr,
  ad_group_criterion.quality_info.post_click_quality_score,
  metrics.historical_landing_page_quality_score,
  metrics.search_click_share,
  metrics.historical_creative_quality_score,
  metrics.clicks,
  metrics.impressions
FROM keyword_view
WHERE segments.date DURING LAST_7_DAYS

শুধুমাত্র যে কলামগুলি প্রতি ঘন্টায় পরিবর্তিত হতে পারে তা হল metrics.clicks এবং metrics.impressions । অন্যান্য সমস্ত কলামগুলি কদাচিৎ আপডেট করা হয় বা একেবারেই না, তাই প্রতি ঘন্টায় তাদের আনা অত্যন্ত অদক্ষ। আপনি এই মানগুলি স্থানীয় ডাটাবেসে সংরক্ষণ করতে পারেন এবং দিনে একবার বা দুবার পরিবর্তনগুলি ডাউনলোড করতে একটি পরিবর্তন-ইভেন্ট বা পরিবর্তন-স্থিতি প্রতিবেদন চালাতে পারেন।

কিছু ক্ষেত্রে, উপযুক্ত ফিল্টার প্রয়োগ করে আপনি ডাউনলোড করা সারির সংখ্যা কমাতে পারেন।

অব্যবহৃত অ্যাকাউন্টগুলি পরিষ্কার করুন

যদি আপনার অ্যাপ্লিকেশনটি তৃতীয় পক্ষের বিজ্ঞাপনদাতার অ্যাকাউন্টগুলি পরিচালনা করে, তাহলে আপনাকে গ্রাহক মন্থনের কথা মাথায় রেখে আপনার অ্যাপ্লিকেশন বিকাশ করতে হবে। যে গ্রাহকরা আর আপনার অ্যাপ্লিকেশন ব্যবহার করেন না তাদের অ্যাকাউন্টগুলি সরাতে আপনার পর্যায়ক্রমে আপনার প্রক্রিয়াগুলি এবং ডেটা স্টোরগুলি পরিষ্কার করা উচিত৷ অব্যবহৃত Google বিজ্ঞাপন অ্যাকাউন্টগুলি পরিষ্কার করার সময়, নিম্নলিখিত নির্দেশিকাগুলি মাথায় রাখুন:

  • আপনার গ্রাহক তাদের অ্যাকাউন্ট পরিচালনা করার জন্য আপনার আবেদন যে অনুমোদন দিয়েছেন তা প্রত্যাহার করুন।
  • গ্রাহকের Google বিজ্ঞাপন অ্যাকাউন্টে API কল করা বন্ধ করুন। এটি বিশেষত অফলাইন কাজের ক্ষেত্রে প্রযোজ্য যেমন ক্রন জব এবং ডেটা পাইপলাইন যা ব্যবহারকারীর হস্তক্ষেপ ছাড়াই চালানোর জন্য ডিজাইন করা হয়েছে।
  • যদি গ্রাহক তাদের অনুমোদন প্রত্যাহার করে থাকেন, তাহলে আপনার আবেদনটি সুন্দরভাবে পরিস্থিতি পরিচালনা করবে এবং Google এর API সার্ভারে অবৈধ API কল পাঠানো এড়াতে হবে।
  • যদি গ্রাহক তার Google Ads অ্যাকাউন্ট বাতিল করে থাকেন, তাহলে আপনার উচিত সেটি সনাক্ত করা এবং Google-এর API সার্ভারে অবৈধ API কল পাঠানো এড়ানো উচিত।
  • একটি উপযুক্ত সময়ের পরে আপনার স্থানীয় ডাটাবেস থেকে গ্রাহকের Google বিজ্ঞাপন অ্যাকাউন্ট থেকে ডাউনলোড করা ডেটা মুছুন।