تقدير العدد الفريد في "إحصاءات Google"

مينهاز كازي، مسؤول علاقات المطوّرين، "إحصاءات Google" – تشرين الأول (أكتوبر) 2022

إنّ قياس الأعداد الفريدة الدقيقة (أي عدد القيم الفريدة للسمة) لمجموعات البيانات الكبيرة يتطلّب ذاكرة كبيرة ويؤثر في الأداء. تستخدم مواقع "إحصاءات Google 4" خوارزمية HyperLog++ (HLL++ ) لتقدير عدد القيم الفريدة للسمة الأكثر استخدامًا، بما في ذلك المستخدمون النشطون والجلسات. على سبيل المثال، عند عرض المستخدمون النشطون في واجهة مستخدم "إحصاءات Google" وكذلك من خلال واجهة برمجة التطبيقات للبيانات، سيكون العدد تقريبيًا. يضمن استخدام +HLL+ لهذه المقاييس أداءً أفضل مع دقة أعلى في التقدير وحدود الخطأ أقل. تقدِّم مشاركة المدونة هذه تفاصيل عن كيفية استخدام +HLL++ في مواقع "إحصاءات Google 4" وكيفية تكرار بعض التقديرات باستخدام بيانات تصدير أحداث BigQuery.

لمحة عن HLL++

يقدّر عدد القيم الفريدة للسمة في +HLL++ مع استخدام ذاكرة أقل وتحسين الأداء. تمت إضافة تعزيزات من HLL++ باستخدام خوارزمية HyperLogLog المتوفّرة استنادًا إلى HyperLog in Practice: الهندسة الخوارزمية لإحدى أحدث خوارزميات تقدير عدد القيم الفريدة للسمة. إنّ التغييرات في المَعلمة HLL++ precision قد تتعارض مع استخدام الذاكرة مقارنةً بدقة الإحصاءات المحسوبة. تؤدي زيادة قيمة المعلمة إلى تقليل الخطأ، ولكنها تزيد من استهلاك الذاكرة.

تنفيذ العد الفريد في BigQuery

  • استخدِم COUNT(DISTINCT) لقياس عدد القيم الفريدة للسمة بالضبط. يتطلب هذا النهج المزيد من الذاكرة وسيستغرق وقتًا أطول للتشغيل، خاصة مع مجموعات البيانات الكبيرة.
  • تعمل أداة APPROX_COUNT_DISTINCT على تقريب النتائج باستخدام +HLL+. ومع ذلك، لا تسمح السمة APPROX_COUNT_DISTINCT للمستخدمين بضبط الدقة التقريبية.
  • لاستخدام قيم precision مخصّصة، استخدِم دوالHyperLog++. راجِع رسومات HLL++ لمعرفة قيم precision المسموح بها وفواصل الثقة مع تحديد الدقة النموذجية.
  • sparse precision هي مَعلمة أخرى لـ HLL+. في BigQuery، لا يمكن تحديد قيمة sparse precision للمستخدم وتكون ثابتة في precision + 5.

تنفيذ HLL+ في مواقع "إحصاءات Google 4"

تستخدِم "إحصاءات Google 4" الإعدادات التالية لقياس عدد القيم الفريدة للسمة في المقاييس ذات الصلة.

المقياس precision sparse precision
الجلسات 12 17
المستخدِمون النشطون 14 25
إجمالي عدد المستخدِمين 14 25

استخدام دوال BigQuery HLL++ مع بيانات أحداث "إحصاءات Google"

إذا كانت بيانات أحداث موقعك على "إحصاءات Google 4" متاحة في BigQuery، يمكنك محاولة مطابقة المقاييس من واجهة المستخدم مع بيانات BigQuery. تفترض الأمثلة التالية:

  • تم ضبط معرّف إعداد التقارير على By device only لموقع "إحصاءات Google 4".
  • وقد تمت معالجة المصادر الأخرى المحتملة للتناقض، مثل المنطقة الزمنية لإعداد التقارير.

إجمالي عدد المستخدمِين

العدد الدقيق باستخدام 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"، استخدِم 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، عليك أولاً فلترة الأحداث للمستخدمين النشطين فقط. تنفيذ فلتر المستخدم النشط خارج نطاق هذه المقالة.

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 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 4". إذا كان موقعك يُنشئ كمية كبيرة من بيانات الأحداث، يمكنك أيضًا تنفيذ دوال HLL++ لتقدير عدد القيم الفريدة للسمة في المقاييس الأخرى التي تستخدمها عادةً في طلبات بحث BigQuery. لمعرفة المزيد من المعلومات عن +HLL+ والسبب في أنّ احتساب عدد القيم الفريدة للسمة مكلف لمجموعات البيانات الكبيرة، يمكنك الاطّلاع على مشاركة المدونة المفصّلة على مدونة Cloud: استخدام HLL++ لتسريع الفروقات في الأعداد في مجموعات البيانات الضخمة.