Google Analytics 4 এবং BigQuery-এর মাধ্যমে পারফরম্যান্স পরিমাপ ও ডিবাগ করুন

কীভাবে Google Analytics 4 প্রপার্টিতে ওয়েব ভাইটাল ডেটা পাঠাতে হয় এবং BigQuery এবং লুকার স্টুডিওতে বিশ্লেষণের জন্য ডেটা এক্সপোর্ট করতে হয় তা জানুন।

Google অনেকগুলি টুল সরবরাহ করে — সার্চ কনসোল , পেজস্পিড ইনসাইটস (PSI), এবং Chrome ব্যবহারকারীর অভিজ্ঞতা রিপোর্ট (CrUX)—যা ডেভেলপারদের দেখতে দেয় যে তাদের সাইটগুলি ক্ষেত্রে তাদের প্রকৃত ব্যবহারকারীদের জন্য কোর ওয়েব ভাইটাল মেট্রিক্সের বিপরীতে কীভাবে পারফর্ম করে।

এই সরঞ্জামগুলি দুর্দান্ত যে এগুলি আপনাকে আপনার সাইটের আসল-ব্যবহারকারীর কার্যক্ষমতার একটি উচ্চ-স্তরের ভিউ দেয় এবং ব্যবহার শুরু করার জন্য তাদের একেবারে কোনও সেটআপের প্রয়োজন হয় না।

যাইহোক, আপনার সাইটের পারফরম্যান্স পরিমাপ করার জন্য আপনি কেন এই টুলগুলির উপর নির্ভর করতে চান না তার কয়েকটি জটিল কারণ রয়েছে:

  • CrUX-ভিত্তিক সরঞ্জামগুলি হয় মাসিক বা পূর্ববর্তী 28-দিনের সময়ের দ্বারা ডেটা রিপোর্ট করে। এর মানে হল আপনি ফলাফলগুলি দেখতে পাওয়ার আগে কোনও পরিবর্তন করার পরে আপনাকে দীর্ঘ সময় অপেক্ষা করতে হবে।
  • CrUX-ভিত্তিক সরঞ্জামগুলি শুধুমাত্র দেশ, সংযোগের ধরন এবং ডিভাইসের বিভাগ (ডেস্কটপ বা মোবাইল) এর মতো সীমিত সংখ্যক মাত্রা দ্বারা ভাগ করা যেতে পারে। আপনি আপনার ব্যবসার জন্য নির্দিষ্ট মাত্রার দ্বারা ডেটা স্লাইস করতে পারবেন না (উদাহরণস্বরূপ: নিযুক্ত ব্যবহারকারী, একটি নির্দিষ্ট পরীক্ষা গোষ্ঠীর ব্যবহারকারী, ইত্যাদি)।
  • CrUX-ভিত্তিক সরঞ্জামগুলি আপনাকে বলতে পারে আপনার কার্যক্ষমতা কী , কিন্তু কেন তা তারা আপনাকে বলতে পারে না৷ বিশ্লেষণের সরঞ্জামগুলির সাহায্যে আপনি সমস্যাগুলি ট্র্যাক এবং ডিবাগ করতে সহায়তা করার জন্য অতিরিক্ত ডেটা পাঠাতে পারেন৷

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

একবার আপনার সবকিছু সেট আপ হয়ে গেলে, আপনি এই মত ড্যাশবোর্ড তৈরি করতে সক্ষম হবেন:

ওয়েব ভাইটালস কানেক্টর রিপোর্টের স্ক্রিনশট

ওয়েব ভাইটালস কানেক্টর রিপোর্টের স্ক্রিনশট

এবং আপনি যদি এখানে বর্ণিত সমস্ত পদক্ষেপের একটি ভিজ্যুয়াল ওভারভিউ চান, তাহলে Google I/O '21 থেকে আমাদের আলোচনা দেখুন :

পরিমাপ

কাস্টম মেট্রিক্স ব্যবহার করে Google অ্যানালিটিক্সের মাধ্যমে কার্যক্ষমতা পরিমাপ করা সবসময়ই সম্ভব হয়েছে, কিন্তু Google Analytics 4 (GA4) এ কিছু নতুন বৈশিষ্ট্য রয়েছে যা বিশেষ করে ডেভেলপারদের উত্তেজিত হওয়া উচিত।

যদিও Google Analytics ওয়েব ইন্টারফেসে শক্তিশালী বিশ্লেষণের সরঞ্জাম রয়েছে, আপনি সম্ভবত ইতিমধ্যেই জানেন এমন একটি প্রশ্নের ভাষা ব্যবহার করে কাঁচা ইভেন্ট ডেটা অ্যাক্সেসের শক্তি এবং নমনীয়তাকে হারানো কঠিন।

Google Analytics 4 এবং BigQuery ব্যবহার করে কোর ওয়েব ভাইটাল পরিমাপ করা শুরু করতে, আপনাকে তিনটি জিনিস করতে হবে:

  1. একটি Google Analytics 4 সম্পত্তি এবং একটি BigQuery প্রকল্প তৈরি করুন।
  2. আপনার Google Analytics প্রপার্টি কনফিগারেশনে BigQuery এক্সপোর্ট সক্ষম করুন, যাতে আপনি প্রাপ্ত সমস্ত ডেটা আপনার BigQuery প্রোজেক্ট টেবিলে স্বয়ংক্রিয়ভাবে জমা হয়ে যাবে।
  3. আপনার সাইটে ওয়েব-ভাইটাল জাভাস্ক্রিপ্ট লাইব্রেরি যোগ করুন, যাতে আপনি কোর ওয়েব ভাইটাল মেট্রিক্স পরিমাপ করতে পারেন এবং অ্যাট্রিবিউশন ডেটা সহ Google Analytics 4-এ ডেটা পাঠাতে পারেন

বিশ্লেষণ করুন

আপনি একবার সেট আপ হয়ে গেলে, আপনি BigQuery ইন্টারফেসে ইভেন্ট ডেটা জমা হওয়া দেখতে পাবেন এবং আপনি এইভাবে ডেটা জিজ্ঞাসা করতে সক্ষম হবেন:

SELECT * FROM `my_project_id.analytics_XXXXX.events_*`
WHERE event_name IN ('LCP', 'INP', 'CLS')

এখানে সেই ক্যোয়ারী থেকে ফলাফলের একটি পূর্বরূপ:

BigQuery-এ ওয়েব ভাইটাল ইভেন্ট ডেটা

ওয়েব ভাইটাল ডেটা কোয়েরি করুন

আপনি আপনার ওয়েব ভাইটালস ইভেন্ট ডেটা অনুসন্ধান শুরু করার আগে, ডেটা কীভাবে একত্রিত হয় তা বোঝা গুরুত্বপূর্ণ৷

বোঝার সবচেয়ে গুরুত্বপূর্ণ বিষয় হল, কিছু ক্ষেত্রে, একই পৃষ্ঠায় একই মেট্রিকের জন্য একাধিক ইভেন্ট প্রাপ্ত হতে পারে । এটি ঘটতে পারে যদি মেট্রিক মান পরিবর্তন হয় এবং একটি আপডেট করা মান রিপোর্ট করা হয় (CLS-এর সাথে একটি সাধারণ ঘটনা)।

ওয়েব ভাইটাল ইভেন্টগুলির জন্য, প্রেরিত সর্বশেষ মানটি সর্বদা সবচেয়ে সঠিক, তাই কোনো বিশ্লেষণ করার আগে, শুধুমাত্র সেই মানগুলির জন্য ফিল্টার করা গুরুত্বপূর্ণ৷ Google Analytics 4-এ ডেটা পাঠানোর জন্য ওয়েব-ভিটালস জাভাস্ক্রিপ্ট লাইব্রেরি দ্বারা প্রদত্ত কোড স্নিপেটে প্রতি মেট্রিক একটি অনন্য আইডি পাঠানো অন্তর্ভুক্ত, তাই আপনি প্রতিটি মেট্রিক আইডির জন্য আপনার ফলাফলগুলিকে শুধুমাত্র শেষ-প্রাপ্ত মানের মধ্যে সীমাবদ্ধ করতে নিম্নলিখিত ক্যোয়ারী ব্যবহার করতে পারেন:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)

মনে রাখবেন যে এই পোস্টে উল্লেখ করা অন্যান্য সমস্ত প্রশ্ন এই সাবকোয়েরি দিয়ে শুরু হবে।

উদাহরণ প্রশ্ন

পরবর্তী কয়েকটি বিভাগে সাধারণ ওয়েব ভাইটাল কোয়েরির কয়েকটি উদাহরণ দেখায় যা আপনি চালাতে চান।

LCP, INP, এবং CLS সমগ্র সাইট জুড়ে 75% শতাংশে (p75)

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  metric_name,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS p75,
  COUNT(1) as count
FROM (
  SELECT
    metric_name,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
)
GROUP BY 1

সর্বোচ্চ থেকে সর্বনিম্ন পর্যন্ত সমস্ত পৃথক LCP মান

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
FROM web_vitals_events
WHERE metric_name = 'LCP'
ORDER BY metric_value DESC
# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS LCP,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'LCP'
)
GROUP BY 1
ORDER BY count DESC
LIMIT 10

সবচেয়ে খারাপ CLS সহ শীর্ষ 10 পৃষ্ঠা (p75)

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC
LIMIT 10

ডিবাগ

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

আপনার স্কোর কী তা জানা সহায়ক নয় যদি আপনি পদক্ষেপ নিতে এবং সমস্যার সমাধান করতে না পারেন।

ক্ষেত্রের ডিবাগ কর্মক্ষমতা ব্যাখ্যা করে কিভাবে আপনি আপনার বিশ্লেষণ ডেটার সাথে অতিরিক্ত ডিবাগ তথ্য পাঠাতে পারেন। আপনি যদি সেই পোস্টে বিশদ নির্দেশাবলী অনুসরণ করেন, তাহলে আপনি সেই ডিবাগ তথ্যটি BigQuery-এও উপস্থিত দেখতে পাবেন।

উদাহরণ প্রশ্ন

কর্মক্ষমতা সমস্যাগুলির মূল কারণ সনাক্ত করতে সাহায্য করার জন্য কীভাবে debug_target ইভেন্ট প্যারামিটার ব্যবহার করতে হয় তা নিম্নলিখিত প্রশ্নগুলি দেখায়৷

CLS এ অবদানকারী শীর্ষ উপাদান

debug_target হল একটি CSS নির্বাচক স্ট্রিং যা মেট্রিক মানের সাথে সবচেয়ে প্রাসঙ্গিক পৃষ্ঠার উপাদানের সাথে মিলে যায়।

CLS-এর সাথে, debug_target বৃহত্তম লেআউট শিফট থেকে সবচেয়ে বড় উপাদানের প্রতিনিধিত্ব করে যা CLS মানতে অবদান রাখে। যদি কোনো উপাদান স্থানান্তরিত না হয় তাহলে debug_target মান null হবে।

নিম্নোক্ত ক্যোয়ারীটি তাদের CLS দ্বারা 75 তম পার্সেন্টাইলে সবচেয়ে খারাপ থেকে সেরা পৃষ্ঠাগুলিকে তালিকাভুক্ত করবে, debug_target দ্বারা গোষ্ঠীবদ্ধ:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  debug_target,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "debug_target") as debug_target,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
    *
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1, 2
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC

CLS-এ অবদানকারী শীর্ষ উপাদানগুলির জন্য প্রশ্নের ফলাফল

পৃষ্ঠার কোন উপাদানগুলি স্থানান্তরিত হচ্ছে তা জানা থাকলে সমস্যার মূল কারণ সনাক্ত করা এবং সমাধান করা আরও সহজ করা উচিত৷

মনে রাখবেন যে এখানে রিপোর্ট করা উপাদানগুলি একই উপাদান নাও হতে পারে যেগুলি আপনি যখন আপনার পৃষ্ঠাগুলিকে স্থানীয়ভাবে ডিবাগ করার সময় স্থানান্তরিত হতে দেখেন, তাই প্রথম স্থানে এই ডেটা ক্যাপচার করা খুবই গুরুত্বপূর্ণ৷ আপনি যে সমস্যাগুলি বুঝতে পারেন না তা ঠিক করা খুব কঠিন!

অন্যান্য মেট্রিক্স ডিবাগ করুন

পূর্ববর্তী ক্যোয়ারী CLS মেট্রিকের ফলাফল দেখায়, কিন্তু LCP এবং INP-এর জন্য ডিবাগ টার্গেট রিপোর্ট করতে ঠিক একই কৌশল ব্যবহার করা যেতে পারে। ডিবাগ করার জন্য প্রাসঙ্গিক মেট্রিকের সাথে যেখানে ক্লজটি প্রতিস্থাপন করুন:

WHERE metric_name = 'INP'
WHERE metric_name = 'LCP'

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

ভিজ্যুয়ালাইজ করুন

শুধুমাত্র প্রশ্নের ফলাফল দেখেই অন্তর্দৃষ্টি পাওয়া চ্যালেঞ্জিং হতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত ক্যোয়ারীটি ডেটাসেটে LCP-এর জন্য দৈনিক 75তম পার্সেন্টাইল মান তালিকাভুক্ত করে।

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  event_date,
  metric_name,
  APPROX_QUANTILES(ROUND(metric_value, 2), 100)[OFFSET(75)] AS p75
FROM
  (
    SELECT
      event_date,
      metric_name,
      ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value'), 3) AS metric_value
    FROM web_vitals_events
    WHERE
      metric_name = 'LCP'
  )
GROUP BY
  1, 2
ORDER BY event_date

এই ক্যোয়ারী ফলাফলগুলি থেকে, শুধুমাত্র ডেটা দেখে প্রবণতা বা বহিরাগতদের সনাক্ত করা কঠিন।

দৈনিক মেট্রিক মান ক্যোয়ারী ফলাফল

এই ধরনের ক্ষেত্রে, ডেটা ভিজ্যুয়ালাইজ করা আপনাকে আরও দ্রুত অন্তর্দৃষ্টি পেতে সাহায্য করতে পারে।

লুকার স্টুডিওতে ক্যোয়ারী ফলাফল ভিজ্যুয়ালাইজ করুন

BigQuery ডেটা স্টুডিওর মাধ্যমে যেকোন প্রশ্নের ফলাফল কল্পনা করার একটি দ্রুত উপায় প্রদান করে। লুকার স্টুডিও একটি ডেটা ভিজ্যুয়ালাইজেশন এবং ড্যাশবোর্ডিং টুল যা বিনামূল্যে ব্যবহার করা যায়। আপনার ক্যোয়ারী ফলাফল দেখতে, BigQuery UI-তে আপনার ক্যোয়ারী চালানোর পরে, এক্সপ্লোর ডেটা বোতামে ক্লিক করুন এবং লুকার স্টুডিও দিয়ে এক্সপ্লোর নির্বাচন করুন।

BigQuery-এ Looker Studio বিকল্পের মাধ্যমে অন্বেষণ করুন

এটি এক্সপ্লোর ভিউতে BigQuery থেকে Looker Studio-তে একটি সরাসরি লিঙ্ক তৈরি করবে। এই দৃশ্যে, আপনি যে ক্ষেত্রগুলিকে কল্পনা করতে চান তা নির্বাচন করতে পারেন, চার্টের ধরনগুলি, সেটআপ ফিল্টারগুলি চয়ন করতে পারেন এবং দ্রুত ভিজ্যুয়াল বিশ্লেষণের জন্য অ্যাডহক চার্ট তৈরি করতে পারেন৷ পূর্ববর্তী ক্যোয়ারী ফলাফল থেকে, আপনি সময়ের সাথে LCP মানগুলির প্রবণতা দেখতে এই লাইন চার্ট তৈরি করতে পারেন:

লুকার স্টুডিওতে দৈনিক LCP মানগুলির লাইন চার্ট

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

আপনি স্থানীয় BigQuery সংযোগকারী ব্যবহার করে Looker Studio-তে একটি ড্যাশবোর্ড তৈরি করতে পারেন। এটি করতে, datastudio.google.com- এ নেভিগেট করুন, একটি নতুন ডেটা উত্স তৈরি করুন, BigQuery সংযোগকারী নির্বাচন করুন এবং আপনি যে ডেটাসেটটির সাথে কাজ করতে চান তা চয়ন করুন:

Looker Studio-তে BigQuery নেটিভ কানেক্টর ব্যবহার করা হচ্ছে

ওয়েব ভাইটাল ডেটা বস্তুগত করুন

পূর্বে বর্ণিত ওয়েব ভাইটালস ইভেন্ট ডেটার ড্যাশবোর্ড তৈরি করার সময়, Google Analytics 4 এক্সপোর্ট ডেটাসেট সরাসরি ব্যবহার করা কার্যকর নয়। GA4 ডেটার গঠন এবং ওয়েব ভাইটাল মেট্রিক্সের জন্য প্রয়োজনীয় প্রি-প্রসেসিংয়ের কারণে, আপনার ক্যোয়ারীটির কিছু অংশ একাধিকবার শেষ হবে। এটি দুটি সমস্যা তৈরি করে: ড্যাশবোর্ডের কার্যক্ষমতা এবং BigQuery খরচ।

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

নিম্নলিখিত স্ক্রিপ্টটি আপনার BigQuery ডেটা (উৎস সারণী) প্রিপ্রসেস করবে এবং একটি বস্তুগত টেবিল (টার্গেট টেবিল) তৈরি করবে। আপনার নিজের ডেটাসেটের জন্য এই ক্যোয়ারীটি ব্যবহার করার সময়, আপনি প্রক্রিয়াকৃত ডেটার পরিমাণ কম করার জন্য উত্স টেবিলের জন্য একটি তারিখ পরিসীমা নির্ধারণ করতে চাইতে পারেন।

# Materialize Web Vitals metrics from GA4 event export data

# Replace target table name
CREATE OR REPLACE TABLE bigquery_project_id.ga4_demo_dev.web_vitals_summary
  PARTITION BY DATE(event_timestamp)
  CLUSTER BY metric_name
AS
SELECT
  ga_session_id,
  IF(
    EXISTS(SELECT 1 FROM UNNEST(events) AS e WHERE e.event_name = 'first_visit'),
    'New user',
    'Returning user') AS user_type,
  IF(
    (SELECT MAX(session_engaged) FROM UNNEST(events)) > 0, 'Engaged', 'Not engaged')
    AS session_engagement,
  evt.* EXCEPT (session_engaged, event_name),
  event_name AS metric_name,
  FORMAT_TIMESTAMP('%Y%m%d', event_timestamp) AS event_date
FROM
  (
    SELECT
      ga_session_id,
      ARRAY_AGG(custom_event) AS events
    FROM
      (
        SELECT
          ga_session_id,
          STRUCT(
            country,
            device_category,
            device_os,
            traffic_medium,
            traffic_name,
            traffic_source,
            page_path,
            debug_target,
            event_timestamp,
            event_name,
            metric_id,
            IF(event_name = 'LCP', metric_value / 1000, metric_value) AS metric_value,
            user_pseudo_id,
            session_engaged,
            session_revenue) AS custom_event
        FROM
          (
            SELECT
              (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
                AS ga_session_id,
              (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
                AS metric_id,
              ANY_VALUE(device.category) AS device_category,
              ANY_VALUE(device.operating_system) AS device_os,
              ANY_VALUE(traffic_source.medium) AS traffic_medium,
              ANY_VALUE(traffic_source.name) AS traffic_name,
              ANY_VALUE(traffic_source.source) AS traffic_source,
              ANY_VALUE(
                REGEXP_SUBSTR(
                  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
                  r'^[^?]+')) AS page_path,
              ANY_VALUE(
                (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'debug_target'))
                AS debug_target,
              ANY_VALUE(user_pseudo_id) AS user_pseudo_id,
              ANY_VALUE(geo.country) AS country,
              ANY_VALUE(event_name) AS event_name,
              SUM(ecommerce.purchase_revenue) AS session_revenue,
              MAX(
                (
                  SELECT
                    COALESCE(
                      value.double_value, value.int_value, CAST(value.string_value AS NUMERIC))
                  FROM UNNEST(event_params)
                  WHERE key = 'session_engaged'
                )) AS session_engaged,
              TIMESTAMP_MICROS(MAX(event_timestamp)) AS event_timestamp,
              MAX(
                (
                  SELECT COALESCE(value.double_value, value.int_value)
                  FROM UNNEST(event_params)
                  WHERE key = 'metric_value'
                )) AS metric_value,
            FROM
              # Replace source table name
              `bigquery_project_id.analytics_XXXXX.events_*`
            WHERE
              event_name IN ('LCP', 'INP', 'CLS', 'first_visit', 'purchase')
            GROUP BY
              1, 2
          )
      )
    WHERE
      ga_session_id IS NOT NULL
    GROUP BY ga_session_id
  )
CROSS JOIN UNNEST(events) AS evt
WHERE evt.event_name NOT IN ('first_visit', 'purchase');

এই বস্তুগত ডেটাসেটের বিভিন্ন সুবিধা রয়েছে:

  • ডেটা স্ট্রাকচার চ্যাপ্টা এবং কোয়েরি করা সহজ।
  • এটি মূল GA4 ডেটাসেট থেকে শুধুমাত্র ওয়েব ভাইটাল ইভেন্টগুলি ধরে রাখে।
  • সেশন আইডি, ব্যবহারকারীর ধরন (নতুন বনাম রিটার্নিং), এবং সেশনের ব্যস্ততার তথ্য সরাসরি কলামে পাওয়া যায়।
  • টেবিলটি তারিখ অনুসারে বিভাজিত এবং মেট্রিক নামের দ্বারা ক্লাস্টার করা হয়েছে । এটি সাধারণত প্রতিটি প্রশ্নের জন্য প্রক্রিয়াকৃত ডেটার পরিমাণ হ্রাস করে।
  • যেহেতু এই টেবিলটি জিজ্ঞাসা করার জন্য আপনাকে ওয়াইল্ডকার্ড ব্যবহার করার দরকার নেই, তাই কোয়েরির ফলাফলগুলি 24 ঘন্টা পর্যন্ত ক্যাশে করা যেতে পারে। এটি একই প্রশ্নের পুনরাবৃত্তি থেকে খরচ হ্রাস করে।
  • আপনি BigQuery BI ইঞ্জিন ব্যবহার করলে, আপনি এই টেবিলে অপ্টিমাইজ করা SQL ফাংশন এবং অপারেটর চালাতে পারেন।

আপনি BigQuery UI এর মধ্যে থেকে সরাসরি এই বস্তুগত সারণীটি অনুসন্ধান করতে পারেন বা BigQuery সংযোগকারী ব্যবহার করে Looker Studio-তে এটি ব্যবহার করতে পারেন।

ওয়েব ভাইটালস কানেক্টর ব্যবহার করুন

যেহেতু স্ক্র্যাচ থেকে একটি ড্যাশবোর্ড তৈরি করা সময়সাপেক্ষ, তাই আমরা একটি প্যাকেজড সমাধান তৈরি করেছি যা আপনার জন্য একটি টেমপ্লেট ড্যাশবোর্ড তৈরি করবে৷ প্রথমে নিশ্চিত করুন যে আপনি পূর্ববর্তী ক্যোয়ারী ব্যবহার করে আপনার ওয়েব ভাইটাল টেবিলটি বাস্তবায়িত করেছেন। তারপর এই লিঙ্কটি ব্যবহার করে লুকার স্টুডিওর জন্য ওয়েব ভাইটালস সংযোগকারী অ্যাক্সেস করুন: goo.gle/web-vitals-connector

একবার অনুমোদন দেওয়ার পরে, আপনাকে নিম্নলিখিত কনফিগারেশন স্ক্রীনটি দেখতে হবে:

ওয়েব ভাইটালস সংযোগকারী অনুমোদন স্ক্রীন

বাস্তবায়িত BigQuery টেবিল আইডি (যেমন টার্গেট টেবিল) এবং আপনার BigQuery বিলিং প্রকল্প আইডি প্রদান করুন। কানেক্ট ক্লিক করার পরে, লুকার স্টুডিও একটি নতুন টেমপ্লেটেড ড্যাশবোর্ড তৈরি করবে এবং এটির সাথে আপনার ডেটা যুক্ত করবে। আপনি আপনার পছন্দ মতো ড্যাশবোর্ড সম্পাদনা, পরিবর্তন এবং ভাগ করতে পারেন। আপনি যদি একবার একটি ড্যাশবোর্ড তৈরি করেন, তাহলে আপনাকে আবার সংযোগকারী লিঙ্কে যেতে হবে না, যদি না আপনি বিভিন্ন ডেটাসেট থেকে একাধিক ড্যাশবোর্ড তৈরি করতে চান।

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

ব্যবহারকারী বিশ্লেষণ ট্যাবে, আপনি একটি মেট্রিক নির্বাচন করতে পারেন এবং তারপরে বিভিন্ন ব্যবহার এবং ব্যবসায়িক মেট্রিক্স দ্বারা মেট্রিক্স শতাংশের পাশাপাশি ব্যবহারকারীর সংখ্যার ভাঙ্গন পেতে পারেন।

পৃষ্ঠা পাথ বিশ্লেষণ ট্যাব আপনাকে আপনার ওয়েবসাইটে সমস্যা ক্ষেত্র চিহ্নিত করতে সাহায্য করবে। এখানে, আপনি ওভারভিউ দেখতে একটি মেট্রিক বাছাই করতে পারেন। কিন্তু আপনি y অক্ষের শতকরা মান সহ সমস্ত পৃষ্ঠা পথের স্ক্যাটার-ম্যাপ এবং x অক্ষে রেকর্ড গণনাও দেখতে পাচ্ছেন। স্ক্যাটার ম্যাপ প্রত্যাশিত মেট্রিক মানগুলির চেয়ে কম পৃষ্ঠাগুলি সনাক্ত করতে সাহায্য করতে পারে। একবার আপনি পেজ পাথ টেবিলের স্ক্যাটার চার্ট ব্যবহার করে পৃষ্ঠাগুলি নির্বাচন করলে, আপনি ডিবাগ টার্গেট টেবিলটি দেখে সমস্যাটি আরও ড্রিল করতে পারেন।

আপনি কিভাবে একই জায়গায় আপনার ব্যবসা এবং কর্মক্ষমতা মেট্রিক্স নিরীক্ষণ করতে পারেন তার একটি উদাহরণ হল রাজস্ব বিশ্লেষণ ট্যাব। এই বিভাগটি সমস্ত সেশন প্লট করে যেখানে ব্যবহারকারী একটি ক্রয় করেছেন৷ আপনি একটি নির্দিষ্ট সেশন চলাকালীন ব্যবহারকারীর অভিজ্ঞতার সাথে অর্জিত আয়ের তুলনা করতে পারেন৷

উন্নত ব্যবহার

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

  • আপডেট করা ডেটা পেতে BigQuery-এ নির্ধারিত কোয়েরি সেট-আপ করুন। আমরা পূর্বে যে বস্তুগতকরণ ক্যোয়ারী চালিয়েছিলাম তা সেই মুহূর্তে আপনার ডেটার একটি স্ন্যাপশট নেয়। আপনি যদি আপনার ড্যাশবোর্ডকে নতুন ডেটার সাথে আপডেট রাখতে চান, তাহলে আপনি একটি নির্ধারিত ক্যোয়ারী চালাতে পারেন যা প্রতিদিন চলবে এবং নতুন ডেটার সাথে আপনার বস্তুগত সারণী যুক্ত করবে৷
  • ব্যবসার অন্তর্দৃষ্টির জন্য প্রথম পক্ষের ডেটা (যেমন CRM) যোগ দিন। বস্তুগত সারণীতে, আপনি একটি পৃথক কলাম হিসাবে user_id যোগ করতে পারেন। এটি আপনাকে আপনার প্রথম পক্ষের ডেটাতে যোগ দিতে দেবে। যদি আপনার প্রথম পক্ষের ডেটা ইতিমধ্যেই BigQuery-এ না থাকে, আপনি হয় ডেটা লোড করতে পারেন বা একটি ফেডারেটেড ডেটা উৎস ব্যবহার করতে পারেন।
  • আপনি Google Analytics-এ যে ডেটা পাঠান তার একটি প্যারামিটার হিসাবে আপনার সাইট বা অ্যাপ সংস্করণের প্রতিবেদন করুন এবং এটিকে বস্তুগত সারণীতে একটি কলাম হিসাবে যোগ করুন। তারপরে আপনি সেই সংস্করণের ডেটা আপনার চার্টে একটি মাত্রা হিসাবে যোগ করতে পারেন যাতে সংস্করণ পরিবর্তনগুলি কার্যক্ষমতাকে প্রভাবিত করে তা দেখতে সহজ করে।
  • আপনি যদি সরাসরি ক্যোয়ারী বা ড্যাশবোর্ডের মাধ্যমে ডেটাসেটের উল্লেখযোগ্যভাবে ভারী ব্যবহারের আশা করেন, তাহলে আপনি BigQuery BI ইঞ্জিনের অর্থপ্রদানের সংস্করণ ব্যবহার করে দেখতে পারেন।

সারাংশ

এই পোস্টে ক্ষেত্রটিতে সংগৃহীত বাস্তব-ব্যবহারকারীর ডেটা দিয়ে কার্যক্ষমতা পরিমাপ এবং ডিবাগ করার জন্য Google Analytics 4 এবং BigQuery কীভাবে ব্যবহার করতে হয় তার মূল বিষয়গুলি কভার করা হয়েছে৷ লুকার স্টুডিও এবং ওয়েব ভাইটালস কানেক্টর ব্যবহার করে কীভাবে স্বয়ংক্রিয় রিপোর্ট এবং ড্যাশবোর্ড তৈরি করা যায় তা ব্যাখ্যা করা হয়েছে যাতে ডেটা ভিজ্যুয়ালাইজ করা যতটা সম্ভব সহজ হয়।

এই পোস্ট থেকে কিছু গুরুত্বপূর্ণ গ্রহণ:

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