تقریب تعداد منحصر به فرد در Google Analytics

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