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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 এবং ভিজ্যুয়ালাইজেশন টুল রয়েছে যেমন লুকার স্টুডিও যা আপনাকে আপনার প্রতিবেদনগুলিকে ঠিক যেভাবে তৈরি করতে চান সেভাবে তৈরি করার স্বাধীনতা দেয়৷
,

কীভাবে 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 এবং ভিজ্যুয়ালাইজেশন টুল রয়েছে যেমন লুকার স্টুডিও যা আপনাকে আপনার প্রতিবেদনগুলিকে ঠিক যেভাবে তৈরি করতে চান সেভাবে তৈরি করার স্বাধীনতা দেয়৷
,

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

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

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

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

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

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

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

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

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

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

পরিমাপ

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

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

গুগল অ্যানালিটিক্স 4 এবং বিগকুয়ারি ব্যবহার করে কোর ওয়েব ভিটালগুলি পরিমাপ শুরু করতে আপনার তিনটি জিনিস করা দরকার:

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

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

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

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

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

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

ক্যোয়ারী ওয়েব ভাইটাল ডেটা

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

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

ওয়েব ভাইটাল ইভেন্টগুলির জন্য, প্রেরিত সর্বশেষ মানটি সর্বদা সর্বাধিক নির্ভুল, তাই কোনও বিশ্লেষণ করার আগে কেবল সেই মানগুলির জন্য ফিল্টার করা গুরুত্বপূর্ণ। গুগল অ্যানালিটিক্স 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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
)

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

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

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

পুরো সাইট জুড়ে 75% পার্সেন্টাইল (পি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

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

# 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

সবচেয়ে খারাপ সিএলএস সহ শীর্ষ 10 পৃষ্ঠাগুলি (পি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

ডিবাগ

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

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

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

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

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

শীর্ষ উপাদানগুলি সিএলএসে অবদান রাখে

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

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

নিম্নলিখিত ক্যোয়ারীটি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

শীর্ষ উপাদানগুলির জন্য ক্যোয়ারী ফলাফল সিএলএসে অবদান রাখে

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

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

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

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

WHERE metric_name = 'INP'
WHERE metric_name = '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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

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

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

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

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

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

বিগকোয়ারিতে লুকার স্টুডিও বিকল্পের সাথে অন্বেষণ করুন

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

লুকার স্টুডিওতে ডেইলি এলসিপি মানগুলির লাইন চার্ট

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

আপনি নেটিভ বিগকুয়ারি সংযোগকারী ব্যবহার করে লুকার স্টুডিওতে একটি ড্যাশবোর্ড তৈরি করতে পারেন। এটি করার জন্য, ডেটাস্টুডিও.গোগল.কম এ নেভিগেট করুন, একটি নতুন ডেটা উত্স তৈরি করুন, বিগকিউরি সংযোগকারী নির্বাচন করুন এবং আপনি যে ডেটাসেটটি নিয়ে কাজ করতে চান তা চয়ন করুন:

লুকার স্টুডিওতে বিগকিউরি নেটিভ সংযোগকারী ব্যবহার করে

ওয়েব ভাইটাল ডেটা মেটালাইজ করুন

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

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

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

# 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');

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

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

আপনি বিগকিউরি ইউআইয়ের মধ্যে থেকে সরাসরি এই বস্তুবাদী টেবিলটি জিজ্ঞাসা করতে পারেন বা এটি বিগকুয়েরি সংযোগকারী ব্যবহার করে লুকার স্টুডিওতে ব্যবহার করতে পারেন।

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

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

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

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

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

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

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

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

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

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

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

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

সারাংশ

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

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

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

গুগল অ্যানালিটিক্স 4 টি বৈশিষ্ট্যগুলিতে কীভাবে ওয়েব ভাইটাল ডেটা প্রেরণ করবেন তা শিখুন এবং বিগকুয়ারি এবং লুকার স্টুডিওতে বিশ্লেষণের জন্য ডেটা রফতানি করুন।

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

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

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

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

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

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

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

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

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

পরিমাপ

কাস্টম মেট্রিকগুলি ব্যবহার করে গুগল অ্যানালিটিক্সের সাথে পরিমাপের পারফরম্যান্স সর্বদা সম্ভব ছিল, তবে গুগল অ্যানালিটিক্স 4 (জিএ 4) এ কয়েকটি নতুন বৈশিষ্ট্য রয়েছে যা বিশেষত বিকাশকারীদের সম্পর্কে উত্সাহিত হওয়া উচিত।

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

গুগল অ্যানালিটিক্স 4 এবং বিগকুয়ারি ব্যবহার করে কোর ওয়েব ভিটালগুলি পরিমাপ শুরু করতে আপনার তিনটি জিনিস করা দরকার:

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

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

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

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

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

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

ক্যোয়ারী ওয়েব ভাইটাল ডেটা

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

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

ওয়েব ভাইটাল ইভেন্টগুলির জন্য, প্রেরিত সর্বশেষ মানটি সর্বদা সর্বাধিক নির্ভুল, তাই কোনও বিশ্লেষণ করার আগে কেবল সেই মানগুলির জন্য ফিল্টার করা গুরুত্বপূর্ণ। গুগল অ্যানালিটিক্স 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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
)

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

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

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

পুরো সাইট জুড়ে 75% পার্সেন্টাইল (পি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

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

# 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

সবচেয়ে খারাপ সিএলএস সহ শীর্ষ 10 পৃষ্ঠাগুলি (পি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

ডিবাগ

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

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

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

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

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

শীর্ষ উপাদানগুলি সিএলএসে অবদান রাখে

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

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

নিম্নলিখিত ক্যোয়ারীটি 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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

শীর্ষ উপাদানগুলির জন্য ক্যোয়ারী ফলাফল সিএলএসে অবদান রাখে

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

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

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

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

WHERE metric_name = 'INP'
WHERE metric_name = '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 *, ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id') ORDER BY (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'metric_start_time') DESC
    ) = 1 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

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

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

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

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

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

বিগকোয়ারিতে লুকার স্টুডিও বিকল্পের সাথে অন্বেষণ করুন

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

লুকার স্টুডিওতে ডেইলি এলসিপি মানগুলির লাইন চার্ট

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

আপনি নেটিভ বিগকুয়ারি সংযোগকারী ব্যবহার করে লুকার স্টুডিওতে একটি ড্যাশবোর্ড তৈরি করতে পারেন। এটি করার জন্য, ডেটাস্টুডিও.গোগল.কম এ নেভিগেট করুন, একটি নতুন ডেটা উত্স তৈরি করুন, বিগকিউরি সংযোগকারী নির্বাচন করুন এবং আপনি যে ডেটাসেটটি নিয়ে কাজ করতে চান তা চয়ন করুন:

লুকার স্টুডিওতে বিগকিউরি নেটিভ সংযোগকারী ব্যবহার করে

ওয়েব ভাইটাল ডেটা মেটালাইজ করুন

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

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

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

# 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');

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

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

আপনি বিগকিউরি ইউআইয়ের মধ্যে থেকে সরাসরি এই বস্তুবাদী টেবিলটি জিজ্ঞাসা করতে পারেন বা এটি বিগকুয়েরি সংযোগকারী ব্যবহার করে লুকার স্টুডিওতে ব্যবহার করতে পারেন।

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

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

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

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

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

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

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

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

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

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

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

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

সারাংশ

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

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

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