Crashlytics और Firebase सेशन के डेटा (ज़रूरी नहीं) को BigQuery में एक्सपोर्ट करने के बाद, डेटा का इस्तेमाल शुरू किया जा सकता है:
SQL क्वेरी का इस्तेमाल करके डेटा का विश्लेषण करना
कस्टम रिपोर्ट और खास जानकारी जनरेट करने के लिए, Crashlytics डेटा पर क्वेरी चलाई जा सकती हैं. इस तरह की कस्टम रिपोर्ट, Firebase कंसोल के Crashlytics डैशबोर्ड में उपलब्ध नहीं होती हैं. इसलिए, ये क्रैश डेटा का विश्लेषण करने और उसे समझने में आपकी मदद कर सकती हैं. इस पेज पर आगे जाकर, क्वेरी के उदाहरणों का कलेक्शन देखें.अलग-अलग डेटासेट से डेटा को जोड़ना
उदाहरण के लिए, अगर आपने Crashlyticsडेटा एक्सपोर्ट सेट अप करते समय , Firebase सेशन का डेटा एक्सपोर्ट करने का विकल्प चुना है, तो आपको क्रैश-फ़्री उपयोगकर्ताओं और क्रैश-फ़्री सेशन को बेहतर तरीके से समझने में मदद मिल सकती है (क्वेरी का उदाहरण देखें). इसके अलावा, Performance Monitoring जैसे अलग-अलग Firebase प्रॉडक्ट या Google Analytics से डेटा एक्सपोर्ट किया जा सकता है. इसके बाद, उस डेटा को BigQuery में अपने Crashlytics डेटा के साथ जोड़कर उसका विश्लेषण किया जा सकता है.व्यू बनाना
BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, व्यू बनाया जा सकता है. यह एक वर्चुअल टेबल होती है, जिसे एसक्यूएल क्वेरी के आधार पर तय किया जाता है. अलग-अलग तरह के व्यू और उन्हें बनाने के तरीके के बारे में ज़्यादा जानने के लिए, BigQuery दस्तावेज़ देखें.
डेटासेट स्कीमा के बारे में ज़्यादा जानने के लिए, BigQuery में एक्सपोर्ट किए गए डेटा के लिए डेटासेट स्कीमा देखें.
BigQuery SQL के बारे में जानकारी
चलाई जा सकने वाली क्वेरी के टाइप के बारे में जानें. इनमें इंटरैक्टिव क्वेरी जॉब, बैच क्वेरी जॉब, और लगातार चलने वाली क्वेरी जॉब शामिल हैं.
BigQuery में इस्तेमाल किए जा सकने वाले स्टेटमेंट और एसक्यूएल डायलेक्ट के बारे में जानें.
एआई की मदद से काम करने वाले असिस्टेंट (Gemini) का इस्तेमाल करके क्वेरी लिखने का तरीका जानें.
Crashlytics डेटा के लिए क्वेरी के उदाहरण
इस सेक्शन में, कुछ उदाहरण और क्वेरी दी गई हैं. इनसे पता चलता है कि एक्सपोर्ट किए गए Crashlytics डेटा और Firebase सेशन डेटा के साथ, BigQuery एसक्यूएल का इस्तेमाल कैसे किया जा सकता है.
- Firebase सेशन के डेटा का इस्तेमाल करके, क्रैश-फ़्री मेट्रिक का हिसाब लगाना
- दिन के हिसाब से क्रैश
- सबसे ज़्यादा होने वाली क्रैश की समस्याओं का पता लगाना
- सबसे ज़्यादा क्रैश होने वाले टॉप 10 डिवाइस
- कस्टम कुंजी के हिसाब से फ़िल्टर करना
- यूज़र आईडी एक्सट्रैक्ट करना
- क्रैश की किसी खास समस्या का सामना करने वाले सभी उपयोगकर्ताओं को ढूंढना
- देश के हिसाब से, क्रैश की समस्या से प्रभावित उपयोगकर्ताओं की संख्या
- आज अब तक की पांच सबसे बड़ी समस्याएं
- DATE से लेकर आज तक की पांच सबसे बड़ी समस्याएं
पहला उदाहरण: Firebase सेशन डेटा का इस्तेमाल करके, क्रैश-फ़्री मेट्रिक का हिसाब लगाना
आपने अपने ऐप्लिकेशन के नए वर्शन में, क्रिटिकल यूज़र जर्नी के दौरान ऐप्लिकेशन क्रैश होने की समस्या को ठीक करने के लिए, ऐप्लिकेशन में काफ़ी बदलाव किए हैं. आपको उपयोगकर्ताओं से शानदार समीक्षाएं मिली हैं, लेकिन आपको आंकड़ों के आधार पर यह सबूत चाहिए कि आपका ऐप्लिकेशन पहले से ज़्यादा स्टेबल है.
क्रैश-फ़्री मेट्रिक से यह जानकारी मिल सकती है. ये मेट्रिक, आपके ऐप्लिकेशन की परफ़ॉर्मेंस को समझने में मदद करती हैं. Firebase सेशन डेटा और Crashlytics इवेंट की मदद से, इन मेट्रिक का हिसाब लगाने के लिए एक बुनियादी क्वेरी का इस्तेमाल किया जा सकता है.
यहां Android ऐप्लिकेशन के लिए क्वेरी के उदाहरण दिए गए हैं. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
किसी खास वर्शन के लिए, ऐसे उपयोगकर्ता जिनके डिवाइस में आपका ऐप्लिकेशन क्रैश नहीं हुआ:
SELECT TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) AS event_date, (1 - (COUNT (DISTINCT installation_uuid) / COUNT (DISTINCT instance_id))) AS CFU FROM `PROJECT_ID.firebase_sessions.PACKAGE_NAME_ANDROID` AS sessions LEFT JOIN `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` AS crashlytics ON TIMESTAMP_TRUNC(sessions.event_timestamp,DAY) = TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) WHERE crashlytics.error_type="FATAL" AND crashlytics.application.display_version="APP_VERSION" AND sessions.application.display_version = "APP_VERSION" GROUP BY event_date ORDER BY event_date
पिछले हफ़्ते (पिछले 168 घंटों) में, ऐसे सेशन जिनमें ऐप्लिकेशन क्रैश नहीं हुआ:
SELECT TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) AS event_date, (1 - (COUNT (DISTINCT crashlytics.firebase_session_id) / COUNT (DISTINCT sessions.session_id))) AS CFS FROM `PROJECT_ID.firebase_sessions.PACKAGE_NAME_ANDROID` AS sessions LEFT JOIN `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` AS crashlytics ON TIMESTAMP_TRUNC(sessions.event_timestamp,DAY) = TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) WHERE crashlytics.error_type="FATAL" AND _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND _PARTITIONTIME < CURRENT_TIMESTAMP() GROUP BY event_date ORDER BY event_date
दूसरा उदाहरण: हर दिन के हिसाब से क्रैश की संख्या
ज़्यादा से ज़्यादा गड़बड़ियों को ठीक करने के बाद, आपको लगता है कि आपकी टीम फ़ोटो शेयर करने वाले नए ऐप्लिकेशन को लॉन्च करने के लिए तैयार है. हालांकि, लॉन्च करने से पहले आपको पिछले महीने के दौरान हर दिन ऐप्लिकेशन क्रैश होने की संख्या देखनी है. इससे आपको यह पक्का करने में मदद मिलेगी कि गड़बड़ियों को ठीक करने के बाद, ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हुई है या नहीं.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
तीसरा उदाहरण: सबसे ज़्यादा होने वाले क्रैश का पता लगाना
प्रॉडक्शन प्लान को सही तरीके से प्राथमिकता देने के लिए, आपको अपने ऐप्लिकेशन में सबसे ज़्यादा होने वाली 10 क्रैश की घटनाओं का पता लगाना है. इसके लिए, ऐसी क्वेरी बनाएं जिससे आपको डेटा के काम के पॉइंट मिलें.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
चौथा उदाहरण: सबसे ज़्यादा क्रैश होने वाले 10 डिवाइस
पतझड़ का मौसम, नए फ़ोन का मौसम! आपकी कंपनी को पता है कि इसका मतलब यह भी है कि डिवाइस से जुड़ी नई समस्याएं सामने आएंगी. खास तौर पर, Android के लिए. ऐप्लिकेशन के साथ काम न करने की समस्याओं से बचने के लिए, आपने एक क्वेरी बनाई. इससे उन 10 डिवाइसों की पहचान की जाती है जिन पर पिछले हफ़्ते (168 घंटे) में सबसे ज़्यादा क्रैश हुए.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
पांचवां उदाहरण: कस्टम कुंजी के हिसाब से फ़िल्टर करना
मान लें कि आप एक गेम डेवलपर हैं और आपको यह जानना है कि आपके गेम के किस लेवल पर सबसे ज़्यादा क्रैश होते हैं.
इस आंकड़े को ट्रैक करने के लिए, आपको current_level नाम की एक कस्टम Crashlytics कुंजी
(iOS+ |
Android |
Flutter |
Unity
)
सेट करनी होगी. साथ ही, जब भी उपयोगकर्ता किसी नए लेवल पर पहुंचे, तो आपको इसे अपडेट करना होगा.
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Java
Crashlytics.setInt("current_level", 3);
BigQuery में एक्सपोर्ट की गई उस कुंजी की मदद से, क्वेरी लिखकर हर क्रैश इवेंट से जुड़ी current_level वैल्यू के डिस्ट्रिब्यूशन की रिपोर्ट तैयार की जा सकती है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
value
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
key = "current_level"
GROUP BY
key,
value
ORDER BY
num_of_crashes DESCछठा उदाहरण: यूज़र आईडी निकालना
आपके पास Android ऐप्लिकेशन का अर्ली ऐक्सेस है. आपके ज़्यादातर उपयोगकर्ताओं को यह पसंद आया है. हालांकि, तीन उपयोगकर्ताओं को ऐप्लिकेशन क्रैश होने की समस्या का सामना करना पड़ा है. समस्या की तह तक जाने के लिए, आपको एक क्वेरी लिखनी होगी. यह क्वेरी, उन उपयोगकर्ताओं के यूज़र आईडी का इस्तेमाल करके, क्रैश होने के सभी इवेंट को फ़ेच करेगी.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT *
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
user.id
उदाहरण 7: क्रैश की किसी खास समस्या का सामना करने वाले सभी उपयोगकर्ताओं को ढूंढना
आपकी टीम ने गलती से बीटा टेस्टर के एक ग्रुप के लिए, एक गंभीर गड़बड़ी वाला वर्शन रिलीज़ कर दिया है. आपकी टीम, ऊपर दिए गए "सबसे ज़्यादा होने वाले क्रैश का पता लगाएं" उदाहरण की क्वेरी का इस्तेमाल करके, क्रैश की समस्या के खास आईडी की पहचान कर पाई. अब आपकी टीम को एक क्वेरी चलानी है, ताकि ऐप्लिकेशन के उन उपयोगकर्ताओं की सूची निकाली जा सके जिन पर इस क्रैश का असर पड़ा है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT user.id as user_id
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
issue_id = "ISSUE_ID"
AND application.display_version = "APP_VERSION"
AND user.id != ""
ORDER BY
user.id;उदाहरण 8: देश के हिसाब से, ऐप्लिकेशन क्रैश होने की समस्या से प्रभावित उपयोगकर्ताओं की संख्या
आपकी टीम को नई रिलीज़ के रोल आउट के दौरान, एक गंभीर गड़बड़ी का पता चला है. आपने ऊपर दिए गए "सबसे ज़्यादा होने वाले क्रैश का पता लगाएं" उदाहरण की क्वेरी का इस्तेमाल करके, क्रैश की समस्या के आईडी का पता लगाया. अब आपकी टीम यह देखना चाहती है कि क्या यह क्रैश, दुनिया भर के अलग-अलग देशों में मौजूद उपयोगकर्ताओं के डिवाइसों पर भी हुआ है.
यह क्वेरी लिखने के लिए, आपकी टीम को ये काम करने होंगे:
Google Analytics के डेटा को BigQuery में एक्सपोर्ट करने की सुविधा चालू करें. प्रोजेक्ट डेटा को BigQuery में एक्सपोर्ट करना लेख पढ़ें.
Google Analytics SDK और Crashlytics SDK, दोनों में यूज़र आईडी पास करने के लिए, अपना ऐप्लिकेशन अपडेट करें.
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");ऐसी क्वेरी लिखें जो यूज़र आईडी फ़ील्ड का इस्तेमाल करके, Google Analytics डेटासेट में मौजूद इवेंट को Crashlytics डेटासेट में मौजूद क्रैश से जोड़ती हो.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और
ANDROIDके बजाय, बंडल आईडी औरIOSका इस्तेमाल करें.SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
उदाहरण 9: आज की पांच मुख्य समस्याएं
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
उदाहरण 10: आज की तारीख को शामिल करते हुए, DATE से लेकर अब तक की पांच सबसे बड़ी समस्याएं
बैच और रीयलटाइम टेबल को स्टिचिंग क्वेरी के साथ भी जोड़ा जा सकता है. इससे भरोसेमंद बैच डेटा में रीयलटाइम जानकारी जोड़ी जा सकती है. event_id एक प्राथमिक कुंजी है. इसलिए, दोनों टेबल में मौजूद किसी भी सामान्य इवेंट को डुप्लीकेट होने से बचाने के लिए, DISTINCT event_id का इस्तेमाल किया जा सकता है.
यहां Android ऐप्लिकेशन के लिए क्वेरी का एक उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी और IOS का इस्तेमाल करें. पैकेज के नाम और ANDROID का इस्तेमाल न करें.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD") GROUP BY issue_id ORDER BY events DESC LIMIT 5;
आगे क्या करना है?
एक्सपोर्ट किए गए डेटा और Data Studio जैसी Google Cloud की अलग-अलग सेवाओं का इस्तेमाल करके, कस्टम डैशबोर्ड बनाएं.
एक्सपोर्ट किए गए डेटा के लिए डेटासेट स्कीमा के बारे में जानें.