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++ כדי להאיץ את הספירה הייחודית במערכי נתונים עצומים.