Minhaz Kazi ، مدافع توسعهدهنده، Google Analytics – اکتبر 2022
اندازه گیری تعداد دقیق متمایز (یعنی کاردینالیته) برای مجموعه داده های بزرگ به حافظه قابل توجهی نیاز دارد و بر عملکرد تأثیر می گذارد. ویژگیهای Google Analytics 4 از الگوریتم HyperLogLog++ (HLL++) برای تخمین اصلی بودن بیشتر معیارهای مورد استفاده از جمله کاربران فعال و جلسات استفاده میکنند. به عنوان مثال، هنگام مشاهده Active Users در رابط کاربری Google Analytics و همچنین از طریق Data API ، شمارش تقریبی خواهد بود. استفاده از HLL++ برای این معیارها، عملکرد بهتر را با دقت تخمین بالاتر و محدوده خطای کمتر تضمین میکند. این بلاگ پست جزئیاتی در مورد نحوه استفاده از HLL++ در ویژگیهای Google Analytics 4 و اینکه چگونه میتوانید برخی از تخمینها را با استفاده از دادههای صادرات رویداد BigQuery تکرار کنید، ارائه میکند.
درباره HLL++
HLL++ با استفاده از حافظه کمتر و بهبود عملکرد، کاردینالیته را تخمین می زند . HLL++ دارای تقویتهایی است که بر روی الگوریتم HyperLogLog انجام شده است و مبتنی بر HyperLogLog در عمل است: مهندسی الگوریتمی یک الگوریتم برآورد کاردینالیتی پیشرفته . تغییرات در پارامتر precision HLL++ میزان استفاده از حافظه را با دقت آمار محاسبه شده کاهش می دهد. افزایش مقدار پارامتر خطا را کاهش می دهد، اما مصرف حافظه را افزایش می دهد.
پیاده سازی تعداد منحصر به فرد در BigQuery
- از
COUNT(DISTINCT)برای اندازه گیری دقیق کاردینالیته استفاده کنید. این رویکرد به حافظه بیشتری نیاز دارد و اجرای آن به خصوص برای مجموعه داده های بزرگ بیشتر طول می کشد. -
APPROX_COUNT_DISTINCTنتایج را با HLL++ تقریبی می کند. با این حال،APPROX_COUNT_DISTINCTبه کاربران اجازه نمی دهد دقت تقریبی را پیکربندی کنند. - برای استفاده از مقادیر
precisionسفارشی، از توابع HyperLogLog++ استفاده کنید. برای مقادیرprecisionمجاز و فواصل اطمینان برای دقت های معمولی به طرح های HLL++ مراجعه کنید. -
sparse precisionپارامتر دیگری برای HLL+ است. در BigQuery، مقدارsparse precisionقابل تعریف توسط کاربر نیست و باprecision + 5ثابت میشود.
پیاده سازی HLL++ در ویژگی های Google Analytics 4
Google Analytics 4 از پیکربندی زیر برای اندازهگیری اصلی بودن معیارهای مرتبط استفاده میکند.
| متریک | precision | sparse precision |
|---|---|---|
| جلسات | 12 | 17 |
| کاربران فعال | 14 | 25 |
| مجموع کاربران | 14 | 25 |
استفاده از توابع BigQuery HLL++ با دادههای رویداد 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_*`
و در نهایت، برای تکرار داده ها در رابط کاربری گوگل آنالیتیکس، از 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 User خارج از محدوده این مقاله است.
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++ و اینکه چرا محاسبه کاردینالیتی برای مجموعه دادههای بزرگ گران است، پست وبلاگ عمیق را در Cloud Blog بخوانید: استفاده از HLL++ برای سرعت بخشیدن به تعداد متمایز در مجموعه دادههای عظیم .