הערכת ספירה ייחודית ב-Google Analytics

Minhaz Kazi, יועץ למפתחים, Google Analytics – אוקטובר 2022

כדי למדוד ספירות ייחודיות מדויקות (כלומר עוצמה) של מערכי נתונים גדולים, זיכרון משמעותי ומשפיע על הביצועים. נעשה שימוש בנכסי Google Analytics 4 אלגוריתם HyperLogLog++ (HLL++ ) כדי להעריך את העוצמה של המדדים הנפוצים ביותר כולל משתמשים פעילים וסשנים. לדוגמה, בהצגת פעיל משתמשים בממשק המשתמש של Google Analytics וגם דרך Data API, הספירה יהיה הערכה. השימוש ב-HLL++ למדדים האלה מבטיח עם הערכה גבוהה יותר וגבולות שגיאה נמוכים יותר. הזה בפוסט בבלוג מוסבר איך משתמשים ב-HLL++ בנכסי Google Analytics 4 ואיך אפשר לשכפל חלק מהאומדנים באמצעות ייצוא אירועים ב-BigQuery .

מידע על HLL++

HLL++ הערכה של העוצמה (cardinality) תוך שימוש בפחות זיכרון ושיפור הביצועים. הפונקציה HLL++ כוללת הרחבה באמצעות אלגוריתם HyperLogLog, ומבוססת על HyperLogLog in Practice: הנדסה אלגוריתמית ברמה גבוהה ביותר אלגוריתם להערכת העוצמה (cardinality). שינויים בפרמטר HLL++ precision מצמצמים את השימוש בזיכרון לעומת הדיוק של הנתונים הסטטיסטיים שמחושבים. הגדלת ערך הפרמטר מקטין את השגיאה, אבל מגדיל את צריכת הזיכרון.

הטמעת ספירה ייחודית ב-BigQuery

  • משתמשים בפונקציה COUNT(DISTINCT) כדי למדוד את העוצמה המדויקת. בשיטה הזו צריך יותר זיכרון ומשך ההרצה שלו יהיה ארוך יותר, במיוחד במערכי נתונים גדולים.
  • APPROX_COUNT_DISTINCT מעריך את התוצאות עם HLL++. אבל, לפעמים APPROX_COUNT_DISTINCT לא מאפשר למשתמשים להגדיר מדויקות.
  • כדי להשתמש בערכים מותאמים אישית של precision, צריך להשתמש בפונקציות HyperLogLog++. צפייה HLL++ שרטוטים לערכי precision מותרים ולרמת סמך מרווחי זמן של דיוקים טיפוסיים.
  • sparse precision הוא פרמטר נוסף בשביל HLL+. ב-BigQuery, לא ניתן להגדיר את הערך sparse precision על ידי המשתמש, והוא קבוע ב-precision + 5.

הטמעת HLL++ בנכסי Google Analytics 4

מערכת Google Analytics 4 משתמשת בהגדרה הבאה למדידת העוצמה של את המדדים הקשורים.

מדד precision sparse precision
סשנים 12 17
משתמשים פעילים 14 25
סה"כ משתמשים 14 25

שימוש בפונקציות מסוג HLL++ ב-BigQuery עם נתוני אירועים ב-Google Analytics

אם נתוני האירועים של נכס Google Analytics 4 זמינים ב-BigQuery, יכול לנסות להתאים את המדדים מממשק המשתמש לנתונים של BigQuery. הדוגמאות הבאות מניחים:

  • מזהה הדיווח ב-Google Analytics 4 מוגדר כ-By device only לנכס.
  • מקורות פוטנציאליים אחרים לפערים, למשל של אזור הזמן לדיווח, כבר טופל.

סה"כ משתמשים

ספירה מדויקת באמצעות COUNT(DISTINCT):

SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

ספירה משוערת באמצעות APPROX_COUNT_DISTINCT:

SELECT
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

אפשר לשכפל את APPROX_COUNT_DISTINCT באמצעות פונקציות של BigQuery HLL++. הזה יחזיר את התוצאות הזהות או הדומות מאוד כמו APPROX_COUNT_DISTINCT:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 15)) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

לבסוף, כדי לשכפל את הנתונים בממשק המשתמש של Google Analytics, משתמשים ב-precision = 14:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

משתמשים פעילים

כדי לחשב את מספר המשתמשים הפעילים מטבלת ייצוא האירועים ב-BigQuery, קודם צריך לסנן את האירועים לפי משתמשים פעילים בלבד. יישום הפעילים (Active) המסנן 'משתמשים' לא נכלל במאמר הזה.

WITH ActiveUsers AS
(
  SELECT
    user_pseudo_id
  FROM
    `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE
  <implement active user filter logic>
)
SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS active_user_count,
FROM ActiveUsers

ביקורים

פרמטר האירוע ga_session_id מזהה סשנים ייחודיים נפרדים של לכל משתמש. השילוב של user_pseudo_id עם ga_session_id יהיה ייחודיים בכל מערך הנתונים לסשנים ייחודיים. זו השיטה הרגילה סופר סשנים בנכסי Google Analytics 4. לסשנים, precision הוא 12.

SELECT
  HLL_COUNT.EXTRACT(
    HLL_COUNT.INIT(
      CONCAT(
        user_pseudo_id,
        (SELECT `value` FROM UNNEST(event_params) WHERE key = 'ga_session_id' LIMIT 1).int_value),
      12)) AS session_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

אפשר להשתמש בשאילתות בפוסט הזה בבלוג עם האפשרות שאילתות בסיסיות דוגמאות לשאילתות מתקדמות כדי לקבל תובנות נוספות מאירוע ב-BigQuery לייצא נתונים של נכסי Google Analytics 4. אם הנכס מייצר כמות משמעותית של נתוני אירועים, אפשר גם להטמיע את הפונקציות HLL++ כדי הערכת העוצמה של מדדים אחרים שבהם אתם משתמשים בדרך כלל ב-BigQuery שאילתות. אפשר לקרוא מידע נוסף על HLL++ ולמה חישוב העוצמה (cardinality) יקר בנושא מערכי נתונים גדולים, תוכלו לקרוא את הפוסט המעמיק בבלוג ב-Cloud Blog: שימוש ב- HLL++ כדי להאיץ את הספירה הייחודית במערכי נתונים עצומים.