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

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

প্রতিবেদনের জন্য Google এর সম্পদ ব্যবহারের নীতি বুঝুন

এর সার্ভারের স্থায়িত্ব নিশ্চিত করতে, Google Ads API GoogleAdsService.Search এবং GoogleAdsService.SearchStream কোয়েরি প্যাটার্নগুলিকে থ্রোটল করে যা অতিরিক্ত পরিমাণে API সংস্থানগুলি ব্যবহার করে৷ যদি একটি নির্দিষ্ট ক্যোয়ারী প্যাটার্ন থ্রোটল করা হয়, তবে অন্যান্য পরিষেবা, পদ্ধতি এবং ক্যোয়ারী প্যাটার্নগুলি প্রভাবিত না হয়ে কাজ করতে থাকবে। থ্রোটল করা অনুরোধের জন্য নিম্নলিখিত ত্রুটিগুলি নিক্ষেপ করা হয়েছে:

API সংস্করণ ভুল সংকেত
<= v17 QuotaError.RESOURCE_EXHAUSTED
>= v18 QuotaError.EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION বা QuotaError.EXCESSIVE_LONG_TERM_QUERY_RESOURCE_CONSUMPTION উচ্চ সম্পদ ব্যবহারের সময়কালের উপর নির্ভর করে৷

আপনার ব্যয়বহুল প্রতিবেদনগুলি সনাক্ত করতে এবং নিরীক্ষণ করতে আপনাকে সাহায্য করার জন্য, আমরা পৃথক প্রতিবেদনের জন্য একটি খরচ মেট্রিকও ফেরত দেব।

পদ্ধতি খরচ ক্ষেত্র
GoogleAdsService.Search SearchGoogleAdsResponse.query_resource_consumption
GoogleAdsService.SearchStream SearchGoogleAdsStreamResponse.query_resource_consumption

এই ক্ষেত্রগুলির দ্বারা প্রত্যাবর্তিত খরচ মেট্রিক বিভিন্ন কারণের উপর নির্ভর করে যেমন

  • আপনার অ্যাকাউন্টের আকার
  • আপনার প্রতিবেদনে আপনি যে ভিউ এবং কলামগুলি আনেন
  • Google Ads API সার্ভারে লোড।

আপনাকে ব্যয়বহুল ক্যোয়ারী ট্র্যাক করতে সাহায্য করার জন্য, আমরা আমাদের সার্ভারে বিভিন্ন কোয়েরি প্যাটার্নের রিসোর্স খরচের আশেপাশে প্রাথমিক সমষ্টিগত পরিসংখ্যান প্রকাশ করছি। আপনাকে আপনার প্রশ্নগুলি ঠিক করতে সাহায্য করার জন্য আমরা পর্যায়ক্রমে আপডেট করা নম্বরগুলি প্রকাশ করব৷

সময়ের জানালা গড় (p50)। P70 (মাঝারি উচ্চ) P95 (খুব উচ্চ)
স্বল্পমেয়াদী (5 মিনিট) 6000 30000 1800000
দীর্ঘমেয়াদী (24 ঘন্টা)। 16000 90000 8400000

একটি উদাহরণ হিসাবে, অনুমান করুন যে আপনি নিম্নরূপ একটি ক্যোয়ারী প্যাটার্ন চালাচ্ছেন, যা প্রতি প্রতিবেদনে 600 ইউনিট সংস্থান গ্রহণ করে।

SELECT campaign.id, campaign.name, metrics.cost_micros FROM campaign WHERE
    segments.date = "YYYY-MM-DD"

আপনি segments.date ফিল্টারের জন্য বিভিন্ন মান প্রতিস্থাপন করার জন্য ক্যোয়ারীটি পরিবর্তন করে বিভিন্ন পৃথক তারিখের জন্য একাধিক গ্রাহক অ্যাকাউন্টের জন্য এই ক্যোয়ারীটি চালান। নিম্নলিখিত সারণীটি একটি নির্দিষ্ট সময় উইন্ডোতে আপনি কতগুলি প্রতিবেদন চালাতে পারেন তা দেখায় যাতে আপনার সংস্থান ব্যবহার বিভিন্ন সংস্থান ব্যবহারের বালতিতে ফিট করে।

সময়ের জানালা গড় পরিমিতরূপে উচ্চ সুউচ্চ
স্বল্পমেয়াদী (5 মিনিট) 10 50 3000
দীর্ঘমেয়াদী (24 ঘন্টা)। 26 150 14000

এই ক্যোয়ারী প্যাটার্নটি 5 মিনিটে 10 বার চালানো একটি গড় ব্যবহার হিসাবে গণনা করা হবে, যেখানে 5 মিনিটে 3000টি প্রতিবেদন চালানো খুব উচ্চ ব্যবহার হিসাবে গণনা করা হবে৷

আপনার প্রতিবেদনের সম্পদ খরচ অপ্টিমাইজ করার জন্য বিভিন্ন কৌশল রয়েছে। এই গাইডের বাকি অংশ এই কৌশলগুলির কিছু কভার করে।

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

প্রতিবার আপনার ডেটার প্রয়োজন হলে সার্ভারে কল করার পরিবর্তে স্থানীয় ডাটাবেসে 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 বিজ্ঞাপন অ্যাকাউন্ট থেকে ডাউনলোড করা ডেটা মুছুন।