Google Analytics 4 और BigQuery की मदद से परफ़ॉर्मेंस को मेज़र और डीबग करना

Google Analytics 4 प्रॉपर्टी को वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाला डेटा भेजने और विश्लेषण के लिए डेटा को BigQuery और Looker Studio में एक्सपोर्ट करने का तरीका जानें.

Google कई टूल उपलब्ध कराता है. जैसे, Search Console, PageSpeed Insights (PSI), और Chrome User Experience रिपोर्ट (CrUX)—इसकी मदद से डेवलपर यह देख सकते हैं कि फ़ील्ड के असल उपयोगकर्ताओं के लिए, उनकी साइटें Core Web Vital मेट्रिक की तुलना में कैसा परफ़ॉर्म कर रही हैं.

इन टूल की मदद से आपको अपनी साइट के असल उपयोगकर्ताओं की परफ़ॉर्मेंस के बारे में बेहतर जानकारी मिलती है. साथ ही, इनका इस्तेमाल शुरू करने के लिए सेटअप की ज़रूरत नहीं होती.

हालांकि, आपकी साइट की परफ़ॉर्मेंस को मापने के लिए, आपको इन टूल पर निर्भर न रहने की कुछ वजहें यहां दी गई हैं:

  • CrUX पर आधारित टूल, महीने या पिछले 28 दिनों के डेटा की रिपोर्ट देते हैं. इसका मतलब है कि कोई भी बदलाव करने के बाद नतीजे देखने के लिए, आपको लंबे समय तक इंतज़ार करना होगा.
  • CrUX-आधारित टूल को सिर्फ़ सीमित संख्या के डाइमेंशन के आधार पर सेगमेंट में बांटा जा सकता है. जैसे, देश, कनेक्शन का टाइप, और डिवाइस की कैटगरी (डेस्कटॉप या मोबाइल). अपने कारोबार के हिसाब से, डेटा को डाइमेंशन के हिसाब से बांटा नहीं जा सकता. उदाहरण के लिए: जुड़ाव रखने वाले उपयोगकर्ता, किसी खास एक्सपेरिमेंट ग्रुप के उपयोगकर्ता वगैरह.
  • CrUX पर आधारित टूल से आपको यह पता चल सकता है कि आपकी परफ़ॉर्मेंस क्या है, लेकिन वे आपको क्यों नहीं बता सकते. आंकड़ों से जुड़े टूल की मदद से अतिरिक्त डेटा भेजा जा सकता है. इससे, आपको समस्याओं को ट्रैक करने और डीबग करने में मदद मिलती है.

इन वजहों से, हमारा सुझाव है कि सभी साइट मालिक अपने मौजूदा Analytics टूल का इस्तेमाल करके, अपनी वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने वाली मेट्रिक पर नज़र रखें. इस पोस्ट में बताया गया है कि ऐसा करने के लिए, Google के मुफ़्त टूल का इस्तेमाल कैसे किया जा सकता है.

सब कुछ सेट अप करने के बाद, आप इस तरह के डैशबोर्ड बना सकेंगे:

वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले कनेक्टर की रिपोर्ट का स्क्रीनशॉट

वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले कनेक्टर की रिपोर्ट का स्क्रीनशॉट

अगर आपको यहां बताए गए सभी चरणों की विज़ुअल तौर पर खास जानकारी चाहिए, तो Google I/O '21 की हमारी बातचीत देखें:

दूरी मापें

Google Analytics में, कस्टम मेट्रिक का इस्तेमाल करके परफ़ॉर्मेंस को मेज़र करना हमेशा से मुमकिन रहा है. हालांकि, Google Analytics 4 (GA4) में कुछ ऐसी नई सुविधाएं हैं जिनके बारे में खास तौर पर डेवलपर को जानना चाहिए.

  • शून्य-कॉन्फ़िगरेशन, कस्टम इवेंट पैरामीटर
  • मुफ़्त BigQuery Export, ताकि आप SQL का इस्तेमाल करके अपने डेटा के लिए क्वेरी कर सकें

हालांकि Google Analytics वेब इंटरफ़ेस में शक्तिशाली विश्लेषण टूल मौजूद हैं, फिर भी किसी ऐसी क्वेरी भाषा का इस्तेमाल करके जिस जिसके बारे में आप पहले से जानते हैं, रॉ इवेंट डेटा ऐक्सेस करने की सुविधा और ज़रूरत के हिसाब से काफ़ी करना मुश्किल है.

Google Analytics 4 और BigQuery का इस्तेमाल करके, वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने वाली मेट्रिक मेज़र करने के लिए, आपको तीन काम करने होंगे:

  1. Google Analytics 4 प्रॉपर्टी और BigQuery प्रोजेक्ट बनाएं.
  2. अपनी Google Analytics प्रॉपर्टी कॉन्फ़िगरेशन में, BigQuery Export की सुविधा चालू करें. इससे आपको मिलने वाला पूरा डेटा, आपके BigQuery प्रोजेक्ट की टेबल में अपने-आप भर जाएगा.
  3. अपनी साइट में वेब-वाइटल JavaScript लाइब्रेरी जोड़ें, ताकि आप वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने वाली मेट्रिक मेज़र कर सकें और Google Analytics 4 को डेटा भेज सकें.

आंकड़े देखें

सेट अप पूरा होने के बाद, आपको BigQuery इंटरफ़ेस में अपने-आप इकट्ठा होने वाला इवेंट डेटा दिखेगा. साथ ही, आपको इस तरह से डेटा से क्वेरी करने की सुविधा मिलेगी:

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

यहां उस क्वेरी के नतीजों की झलक दी गई है:

BigQuery में, वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाला इवेंट डेटा

वेबसाइट की परफ़ॉर्मेंस की जानकारी का डेटा

वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले इवेंट डेटा के लिए क्वेरी करने से पहले, यह समझना ज़रूरी है कि डेटा कैसे एग्रीगेट किया जाता है.

समझना ज़रूरी है कि कुछ मामलों में, एक ही पेज पर एक ही मेट्रिक के लिए कई इवेंट मिल सकते हैं. ऐसा तब हो सकता है, जब मेट्रिक की वैल्यू में बदलाव हो और अपडेट की गई वैल्यू रिपोर्ट की गई हो. आम तौर पर, सीएलएस में ऐसा होता है.

वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले इवेंट के लिए, आखिर में भेजी गई वैल्यू हमेशा सबसे सटीक होती है. इसलिए, कोई भी विश्लेषण करने से पहले, सिर्फ़ उन वैल्यू को फ़िल्टर करना ज़रूरी है. Google Analytics 4 को डेटा भेजने के लिए वेब-वाइटल JavaScript लाइब्रेरी से मिलने वाले कोड स्निपेट में, हर मेट्रिक के लिए एक यूनीक आईडी भेजना शामिल है. ऐसा इसलिए, ताकि नीचे दी गई क्वेरी का इस्तेमाल करके, अपने नतीजों को सिर्फ़ हर मेट्रिक आईडी के लिए आखिरी बार मिलने वाली वैल्यू तक सीमित किया जा सके:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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% पर्सेंटाइल (p75) के हिसाब से एलसीपी, एफ़आईडी, और सीएलएस

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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 *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
FROM web_vitals_events
WHERE metric_name = 'LCP'
ORDER BY metric_value DESC
# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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 पेज (p75)

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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

डीबग

ऊपर दी गई क्वेरी से पता चलता है कि वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाली मेट्रिक के डेटा को कैसे क्वेरी किया जाए. इससे आपकी मौजूदा परफ़ॉर्मेंस और समय के साथ इसमें हो रहे बदलावों को समझने में मदद मिलती है. हालांकि, अगर आपकी परफ़ॉर्मेंस उम्मीद से खराब है, लेकिन आपको इसकी वजह नहीं पता, तो क्या करना चाहिए?

अगर आप कोई कार्रवाई नहीं कर सकते और समस्याओं को ठीक नहीं कर पा रहे हैं, तो कौनसे स्कोर को जानना आपके लिए मददगार नहीं होगा.

फ़ील्ड में परफ़ॉर्मेंस डीबग करें बताता है कि अपने Analytics डेटा के साथ ज़्यादा डीबग जानकारी कैसे भेजी जा सकती है. अगर आपने उस पोस्ट में दिए गए निर्देशों का पालन किया है, तो आपको BigQuery में भी डीबग करने की जानकारी दिखेगी.

नीचे दी गई क्वेरी, 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 *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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 = 'CLS'
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 *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'FID', '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

क्वेरी के इन नतीजों से, सिर्फ़ डेटा को देखकर रुझानों या आउटलायर की पहचान करना मुश्किल होता है.

हर दिन की मेट्रिक वैल्यू से जुड़ी क्वेरी के नतीजे

ऐसे मामलों में, डेटा को विज़ुअलाइज़ करने से आपको ज़्यादा तेज़ी से अहम जानकारी पाने में मदद मिल सकती है.

Looker Studio में क्वेरी के नतीजों को विज़ुअलाइज़ करना

BigQuery की मदद से, Data Studio की मदद से किसी भी क्वेरी के नतीजों को तुरंत विज़ुअलाइज़ किया जा सकता है. Looker Studio एक डेटा विज़ुअलाइज़ेशन और डैशबोर्डिंग टूल है. इसे बिना किसी शुल्क के इस्तेमाल किया जा सकता है. BigQuery यूज़र इंटरफ़ेस (यूआई) में अपनी क्वेरी चलाने के बाद, अपनी क्वेरी के नतीजों को विज़ुअलाइज़ करने के लिए, डेटा एक्सप्लोर करें बटन पर क्लिक करें और Looker Studio के साथ एक्सप्लोर करें चुनें.

BigQuery में Looker Studio के विकल्प की मदद से एक्सप्लोर करें

इससे एक्सप्लोर व्यू में, BigQuery से Looker Studio में डायरेक्ट लिंक बन जाएगा. इस व्यू में, आपके पास उन फ़ील्ड को चुनने का विकल्प है जिन्हें आपको विज़ुअलाइज़ करना है. साथ ही, चार्ट के टाइप, फ़िल्टर सेटअप करें, और ऐड-हॉक चार्ट बनाकर भी तेज़ी से विज़ुअल विश्लेषण किया जा सकता है. ऊपर दिए गए क्वेरी के नतीजों से, समय के साथ एलसीपी वैल्यू का रुझान देखने के लिए यह लाइन चार्ट बनाया जा सकता है:

Looker Studio में रोज़ की एलसीपी वैल्यू का लाइन चार्ट

BigQuery और Looker Studio के बीच इस सीधे लिंक की मदद से, अपनी किसी भी क्वेरी से क्विक चार्ट बनाए जा सकते हैं और विज़ुअल विश्लेषण किया जा सकता है. हालांकि, अगर आपको अतिरिक्त विश्लेषण करना है, तो हो सकता है कि आप पूरी जानकारी पाने या डेटा में ड्रिल-डाउन करने के लिए, इंटरैक्टिव डैशबोर्ड में कई चार्ट देखना चाहें. एक आसान डैशबोर्ड होने का मतलब है कि आपको हर बार अपनी मेट्रिक का विश्लेषण करने के लिए क्वेरी लिखने और मैन्युअल रूप से चार्ट जनरेट करने की ज़रूरत नहीं है.

नेटिव BigQuery कनेक्टर का इस्तेमाल करके, Looker Studio में डैशबोर्ड बनाया जा सकता है. ऐसा करने के लिए, datastudio.google.com पर जाएं. एक नया डेटा सोर्स बनाएं, BigQuery कनेक्टर चुनें, और वह डेटासेट चुनें जिस पर आपको काम करना है:

Looker Studio में BigQuery के नेटिव कनेक्टर का इस्तेमाल करना

वेबसाइट की परफ़ॉर्मेंस की जानकारी का डेटा इस्तेमाल करें

ऊपर बताए गए तरीके से वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले इवेंट डेटा का डैशबोर्ड बनाते समय, सीधे Google Analytics 4 एक्सपोर्ट डेटासेट का इस्तेमाल नहीं किया जा सकता. GA4 डेटा के स्ट्रक्चर और वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाली मेट्रिक के लिए प्री-प्रोसेसिंग ज़रूरी होने की वजह से, आपकी क्वेरी के कुछ हिस्से कई बार ट्रिगर होंगे. इससे दो समस्याएं होती हैं: डैशबोर्ड की परफ़ॉर्मेंस और BigQuery की लागत.

बिना किसी शुल्क के BigQuery सैंडबॉक्स मोड का इस्तेमाल करें. BigQuery के मुफ़्त इस्तेमाल के टीयर की मदद से, हर महीने प्रोसेस किया जाने वाला पहला 1 टीबी क्वेरी डेटा मुफ़्त होता है. इस पोस्ट में बताए गए विश्लेषण के तरीकों के लिए, अगर बहुत बड़े डेटासेट का इस्तेमाल नहीं किया जा रहा है या डेटासेट के बारे में नियमित तौर पर बहुत ज़्यादा क्वेरी की जा रही है, तो आपको हर महीने इस मुफ़्त सीमा के अंदर रहना होगा. हालांकि, अगर आपके पास ज़्यादा ट्रैफ़िक वाली वेबसाइट है और आपको तेज़ इंटरैक्टिव डैशबोर्ड से अलग-अलग मेट्रिक की नियमित तौर पर निगरानी करनी है, तो हमारा सुझाव है कि आप वेब वाइटल डेटा को प्री-प्रोसेस और मटीरियल बनाएं. साथ ही, पार्टिशनिंग, क्लस्टरिंग, और कैश मेमोरी जैसी BigQuery की दक्षता वाली सुविधाओं का इस्तेमाल करें.

यह स्क्रिप्ट आपके 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', 'FID', '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 के ओरिजनल डेटासेट से सिर्फ़ वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले इवेंट शामिल होते हैं.
  • सेशन आईडी, उपयोगकर्ता टाइप (नए बनाम लौटने वाले), और सेशन से जुड़ाव की जानकारी सीधे कॉलम में उपलब्ध होती है.
  • टेबल को तारीख के हिसाब से partitioned किया जाता है और मेट्रिक के नाम के हिसाब से क्लस्टर किया जाता है. आम तौर पर, इससे हर क्वेरी के लिए प्रोसेस किए गए डेटा की मात्रा कम हो जाती है.
  • इस टेबल पर क्वेरी करने के लिए आपको वाइल्डकार्ड का इस्तेमाल करने की ज़रूरत नहीं है. इसलिए, क्वेरी के नतीजे 24 घंटे तक कैश मेमोरी में सेव किए जा सकते हैं. इससे एक ही क्वेरी को दोहराने से होने वाला खर्च कम हो जाता है.
  • BigQuery बीआई इंजन का इस्तेमाल करने पर, इस टेबल पर ऑप्टिमाइज़ किए गए एसक्यूएल फ़ंक्शन और ऑपरेटर चलाए जा सकते हैं.

BigQuery यूज़र इंटरफ़ेस (यूआई) में से इस मटीरियलाइज़्ड टेबल के लिए सीधे क्वेरी की जा सकती है या BigQuery कनेक्टर का इस्तेमाल करके Looker Studio में इसका इस्तेमाल किया जा सकता है.

वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले कनेक्टर का इस्तेमाल करना

शुरुआत से डैशबोर्ड बनाने में बहुत समय लगता है, इसलिए हमने एक पैकेज तैयार किया है, जिससे आपके लिए एक टेंप्लेट डैशबोर्ड बन जाएगा. सबसे पहले यह देख लें कि आपने ऊपर दी गई क्वेरी का इस्तेमाल करके, अपनी वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाली टेबल का कॉन्टेंट तैयार किया हो. इसके बाद, इस लिंक का इस्तेमाल करके Looker Studio के लिए, वेबसाइट की परफ़ॉर्मेंस की जानकारी देने वाले कनेक्टर को ऐक्सेस करें: goo.gle/web-vitals-connector

एक बार की अनुमति देने के बाद, आपको यह कॉन्फ़िगरेशन स्क्रीन दिखेगी:

'वेब वाइटल कनेक्टर' के लिए अनुमति देने वाली स्क्रीन

अपना BigQuery टेबल आईडी (यानी टारगेट टेबल) और अपना BigQuery बिलिंग प्रोजेक्ट आईडी दें. 'कनेक्ट करें' पर क्लिक करने के बाद, Looker Studio टेंप्लेट वाला नया डैशबोर्ड बनाएगा और आपके डेटा को उसके साथ जोड़ेगा. डैशबोर्ड में अपने हिसाब से बदलाव किए जा सकते हैं. साथ ही, उसे शेयर भी किया जा सकता है. अगर एक बार डैशबोर्ड बनाया जाता है, तो आपको कनेक्टर लिंक पर दोबारा जाने की ज़रूरत नहीं है. हालांकि, अलग-अलग डेटासेट से कई डैशबोर्ड बनाने के लिए इसका इस्तेमाल किया जा सकता है.

डैशबोर्ड पर नेविगेट करने पर, खास जानकारी टैब में, वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने वाली मेट्रिक के रोज़ के रुझान देखे जा सकते हैं. साथ ही, वेबसाइट के इस्तेमाल से जुड़ी कुछ जानकारी भी देखी जा सकती है. जैसे, उपयोगकर्ता और सेशन.

उपयोगकर्ता विश्लेषण टैब में, कोई मेट्रिक चुनकर, मेट्रिक पर्सेंटाइल का ब्यौरा देखा जा सकता है. साथ ही, इस्तेमाल और कारोबार की अलग-अलग मेट्रिक के हिसाब से उपयोगकर्ताओं की संख्या देखी जा सकती है.

पेज के पाथ का विश्लेषण टैब की मदद से, अपनी वेबसाइट पर मौजूद समस्या वाले हिस्सों की पहचान की जा सकती है. खास जानकारी देखने के लिए, यहां कोई मेट्रिक चुनी जा सकती है. हालांकि, आपको उन सभी पेज पाथ का स्कैटर-मैप भी दिखेगा जिनमें y ऐक्सिस पर पर्सेंटाइल वैल्यू और x ऐक्सिस पर रिकॉर्ड काउंट है. स्कैटर मैप से उन पेजों को पहचानने में मदद मिल सकती है जिनकी मेट्रिक वैल्यू उम्मीद से कम है. पेज पाथ टेबल के स्कैटर चार्ट का इस्तेमाल करके पेज चुनने के बाद, डीबग टारगेट टेबल देखकर समस्या वाले एरिया को और ड्रिल-डाउन किया जा सकता है.

रेवेन्यू का विश्लेषण टैब एक उदाहरण है कि एक ही जगह पर अपने कारोबार और परफ़ॉर्मेंस मेट्रिक की निगरानी कैसे की जा सकती है. इस सेक्शन में वे सभी सेशन शामिल किए गए हैं जिनमें उपयोगकर्ता ने खरीदारी की है. किसी खास सेशन के दौरान हुई आय और उपयोगकर्ता अनुभव की तुलना की जा सकती है .

बेहतर इस्तेमाल के लिए

जैसे-जैसे आप डेटासेट के बारे में बेहतर ढंग से जानते जाएंगे, वैसे-वैसे डैशबोर्ड में बदलाव किया जा सकता है. साथ ही, बेहतर और टारगेटेड विश्लेषण के लिए, खुद के चार्ट जोड़े जा सकते हैं. डैशबोर्ड को ज़्यादा काम का बनाने के लिए, यह तरीका अपनाएं:

  • अपडेट किया गया डेटा पाने के लिए, BigQuery में शेड्यूल की गई क्वेरी सेटअप करें. हमने ऊपर जो मटीरियलाइज़ेशन क्वेरी चलाई थी, वह उस समय आपके डेटा का सिर्फ़ स्नैपशॉट लेती है. अगर आपको अपने डैशबोर्ड को नए डेटा से अपडेट रखना है, तो शेड्यूल की गई एक क्वेरी चलाई जा सकती है.
  • कारोबार की अहम जानकारी के लिए, पहले पक्ष (ग्राहक) का डेटा (जैसे, सीआरएम) जोड़ें. मटीरियलाइज़्ड टेबल में, user_id को एक अलग कॉलम के तौर पर जोड़ा जा सकता है. इससे, पहले पक्ष (ग्राहक) के अपने डेटा को जोड़ा जा सकेगा. अगर पहले पक्ष (ग्राहक) का डेटा पहले से BigQuery में नहीं है, तो डेटा लोड करें या फ़ेडरेटेड डेटा सोर्स का इस्तेमाल करें.
  • Google Analytics को भेजे जाने वाले डेटा में, अपनी साइट या ऐप्लिकेशन के वर्शन को पैरामीटर के तौर पर रिपोर्ट करें और उसे मटीरियलाइज़्ड टेबल में कॉलम के तौर पर जोड़ें. इसके बाद, उस वर्शन डेटा को अपने चार्ट में डाइमेंशन के तौर पर जोड़ा जा सकता है. इससे यह देखने में आसानी होती है कि वर्शन में हुए बदलाव, परफ़ॉर्मेंस पर असर डालते हैं.
  • अगर आपको लगता है कि सीधे क्वेरी या डैशबोर्ड से डेटासेट का बहुत ज़्यादा इस्तेमाल किया जा रहा है, तो BigQuery बीआई इंजन के पैसे चुकाकर लिए गए वर्शन का इस्तेमाल किया जा सकता है.

खास जानकारी

इस पोस्ट में, फ़ील्ड में इकट्ठा किए गए असल उपयोगकर्ता के डेटा की मदद से परफ़ॉर्मेंस को मापने और उसे डीबग करने के लिए, Google Analytics 4 और BigQuery को इस्तेमाल करने के तरीके की बुनियादी जानकारी दी गई है. इसमें Looker Studio और वेब वाइटल कनेक्टर का इस्तेमाल करके, ऑटोमेटेड रिपोर्ट और डैशबोर्ड बनाने का तरीका भी बताया गया है, ताकि डेटा को आसानी से विज़ुअलाइज़ किया जा सके.

इस पोस्ट से जुड़ी कुछ खास बातें:

  • अपनी साइट को समझने, डीबग करने, और ऑप्टिमाइज़ करने के लिए, उपयोगकर्ता के असल डेटा की मदद से परफ़ॉर्मेंस को मेज़र करना ज़रूरी है.
  • जब आपकी परफ़ॉर्मेंस मेट्रिक और कारोबार से जुड़ी मेट्रिक एक ही सिस्टम में होती हैं, तब आपको ज़्यादा अहम जानकारी मिल सकती है. Google Analytics और BigQuery की मदद से यह काम किया जा सकता है.
  • Google Analytics का रॉ डेटा एक्सपोर्ट करने की सुविधा की मदद से, ऐसी क्वेरी भाषा का इस्तेमाल करके बेहतर और कस्टम विश्लेषण किया जा सकता है जिसे आपको शायद पहले से पता हो.
  • Google के पास Looker Studio जैसे कई एपीआई और विज़ुअलाइज़ेशन टूल हैं. इनकी मदद से, अपनी रिपोर्ट को अपनी पसंद के हिसाब से बनाया जा सकता है.