Google Analytics यूज़र इंटरफ़ेस (यूआई) और BigQuery Export के बीच के अंतर को कम करें

मिन्हाज़ काज़ी, डेवलपर एडवोकेट, Google Analytics – अप्रैल 2023


"लेकिन संख्याएं यूज़र इंटरफ़ेस (यूआई) से मेल क्यों नहीं खातीं?"

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

"इसके बारे में कहां बताया गया है?"

इस पोस्ट के ज़रिए, हम दोनों के बारे में बताने की कोशिश करेंगे.

आंकड़ों में बदलाव के बारे में जानने से पहले, यह समझना ज़रूरी है कि BigQuery इवेंट डेटा एक्सपोर्ट करने का मकसद क्या होता है. Google Analytics के उपयोगकर्ता, इकट्ठा किए गए डेटा को इनमें से किसी एक तरीके से GA को भेजते हैं - Google टैग, Google Tag Manager, मेज़रमेंट प्रोटोकॉल, SDK टूल, और डेटा इंपोर्ट. GA प्रॉपर्टी की सेटिंग के आधार पर, Google Analytics, इकट्ठा किए गए डेटा को स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म पर पहुंचने से पहले, उसमें काफ़ी वैल्यू जोड़ता है. इन प्लैटफ़ॉर्म में, स्टैंडर्ड रिपोर्ट, एक्सप्लोरेशन (विश्लेषण के तरीके), और Data API भी शामिल हैं. इन अतिरिक्त वैल्यू में Google सिग्नल, मॉडलिंग, ट्रैफ़िक एट्रिब्यूशन, अनुमान वगैरह को शामिल किया जा सकता है.

स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म का मकसद, GA के उपयोगकर्ताओं को कम से कम समस्याओं में ज़्यादा से ज़्यादा वैल्यू देना होता है. हालांकि, हमें पता है कि कई लोगों को लगता है कि कुछ उपयोगकर्ता, Google Analytics की मदद से अतिरिक्त वैल्यू बढ़ाना चाहते हैं या पूरी तरह से अपने मुताबिक बदलाव करना चाहते हैं. ऐसे उपयोगकर्ताओं के लिए, BigQuery इवेंट एक्सपोर्ट शुरुआत करना है. BigQuery इवेंट एक्सपोर्ट में इकट्ठा किया गया डेटा होगा, जो क्लाइंट या ऐप्लिकेशन से Google Analytics को भेजा जाता है. BigQuery इवेंट एक्सपोर्ट में, ऊपर बताई गई ज़्यादातर वैल्यू जोड़ने वाला डेटा शामिल नहीं होगा.

इसलिए, बड़ी संख्या में इस्तेमाल के उदाहरणों के लिए, स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म और BigQuery Export डेटा का वैल्यू बढ़ाने वाले इन हिस्सों के इकट्ठा किए जाने की उम्मीद नहीं होती. अगर दोनों में अंदरूनी समानता है और वे इकट्ठा की जा रही जानकारी से मेल खाते हैं, तो आपको आगे बढ़ना चाहिए.

आइए, अब इन अंतर की कुछ खास वजहों के बारे में जानते हैं और इन्हें कम करने के तरीक़ों के बारे में जानते हैं. इस पोस्ट में सिर्फ़ BigQuery के रोज़ के इवेंट एक्सपोर्ट के बारे में जानकारी दी गई है, न कि स्ट्रीमिंग एक्सपोर्ट के बारे में.

सैंपलिंग

स्टैंडर्ड रिपोर्ट, Data API रिपोर्ट या एक्सप्लोरेशन रिपोर्ट से अपने BigQuery Export डेटा की सटीक तुलना करने के लिए, पुष्टि करें कि वे सैंपल किए गए डेटा पर आधारित नहीं हैं. GA4 में डेटा सैंपलिंग से, सैंपलिंग से जुड़ी समस्याओं को हल करने के बारे में ज़्यादा जानकारी और तरीके मिलते हैं.

सक्रिय उपयोगकर्ता

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

तकनीकी तौर पर लागू करना

BigQuery इवेंट एक्सपोर्ट डेटा में, अगर अलग-अलग यूज़र आईडी की गिनती की जाती है, तो आपको कुल उपयोगकर्ताओं की संख्या मिलेगी. यहां एक सैंपल क्वेरी दी गई है, जिसमें user_pseudo_id के आधार पर कुल उपयोगकर्ता और नए उपयोगकर्ता, दोनों दिखते हैं:

-- Example: Get 'Total User' count and 'New User' count.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      MAX(IF(event_name IN ('first_visit', 'first_open'), 1, 0)) AS is_new_user
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
    GROUP BY 1
  )
SELECT
  COUNT(*) AS user_count,
  SUM(is_new_user) AS new_user_count
FROM UserInfo;

सिर्फ़ सक्रिय उपयोगकर्ताओं को चुनने के लिए, अपनी क्वेरी को उन इवेंट तक सीमित करें जिनमें is_active_user true है:

-- Example: Get exact and approximate Active User count.

WITH
  ActiveUsers AS (
    SELECT
      user_pseudo_id
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
      AND is_active_user
    GROUP BY 1
  )
SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_active_user_count,
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_active_user_count
FROM ActiveUsers;

हाइपरलॉग++

Google Analytics, सक्रिय उपयोगकर्ताओं और सेशन के साथ-साथ सामान्य मेट्रिक के लिए, एलिमेंट की संख्या का अनुमान लगाने के लिए, HyperLogLog++ (HLL++) एल्गोरिदम का इस्तेमाल करता है. इसका मतलब है कि जब यूज़र इंटरफ़ेस (यूआई) में या एपीआई के ज़रिए इन मेट्रिक की खास संख्या को देखा जाता है, तो वे एक खास सटीकता के साथ अनुमानित होती हैं. BigQuery में, आपके पास ज़्यादा जानकारी वाले डेटा का ऐक्सेस होता है. इसलिए, इन मेट्रिक के लिए एलिमेंट की संख्या का सटीक हिसाब लगाया जा सकता है. इसलिए, मेट्रिक में एक छोटे से प्रतिशत का अंतर हो सकता है. 95% कॉन्फ़िडेंस इंटरवल में, सेशन की गिनती के लिए सटीक वैल्यू ±1.63% हो सकती है. सटीक होने के लेवल, अलग-अलग मेट्रिक के लिए अलग-अलग होंगे और कॉन्फ़िडेंस इंटरवल के हिसाब से बदलेंगे. HLL++ के अलग-अलग सटीक पैरामीटर के लिए, अलग-अलग कॉन्फ़िडेंस इंटरवल पर सटीक लेवल के लिए, HLL++ स्केच देखें.

तकनीकी तौर पर लागू करना

Google Analytics में HLL++ को कैसे लागू किया गया है और BigQuery क्वेरी का इस्तेमाल करके इस फ़ंक्शन को कैसे दोहराया जा सकता है, यह समझने के लिए Google Analytics में यूनीक संख्या का अनुमान लेख पढ़ें.

डेटा इकट्ठा करने में देरी

जब GA दिन के सभी इवेंट इकट्ठा कर लेता है, तब रोज़ की एक्सपोर्ट टेबल बनाई जाती हैं. रोज़ की टेबल में तारीख और उसके बाद की टेबल को 72 घंटे तक अपडेट किया जा सकता है. इन टेबल को उन इवेंट के साथ अपडेट किया जाता है जिनके टाइम-स्टैंप पर टेबल की तारीख होती है. इसके बारे में जानकारी पढ़ें और उदाहरण देखें. यह समस्या तब ज़्यादा होती है, जब आपके Firebase SDK टूल या मेज़रमेंट प्रोटोकॉल को लागू करने पर, ऑफ़लाइन या देर से होने वाले इवेंट भेजे जाते हैं. इन 72 घंटों के अंदर, स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म और BigQuery को अपडेट होने के समय के आधार पर, आपको उनमें अंतर दिख सकता है. इस तरह से लागू करने के लिए, 72 घंटे से ज़्यादा पुराने डेटा की तुलना करनी चाहिए.

ज़्यादा एलिमेंट वाली रिपोर्ट

मान लें कि आपको कोई रिपोर्ट, स्टैंडर्ड रिपोर्ट या Data API से दिख रही है. इस रिपोर्ट में ज़्यादा डेटा दिखता है. साथ ही, इसमें ज़्यादा एलिमेंट की संख्या वाले डाइमेंशन होते हैं. ज़्यादा एलिमेंट वाले डाइमेंशन की वजह से, रिपोर्ट में मौजूद टेबल के लिए, एलिमेंट की संख्या की सीमा पार हो सकती है. ऐसा होने पर, Google Analytics कम इस्तेमाल होने वाली वैल्यू को ग्रुप करेगा और उन्हें (अन्य) के तौर पर लेबल करेगा.

आसान और छोटे स्केल के उदाहरण का इस्तेमाल करके, अगर बुनियादी टेबल के लिए एलिमेंट की संख्या की सीमा 10 लाइन है, तो आपको इतना ही दिख सकता है:

ग्राउंड-ट्रूथ डेटा बनाम अन्य पंक्ति के साथ एग्रीगेट टेबल का आसान उदाहरण

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

(अन्य) लाइन की यह ग्रुपिंग सिर्फ़ रिपोर्टिंग मॉड्यूल और Data API में तब होती है, जब रिपोर्ट में एलिमेंट की संख्या की सीमा पार हो जाती है. BigQuery से कैलकुलेशन करने पर, आपको हमेशा ज़मीनी डेटा मिलेगा. यह आपको सबसे ज़्यादा जानकारी वाली लाइन मिलेगी. (अन्य) लाइन और इसमें डेटा इकट्ठा होने से रोकने के सबसे सही तरीकों के बारे में ज़्यादा पढ़ें.

Google सिग्नल

अपनी GA4 प्रॉपर्टी पर Google सिग्नल चालू करने के कई फ़ायदे हैं. इनमें प्लैटफ़ॉर्म और डिवाइसों पर उपयोगकर्ताओं को डुप्लीकेट करना भी शामिल है. अगर यूज़र आईडी इकट्ठा नहीं की जाती है या 'Google सिग्नल' चालू नहीं किया जाता है और कोई व्यक्ति आपकी वेबसाइट को तीन अलग-अलग वेब ब्राउज़र पर देखता है, तो Google Analytics उस गतिविधि का क्रेडिट तीन अलग-अलग उपयोगकर्ताओं को एट्रिब्यूट करेगा. वहीं, BigQuery एक्सपोर्ट में तीन अलग-अलग user_pseudo_id होंगे. वहीं दूसरी ओर, 'Google सिग्नल' चालू होने और तीन ब्राउज़र में किसी व्यक्ति ने अपने एक ही Google खाते से लॉग इन किया है. इसके बाद, Google Analytics उस गतिविधि का एट्रिब्यूट एक उपयोगकर्ता को देता है और स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म पर उस गतिविधि की जानकारी दिखाता है. हालांकि, BigQuery अब भी तीन अलग-अलग user_pseudo_id दिखाएगा, क्योंकि BigQuery एक्सपोर्ट में Google सिग्नल की जानकारी उपलब्ध नहीं है. इसलिए, BigQuery एक्सपोर्ट की तुलना में, 'Google सिग्नल' डेटा वाली रिपोर्ट में उपयोगकर्ताओं की संख्या कम होगी.

इस इफ़ेक्ट को कम करने का सबसे अच्छा तरीका है कि आप अपनी GA4 प्रॉपर्टी में User-ID लागू करें. साथ ही, 'Google सिग्नल' को चालू करें. इससे यह पक्का होगा कि डुप्लीकेट कॉपी हटाने की प्रोसेस user_id के आधार पर सबसे पहले हो. साइन इन किए हुए उपयोगकर्ताओं के लिए, user_id फ़ील्ड की जानकारी BigQuery में अपने-आप भर जाएगी. इसका इस्तेमाल गिनती के लिए किया जा सकता है. हालांकि, साइन इन नहीं करने वाले उपयोगकर्ताओं (यानी कि बिना user_id वाले सेशन) के लिए, 'Google सिग्नल' का इस्तेमाल अब भी डुप्लीकेट कॉपी हटाने के लिए किया जाएगा.

यह भी ध्यान रखें कि स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म की कुछ रिपोर्ट पर थ्रेशोल्ड लागू की जा सकती है और इससे कुछ डेटा नहीं मिलता. ऐसी ज़्यादातर जानकारी जो थ्रेशोल्ड के हिसाब से हो सकती है, आम तौर पर BigQuery Export में उपलब्ध नहीं होती.

वेबसाइटों और मोबाइल ऐप्लिकेशन पर सहमति मोड की मदद से, उपयोगकर्ताओं की कुकी या ऐप्लिकेशन आइडेंटिफ़ायर से मिली सहमति की स्थिति के बारे में Google को जानकारी दी जा सकती है. जब वेबसाइट पर आने वाले लोग सहमति नहीं देते हैं, तब GA4 डेटा कलेक्शन गैप को मुख्य इवेंट मॉडलिंग और ग्राहक के व्यवहार के मॉडल से भरता है. BigQuery इवेंट एक्सपोर्ट में, मॉडल किया गया कोई भी डेटा उपलब्ध नहीं है. सहमति मोड लागू होने पर, BigQuery डेटासेट में बिना कुकी वाले ऐसे पिंग शामिल होंगे जिन्हें GA इकट्ठा करता है. साथ ही, हर सेशन में एक अलग user_pseudo_id होगा. मॉडल की वजह से, स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म और BigQuery में मौजूद ज़्यादा जानकारी वाले डेटा में अंतर होगा. उदाहरण के लिए, ग्राहक के व्यवहार का मॉडल बनाने की वजह से BigQuery एक्सपोर्ट की तुलना में आपको सक्रिय उपयोगकर्ताओं की संख्या कम दिख सकती है. इसकी वजह यह है कि मॉडलिंग की मदद से, बिना सहमति वाले अलग-अलग उपयोगकर्ताओं के कई सेशन का अनुमान लगाया जा सकता है.

इसके असर को कम करने के लिए, आपको अपनी GA4 प्रॉपर्टी में User-ID लागू करना होगा. user_id और कस्टम डाइमेंशन को BigQuery पर एक्सपोर्ट किया जाता है, भले ही आपके उपयोगकर्ताओं की सहमति की स्थिति कुछ भी हो.

ट्रैफ़िक एट्रिब्यूशन डेटा

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

कैलकुलेशन से जुड़ी सामान्य गड़बड़ियां

  • कैलकुलेशन का तरीका: BigQuery में अलग-अलग मेट्रिक को कैलकुलेट करते समय, पक्का करें कि आपने सही तरीके का इस्तेमाल किया हो. उदाहरण के लिए:
    • Google Analytics 4 प्रॉपर्टी के लिए सेशन की गिनती करने का स्टैंडर्ड तरीका, user_pseudo_id/user_id और ga_session_id के यूनीक कॉम्बिनेशन की गिनती करना है, भले ही आपकी समय सीमा कुछ भी हो. Universal Analytics में, सेशन आधी रात को रीसेट होंगे. अगर UA मॉडल को फ़ॉलो किया जाता है, हर दिन के सेशन का हिसाब लगाया जाता है, और सेशन की कुल संख्या पाने के लिए उन्हें जोड़ा जाता है, तो आपको कई दिनों तक चलने वाले सेशन की दो बार गिनती करनी होगी.
    • आपकी चुनी गई रिपोर्टिंग आइडेंटिटी के आधार पर, उपयोगकर्ता की संख्या गिनने के तरीके को अपडेट करना होगा.
  • डाइमेंशन और मेट्रिक का स्कोप: पक्का करें कि आपके कैलकुलेशन में सही उपयोगकर्ता, सेशन, आइटम या इवेंट लेवल के स्कोप का इस्तेमाल किया गया हो.
  • टाइम ज़ोन: BigQuery एक्सपोर्ट में, event_date, रिपोर्टिंग टाइम ज़ोन के लिए होता है. वहीं, event_timestamp माइक्रोसेकंड में यूटीसी टाइमस्टैंप होता है. आम तौर पर, अगर कोई क्वेरी में event_timestamp का इस्तेमाल करता है, तो यूज़र इंटरफ़ेस (यूआई) नंबर से तुलना करते समय, इसे रिपोर्टिंग के सही टाइम ज़ोन के हिसाब से अडजस्ट करना चाहिए.
  • डेटा फ़िल्टर करने और एक्सपोर्ट करने की सीमाएं: अगर आपने BigQuery इवेंट एक्सपोर्ट के लिए डेटा फ़िल्टर करने की सुविधा सेटअप की है या डेली इवेंट एक्सपोर्ट की संख्या तय सीमा से ज़्यादा हो गई है, तो BigQuery इवेंट एक्सपोर्ट डेटा, स्टैंडर्ड रिपोर्टिंग प्लैटफ़ॉर्म से मैच नहीं होगा.

इन बातों को ध्यान में रखते हुए, इस पोस्ट में अधूरी जानकारी है. उम्मीद है कि आप यहां दिए गए दिशा-निर्देशों से, अपने DISTINCT प्रोजेक्ट के लिए सही समाधान चुन पाएंगे. अगर आपका कोई सवाल है, तो GA Discord सर्वर में शामिल हों. यहां क्वेरी का सबसे ज़्यादा स्वागत है!