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++ برای سرعت بخشیدن به تعداد متمایز در مجموعه دادههای عظیم .