مينهاز كازي، مسؤول علاقات المطوّرين، "إحصاءات 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++ لتسريع الفروقات في الأعداد في مجموعات البيانات الضخمة.