BigQuery पर अपने Firebase डेटा को एक्सपोर्ट करने के बाद, आप खास ऑडियंस के लिए उस डेटा की क्वेरी कर सकते हैं.
इस लेख में ऐसे कई टेंप्लेट हैं जिनका इस्तेमाल आप अपनी क्वेरी के लिए आधार के तौर पर कर सकते हैं. अपने डेटा की खासियतें बताने के लिए उदाहरण क्वेरी में बदलाव करना ना भूलें; उदाहरण के लिए, टेबल के नाम और तारीख की सीमाओं में बदलाव करें.
इन क्वेरी से पता चलता है कि ऑडियंस में उपयोगकर्ताओं की कितनी संख्या है. अगर आप इसके बजाय ऑडियंस में User-ID की सूची पाना चाहते हैं, तो बाहरी COUNT() फ़ंक्शन को हटाएं; उदाहरण के लिए, COUNT(DISTINCT user_id) --> DISTINCT user_id.
ये क्वेरी, मानक एसक्यूएल का इस्तेमाल करती हैं. इसलिए, क्वेरी चलाने से पहले उस विकल्प को ज़रूर चुनें. (BigQuery > SQL फ़ाइल फ़ोल्डर में, ज़्यादा > क्वेरी सेटिंग पर क्लिक करें. ज़्यादा सेटिंग > SQL बोली में, मानक चुनें.)
फ़िलहाल यह ऑडियंस डेटा सिर्फ़ जानकारी के लिए है, कार्रवाई के लिए नहीं है.
हमें यह जानकर खुशी होगी कि क्वेरी के ये उदाहरण आपको फ़ायदेमंद लगे. हमें यह जानकर भी अच्छा लगेगा कि क्या आपके पास दूसरी तरह की ऑडियंस हैं, जिनके लिए आप क्वेरी करना चाहते हैं. आप 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';
N-दिन सक्रिय रहने वाले उपयोगकर्ता
/**
* N-दिन सक्रिय रहने वाले उपयोगकर्ताओं को ऑडियंस बनाता है.
*
* N-दिन सक्रिय रहने वाले उपयोगकर्ता = वे उपयोगकर्ता जो जिन्होंने इवेंट पैरामीटर में कम से कम एक बार लॉग इन किया
* engagement_time_msec > पिछले N दिनों में एक भी नहीं.
*/
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';
N-दिन निष्क्रिय रहने वाले उपयोगकर्ता
/**
* N-दिन सक्रिय नहीं रहने वाले उपयोगकर्ताओं को ऑडियंस बनाता है.
*
* N-दिन सक्रिय नहीं रहने वाले उपयोगकर्ता = पिछले M दिनों में ऐसे उपयोगकर्ता जिन्होंने कोई गतिविधि नहीं की है
* पिछले N दिनों में इवेंट पैरामीटर engagement_time_msec > 0 वाले इवेंट
* जहां M > N है.
*/
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;
लगातार सक्रिय रहने वाले उपयोगकर्ता
/**
* लगातार सक्रिय रहने वाले उपयोगकर्ताओं को ऑडियंस बनाता है.
*
* लगातार सक्रिय रहने वाले उपयोगकर्ता = ऐसे उपयोगकर्ता जिन्होंने कम से कम एक इवेंट में लॉग इन किया है
* इवेंट N के इवेंट पैरामीटर param_time_msec > 0 हैं
* पिछले M दिन, जहां 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
);
ज़्यादा सक्रिय रहने वाले उपयोगकर्ता
/ **
* ज़्यादा सक्रिय रहने वाले उपयोगकर्ताओं को ऑडियंस बनाता है.
*
* ज़्यादा सक्रिय रहने वाले उपयोगकर्ता = ऐसे उपयोगकर्ता जो पिछले M दिनों में N मिनट से ज़्यादा देर तक सक्रिय रहे. यहां M का मान N से बड़ा है.
*/
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';