بعد تصدير بيانات Firebase إلى BigQuery، يمكنك طلب البحث عن هذه البيانات لجماهير محددة.
تقدم هذه المقالة عددًا من النماذج التي يمكنك استخدامها كأساس لطلبات البحث. تذكّر تعديل طلبات البحث في المثال لتناسب تفاصيل بياناتك، مثلاً، تغيير أسماء الجداول وتعديل النطاقات الزمنية.
تعرض طلبات البحث هذه عدد المستخدمين في الجمهور. إذا كنت ترغب في الحصول على قائمة بأرقام تعريف المستخدمين في الجمهور بدلاً من ذلك، عليك إزالة دالة COUNT() الخارجية، مثلاً، COUNT(DISTINCT user_id) --> DISTINCT user_id.
تستخدم طلبات البحث هذه لغة الاستعلامات البنيوية (SQL) العادية، لذلك، تأكّد من تحديد هذا الخيار قبل تشغيل طلب البحث. (في BigQuery > SQL Workspace (مساحة عمل لغة الاستعلامات البنيوية (SQL))، انقر على More (المزيد) > Query Settings (إعدادات طلب البحث). ضمن Additional Settings (إعدادات إضافية) > SQL dialect (إصدار لغة الاستعلامات البنيوية (SQL))، اختَر Standard (عادية)).
في الوقت الحالي، تكون بيانات الجمهور هذه للمعلومات فقط، وليست قابلة للاستخدام.
نود معرفة ما إذا كانت أمثلة طلبات البحث هذه مفيدة أم لا، وإذا كانت هناك أنواع أخرى من الجماهير ترغب في طلب البحث عنها. يمكنك الرد عبر طلب الميزة باستخدام دعم Firebase.
في هذه المقالة:
المشترون
/**
* يحسب جمهور المشترين.
*
* المشترون = المستخدمون الذين سجّلوا إما in_app_purchase أو
* purchase.
*/
SELECT
COUNT(DISTINCT user_id) AS purchasers_count
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*`
WHERE
event_name IN ('in_app_purchase', 'purchase')
-- PLEASE REPLACE WITH YOUR DESIRED DATE RANGE
AND _TABLE_SUFFIX BETWEEN '20180501' AND '20240131';
المستخدمون النشطون في س يوم
/**
* إنشاء جمهور من المستخدمين النشطين في س يوم.
*
* المستخدمون النشطون في س من الأيام = المستخدمون الذين سجّلوا حدثًا واحدًا على الأقل مع معلَمة الحدث
* engagement_time_msec > 0 في آخر س من الأيام.
*/
SELECT
COUNT(DISTINCT user_id) AS n_day_active_users_count
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*` AS T
CROSS JOIN
T.event_params
WHERE
event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
-- Pick events in the last N = 20 days.
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 20 DAY))
-- PLEASE REPLACE WITH YOUR DESIRED DATE RANGE.
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131';
المستخدمون غير النشطين في س يوم
/**
* إنشاء جمهور من المستخدمين غير النشطين في س من الأيام.
*
* المستخدمون غير النشطين في س من الأيام = المستخدمون في آخر ص من الأيام الذين لم يسجّلوا حدثًا واحدًا
* الحدث مع معلمة الحدث engagement_time_msec > 0 في آخر س من الأيام
* حيث ص > س.
*/
SELECT
COUNT(DISTINCT MDaysUsers.user_id) AS n_day_inactive_users_count
FROM
(
SELECT
user_id
FROM
/* PLEASE REPLACE WITH YOUR TABLE NAME */
`YOUR_TABLE.events_*` AS T
CROSS JOIN
T.event_params
WHERE
event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
/* Has engaged in last M = 7 days */
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY))
/* PLEASE REPLACE WITH YOUR DESIRED DATE RANGE */
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
) AS MDaysUsers
-- EXCEPT ALL is not yet implemented in BigQuery. Use LEFT JOIN in the interim.
LEFT JOIN
(
SELECT
user_id
FROM
/* PLEASE REPLACE WITH YOUR TABLE NAME */
`YOUR_TABLE.events_*`AS T
CROSS JOIN
T.event_params
WHERE
event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
/* Has engaged in last N = 2 days */
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY))
/* PLEASE REPLACE WITH YOUR DESIRED DATE RANGE */
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
) AS NDaysUsers
ON MDaysUsers.user_id = NDaysUsers.user_id
WHERE
NDaysUsers.user_id IS NULL;
المستخدمون النشطون بشكلٍ متكرر
/**
* إنشاء جمهور من المستخدمين النشطين بشكلٍ متكرر.
*
* المستخدمون النشطون بشكلٍ متكرر = المستخدمون الذين سجّلوا حدث
* واحدًا على الأقل باستخدام معلّمة الحدث engagement_time_msec > 0 في N من
* آخر X من الأيام، حيث M > N.
*/
SELECT
COUNT(DISTINCT user_id) AS frequent_active_users_count
FROM
(
SELECT
user_id,
COUNT(DISTINCT event_date)
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*` AS T
CROSS JOIN
T.event_params
WHERE
event_params.key = 'engagement_time_msec' AND event_params.value.int_value > 0
-- User engagement in the last M = 10 days.
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 DAY))
-- PLEASE REPLACE YOUR DESIRED DATE RANGE. For optimal performance
-- the _TABLE_SUFFIX range should match the INTERVAL value above.
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
GROUP BY 1
-- Having engaged in at least N = 4 days.
HAVING COUNT(event_date) >= 4
);
المستخدمون النشطون للغاية
/**
* إنشاء جمهور من المستخدمين النشطين للغاية.
*
* المستخدمون النشطون للغاية = المستخدمون الذين كانوا نشطين لأكثر من س دقيقة
* في آخر ص يوم، حيث ص > س.
*/
SELECT
COUNT(DISTINCT user_id) AS high_active_users_count
FROM
(
SELECT
user_id,
event_params.key,
SUM(event_params.value.int_value)
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*` AS T
CROSS JOIN
T.event_params
WHERE
-- User engagement in the last M = 10 days.
event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 10 DAY))
AND event_params.key = 'engagement_time_msec'
-- PLEASE REPLACE YOUR DESIRED DATE RANGE.
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131'
GROUP BY 1, 2
HAVING
-- Having engaged for more than N = 0.1 minutes.
SUM(event_params.value.int_value) > 0.1 * 60 * 1000000
);
المستخدمون المكتسبون
/**
* إنشاء جمهور من المستخدمين المكتسبين.
*
* المستخدمون المكتسبون = المستخدمون الذين تم اكتسابهم من خلال مصدر/وسيط/حملة محدّدة.
*/
SELECT
COUNT(DISTINCT user_id) AS acquired_users_count
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*`
WHERE
traffic_source.source = 'google'
AND traffic_source.medium = 'cpc'
AND traffic_source.name = 'VTA-Test-Android'
-- PLEASE REPLACE YOUR DESIRED DATE RANGE.
AND _TABLE_SUFFIX BETWEEN '20180521' AND '20240131';
المجموعات النموذجية مع الفلاتر
/**
* إنشاء جمهور يتألف من المستخدمين الذين تم اكتسابهم الأسبوع الماضي
* من خلال حملات Google، أي المجموعات النموذجية مع الفلاتر.
*
* يتم تعريف المجموعات النموذجية كمستخدمين تم اكتسابهم الأسبوع الماضي، أي بين 7 و14
* يومًا مضت. فلتر المجموعة النموذجية هو للمستخدمين الذين تم اكتسابهم من خلال حملة
* مباشرة.
*/
SELECT
COUNT(DISTINCT user_id) AS users_acquired_through_google_count
FROM
-- PLEASE REPLACE WITH YOUR TABLE NAME.
`YOUR_TABLE.events_*`
WHERE
event_name = 'first_open'
-- Cohort: opened app 1-2 weeks ago. One week of cohort, aka. weekly.
AND event_timestamp >
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 14 DAY))
AND event_timestamp <
UNIX_MICROS(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY))
-- Cohort filter: users acquired through 'google' source.
AND traffic_source.source = 'google'
-- PLEASE REPLACE YOUR DESIRED DATE RANGE.
AND _TABLE_SUFFIX BETWEEN '20180501' AND '20240131';