बेहतर विश्लेषण के लिए, Crashlytics से मिले डेटा को BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery SQL का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है. साथ ही, उसे किसी अन्य क्लाउड सेवा पर एक्सपोर्ट किया जा सकता है. साथ ही, Google Data Studio की मदद से, विज़ुअलाइज़ेशन और कस्टम डैशबोर्ड के लिए इसका इस्तेमाल किया जा सकता है.
BigQuery Export चालू करें
- Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
- BigQuery कार्ड में, लिंक करें पर क्लिक करें.
- BigQuery को चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
अपने प्रोजेक्ट को BigQuery से लिंक करने पर:
- Firebase, आपके डेटा को Firebase प्रोजेक्ट से BigQuery में रोज़ सिंक करने के लिए सेट अप करता है.
- आपके प्रोजेक्ट के सभी ऐप्लिकेशन डिफ़ॉल्ट रूप से, BigQuery से लिंक होते हैं. साथ ही, बाद में प्रोजेक्ट में जोड़े जाने वाले ऐप्लिकेशन, BigQuery से अपने-आप लिंक हो जाते हैं. आपके पास BigQuery में डेटा भेजने वाले ऐप्लिकेशन चुनने का विकल्प होता है.
- Firebase आपके मौजूदा डेटा की एक कॉपी BigQuery में एक्सपोर्ट करता है. लिंक किए गए हर ऐप्लिकेशन के लिए, इसमें एक बैच टेबल होती है, जिसमें रोज़ होने वाले सिंक का डेटा होता है.
- अगर Crashlytics को BigQuery स्ट्रीमिंग एक्सपोर्ट चालू किया जाता है, तो लिंक किए गए सभी ऐप्लिकेशन में एक रीयल टाइम टेबल भी होगी. इसमें डेटा लगातार अपडेट होता रहेगा.
BigQuery Export को बंद करने के लिए, Firebase कंसोल में अपना प्रोजेक्ट अनलिंक करें.
BigQuery में कौनसा डेटा एक्सपोर्ट किया जाता है?
Firebase Crashlytics से मिले डेटा को firebase_crashlytics
नाम के BigQuery डेटासेट में एक्सपोर्ट किया जाता है. डिफ़ॉल्ट रूप से, आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए Crashlytics डेटा सेट में अलग-अलग टेबल बनाई जाएंगी. Firebase, टेबल को ऐप्लिकेशन के बंडल आइडेंटिफ़ायर के आधार पर नाम देता है. इसमें पीरियड को अंडरस्कोर में बदला जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ा जाता है.
उदाहरण के लिए, com.google.test
आईडी वाले ऐप्लिकेशन का डेटा, com_google_test_ANDROID
नाम की टेबल में होगा. यह बैच टेबल हर दिन एक बार अपडेट होती है. अगर
आप Crashlytics BigQuery से स्ट्रीमिंग एक्सपोर्ट करने की सुविधा चालू करते हैं, तो Firebase Crashlytics का डेटा भी रीयलटाइम में com_google_test_ANDROID_REALTIME
पर स्ट्रीम होगा.
टेबल की हर पंक्ति, ऐप्लिकेशन में होने वाले किसी इवेंट को दिखाती है. इसमें क्रैश, नुकसान न पहुंचाने वाली गड़बड़ियां, और एएनआर शामिल हैं.
Crashlytics BigQuery की स्ट्रीमिंग एक्सपोर्ट करने की सुविधा चालू करें
BigQueryStreaming की मदद से, Crashlytics से मिले डेटा को रीयल टाइम में स्ट्रीम किया जा सकता है. इसका इस्तेमाल ऐसे किसी भी काम के लिए किया जा सकता है जिसके लिए लाइव डेटा की ज़रूरत होती है. उदाहरण के लिए, लाइव डैशबोर्ड में जानकारी दिखाना, रोल आउट को लाइव देखना या सूचना और कस्टम वर्कफ़्लो ट्रिगर करने वाले ऐप्लिकेशन से जुड़ी समस्याओं की निगरानी करना.
Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट, BigQuery सैंडबॉक्स के लिए उपलब्ध नहीं है.
Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट को चालू करने पर, बैच टेबल के साथ-साथ आपको एक रीयलटाइम टेबल भी मिलेगी. यहां टेबल के बीच के उन फ़र्क़ के बारे में बताया गया है जिनके बारे में आपको पता होना चाहिए:
बैच टेबल | रीयल टाइम टेबल |
---|---|
|
|
बैच टेबल, लंबे समय तक चलने वाले विश्लेषण और समय के साथ रुझानों की पहचान करने के लिए सबसे सही है. ऐसा इसलिए, क्योंकि हम इवेंट को लिखने से पहले लंबे समय तक सेव करके रखते हैं और इन्हें 30 दिनों तक टेबल में बैकफ़िल किया जा सकता है. जब हम आपकी रीयल टाइम टेबल में डेटा लिख देते हैं, तो तुरंत उसे BigQuery में लिख देते हैं. इसलिए, यह लाइव डैशबोर्ड और कस्टम सूचनाओं के लिए बिलकुल सही है. इन दोनों टेबल को स्टिचिंग क्वेरी के साथ जोड़ा जा सकता है, ताकि आपको दोनों का फ़ायदा मिल सके. यहां क्वेरी का उदाहरण 9 देखें.
डिफ़ॉल्ट रूप से, रीयल टाइम टेबल में सेगमेंट के खत्म होने की समयसीमा 30 दिनों की होती है. इसमें बदलाव करने का तरीका जानने के लिए, सेगमेंट के खत्म होने की तारीख को अपडेट करना लेख पढ़ें.
Crashlytics BigQuery की स्ट्रीमिंग चालू करने का तरीका
स्ट्रीमिंग चालू करने के लिए, BigQuery इंटिग्रेशन पेज के Crashlytics सेक्शन पर जाएं और स्ट्रीमिंग शामिल करें चेकबॉक्स चुनें.
Data Studio टेंप्लेट
अपने Data Studio टेंप्लेट में रीयलटाइम डेटा चालू करने के लिए, एक्सपोर्ट किए गए Crashlytics डेटा को Data Studio की मदद से विज़ुअलाइज़ करना में दिए गए निर्देशों का पालन करें.
व्यू
BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, उदाहरण के तौर पर दी गई क्वेरी को व्यू में बदला जा सकता है. ज़्यादा जानकारी के लिए व्यू बनाना देखें.
एक्सपोर्ट किए गए डेटा का इस्तेमाल करके क्या किया जा सकता है?
BigQuery Export में रॉ क्रैश डेटा शामिल होता है. इसमें डिवाइस का टाइप, ऑपरेटिंग सिस्टम, अपवाद (Android ऐप्लिकेशन) या गड़बड़ियां (Apple ऐप्लिकेशन) शामिल हैं. इसके अलावा, Crashlytics लॉग, और दूसरे डेटा भी शामिल होते हैं.
BigQuery में Firebase Crashlytics डेटा के साथ काम करना
नीचे दिए गए उदाहरणों में, Crashlytics से मिले डेटा पर की जा सकने वाली क्वेरी के बारे में बताया गया है. ये क्वेरी ऐसी रिपोर्ट जनरेट करती हैं जो Crashlytics डैशबोर्ड में उपलब्ध नहीं हैं.
Crashlytics से जुड़ी क्वेरी के उदाहरण
नीचे दिए गए उदाहरणों में, क्रैश इवेंट डेटा को आसानी से समझ में आने वाली खास जानकारी में इकट्ठा करने वाली रिपोर्ट जनरेट करने का तरीका बताया गया है.
पहला उदाहरण: दिन के हिसाब से क्रैश होना
ज़्यादा से ज़्यादा गड़बड़ियां ठीक करने के बाद, एक लीड डेवलपर को लगता है कि उनकी टीम अब फ़ोटो शेयर करने वाला नया ऐप्लिकेशन लॉन्च करने के लिए तैयार है. इससे पहले, वे पिछले महीने में हर दिन के क्रैश की संख्या देखना चाहते हैं, ताकि उन्हें पता चल सके कि उनके गड़बड़ी ने ऐप्लिकेशन को समय के साथ ज़्यादा स्थिर बनाया है:
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
दूसरा उदाहरण: ऐप्लिकेशन के सबसे ज़्यादा क्रैश होने की समस्या का पता लगाना
प्रोडक्शन प्लान को सही तरीके से प्राथमिकता देने के लिए, प्रोजेक्ट मैनेजर यह सोचता है कि उसके प्रॉडक्ट में 10 सबसे ज़्यादा नुकसान पहुंचाने वाले क्रैश के बारे में कैसे बताया जाए. इनसे अहम जानकारी वाली क्वेरी जनरेट होती है:
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 `projectId.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;
उदाहरण 3: क्रैश होने वाले टॉप 10 डिवाइस
पतझड़ नया फ़ोन सीज़न है! डेवलपर इस बात को भी अच्छी तरह जानता है कि यह डिवाइस से जुड़ी खास समस्याओं का नया सीज़न है. साथ काम करने से जुड़ी मौजूदा समस्याओं से बचने के लिए, उन्होंने एक क्वेरी एक साथ रखी. इसमें उन 10 डिवाइसों की पहचान की गई है जिनके डिवाइस, पिछले हफ़्ते सबसे ज़्यादा क्रैश हुए हैं:
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `projectId.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;
उदाहरण 4: कस्टम कुंजी के हिसाब से फ़िल्टर करना
एक गेम डेवलपर यह जानना चाहता है कि उसके गेम का कौनसा लेवल सबसे ज़्यादा
क्रैश का अनुभव करता है. उस आंकड़े को ट्रैक करने में उनकी मदद करने के लिए, वे अपने हिसाब से Crashlytics बटन current_level
सेट करते हैं. साथ ही, जब भी उपयोगकर्ता किसी नए लेवल पर पहुंचता है, यह उसे अपडेट करता है.
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
इसके बाद, वे अपने BigQuery एक्सपोर्ट में उस कुंजी की मदद से हर क्रैश इवेंट से जुड़ी current_level
वैल्यू के डिस्ट्रिब्यूशन को रिपोर्ट करने के लिए एक क्वेरी लिखते हैं:
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `projectId.firebase_crashlytics.package_name_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
पांचवां उदाहरण: यूज़र आईडी निकालना
डेवलपर के पास, रिलीज़ होने से पहले ऐप्लिकेशन इस्तेमाल करने की सुविधा है. उनके ज़्यादातर उपयोगकर्ता इसे पसंद करते हैं, लेकिन तीन ऐप्लिकेशन को असामान्य रूप से बंद होने की समस्या का सामना करना पड़ा है. समस्या की तह तक जाने के लिए, वे एक ऐसी क्वेरी लिखते हैं जिसमें उनके User-ID का इस्तेमाल करके, उन उपयोगकर्ताओं के सभी क्रैश इवेंट की जानकारी मिलती है:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
उदाहरण 6: उन सभी उपयोगकर्ताओं को ढूंढना जिन्हें क्रैश की खास समस्या का सामना करना पड़ रहा है
एक डेवलपर ने बीटा टेस्टर के एक ग्रुप के लिए एक गंभीर गड़बड़ी रिलीज़ की है. टीम ने ऊपर दिए गए दूसरे उदाहरण में दी गई क्वेरी का इस्तेमाल करके, क्रैश से जुड़ी समस्या के आईडी की पहचान की. अब वे ऐप्लिकेशन के उन उपयोगकर्ताओं की सूची एक्सट्रैक्ट करने के लिए एक क्वेरी चलाना चाहेंगे जिन पर इस क्रैश का असर हुआ है:
SELECT user.id as user_id FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE issue_id = "YOUR_ISSUE_ID" AND application.display_version = "" AND user.id != "" ORDER BY user.id;
उदाहरण 7: ऐसे उपयोगकर्ताओं की संख्या जिन पर क्रैश की समस्या का असर पड़ा है. इस समस्या को देश के हिसाब से बांटा गया है
अब टीम को नई रिलीज़ को रोल आउट करने के दौरान एक गंभीर गड़बड़ी का पता चला है. उन्होंने किसी खास क्रैश समस्या आईडी की पहचान करने के लिए, ऊपर दिए गए दूसरे उदाहरण में दी गई क्वेरी का इस्तेमाल किया. टीम अब देखना चाहती है कि क्या यह क्रैश दुनिया भर के अलग-अलग देशों के उपयोगकर्ताओं तक फैल गया है.
यह क्वेरी लिखने के लिए, टीम को ये काम करने होंगे:
Google Analytics के लिए BigQuery Export चालू करें. प्रोजेक्ट डेटा को BigQuery में एक्सपोर्ट करना लेख पढ़ें.
Google Analytics SDK और Crashlytics SDK टूल दोनों में यूज़र आईडी पास करने के लिए अपना ऐप्लिकेशन अपडेट करना.
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
ऐसी क्वेरी लिखें जो Crashlytics BigQuery डेटा सेट में क्रैश के साथ Google Analytics BigQuery डेटा सेट में इवेंट जोड़ने के लिए यूज़र आईडी फ़ील्ड का इस्तेमाल करती है:
SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `projectId.firebase_crashlytics.package_name_ANDROID` c INNER JOIN `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "YOUR_ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
उदाहरण 8: आज तक की पांच सबसे बड़ी समस्याएं
Crshlytics BigQuery स्ट्रीमिंग एक्सपोर्ट को चालू करना ज़रूरी है
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
उदाहरण 9: आज को मिलाकर, DATE से अब तक की पांच मुख्य समस्याएं
Crshlytics BigQuery स्ट्रीमिंग एक्सपोर्ट को चालू करना ज़रूरी है.
इस उदाहरण में, हम भरोसेमंद बैच डेटा में रीयलटाइम जानकारी जोड़ने के लिए, बैच और रीयल टाइम टेबल को मिला देते हैं. event_id
एक प्राइमरी कुंजी है, इसलिए हम
दो टेबल से किसी भी सामान्य इवेंट का डेड्यूप करने के लिए, DISTINCT event_id
का इस्तेमाल कर सकते हैं.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID`) WHERE event_timestamp >= "2020-01-13" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
BigQuery में Firebase Crashlytics स्कीमा को समझना
Crashlytics को BigQuery से लिंक करने पर, Firebase हाल के इवेंट (क्रैश, सामान्य गड़बड़ियां, और एएनआर) एक्सपोर्ट करता है. इनमें लिंक से दो दिन पहले तक के इवेंट शामिल होते हैं. साथ ही, इसमें 30 दिन तक बैकफ़िल करने का विकल्प भी होता है.
लिंक बंद किए जाने तक, Firebase हर दिन के हिसाब से Crashlytics इवेंट एक्सपोर्ट करता है. हर एक्सपोर्ट के बाद, BigQuery में डेटा उपलब्ध होने में कुछ मिनट लग सकते हैं.
डेटासेट
Firebase Crashlytics, Crashlytics से जुड़े डेटा के लिए BigQuery में एक नया डेटासेट बनाता है. डेटासेट में आपके पूरे प्रोजेक्ट की जानकारी होती है, भले ही उसमें कई ऐप्लिकेशन हों.
टेबल
Firebase Crashlytics, आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए डेटासेट में एक टेबल बनाता है. हालांकि, ऐसा तब ही होता है, जब आपने उस ऐप्लिकेशन के लिए डेटा एक्सपोर्ट करने की सुविधा से ऑप्ट आउट न किया हो. Firebase ऐप्लिकेशन के बंडल आइडेंटिफ़ायर के आधार पर टेबल को नाम देता है. इसमें पीरियड को अंडरस्कोर में बदला जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ा जाता है.
उदाहरण के लिए, com.google.test
आईडी वाले Android ऐप्लिकेशन का डेटा, com_google_test_ANDROID
नाम की टेबल में होगा. वहीं, रीयलटाइम डेटा (चालू होने पर) com_google_test_ANDROID_REALTIME
नाम की टेबल में होगा
टेबल में, डेवलपर की तय की गई कस्टम Crashlytics कुंजियों के साथ-साथ, Crashlytics से जुड़े डेटा का स्टैंडर्ड सेट शामिल होता है.
लाइन
टेबल की हर पंक्ति, ऐप्लिकेशन को मिली एक गड़बड़ी के बारे में बताती है.
कॉलम
टेबल में मौजूद कॉलम, क्रैश, सामान्य गड़बड़ियों, और ANRs के लिए एक जैसे होते हैं. अगर Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट चालू है, तो रीयलटाइम टेबल में वही कॉलम होंगे जो बैच टेबल में होंगे. एक्सपोर्ट में शामिल कॉलम नीचे दिए गए हैं.
स्टैक ट्रेस के बिना
लाइनों में मौजूद कॉलम, जिनमें बिना स्टैक ट्रेस वाले इवेंट दिखाए गए हैं.
फ़ील्ड का नाम | डेटा टाइप | जानकारी |
---|---|---|
platform | स्ट्रिंग | Apple या Android ऐप्लिकेशन |
बंडल_आइडेंटिफ़ायर | स्ट्रिंग | बंडल आईडी, जैसे कि com.google.gmail |
event_id | स्ट्रिंग | इवेंट के लिए यूनीक आईडी |
is_fatal | बूलियन | ऐप्लिकेशन क्रैश हुआ है या नहीं |
error_type | स्ट्रिंग | इवेंट का गड़बड़ी टाइप (FATAL, NON_FATAL, ANR) |
समस्या का आईडी | स्ट्रिंग | इवेंट से जुड़ी समस्या |
वैरिएंट_आईडी | स्ट्रिंग | इस इवेंट से जुड़ी समस्या का वैरिएंट ध्यान दें कि हर इवेंट में, समस्या का वैरिएंट नहीं होता. |
event_timestamp | टाइमस्टैंप | इवेंट कब हुआ |
device | रिकॉर्ड | वह डिवाइस जिस पर इवेंट हुआ |
device.manufacturer | स्ट्रिंग | डिवाइस बनाने वाली कंपनी |
डिवाइस मॉडल | स्ट्रिंग | डिवाइस का मॉडल |
डिवाइस संरचना | स्ट्रिंग | X86_32, X86_64, ARMV7, ARM64, ARMV7S या ARMV7K |
मेमोरी | रिकॉर्ड | डिवाइस की मेमोरी की स्थिति |
मेमोरी.इस्तेमाल की गई | INT64 | इस्तेमाल की गई मेमोरी के बाइट |
मेमोरी.फ़्री | INT64 | बची हुई मेमोरी के बाइट |
स्टोर करने की जगह | रिकॉर्ड | डिवाइस का स्थायी स्टोरेज |
इस्तेमाल किया गया स्टोरेज | INT64 | इस्तेमाल की गई स्टोरेज के बाइट |
Storage.free | INT64 | बचे हुए स्टोरेज के बाइट |
ऑपरेटिंग_सिस्टम | रिकॉर्ड | डिवाइस पर मौजूद ओएस की जानकारी |
ऑपरेटिंग_system.display_version | स्ट्रिंग | डिवाइस पर मौजूद ओएस का वर्शन |
operating_system.name | स्ट्रिंग | डिवाइस पर ओएस का नाम |
ऑपरेटिंग_system.modification_state | स्ट्रिंग | डिवाइस में बदलाव किया गया है या नहीं, उदाहरण के लिए, सिस्टम से जुड़े प्रतिबंध फिर से लगाए गए/रूट किए गए (मॉड किया गया या नहीं किया गया है) |
ऑपरेटिंग_system.type | स्ट्रिंग | डिवाइस पर चल रहे ओएस का टाइप (उदाहरण के लिए, IOS, MACOS); सिर्फ़ Apple प्लैटफ़ॉर्म ऐप्लिकेशन के लिए उपलब्ध है |
ऑपरेटिंग_system.device_type | स्ट्रिंग | डिवाइस किस तरह का है (उदाहरण के लिए, मोबाइल, टैबलेट, टीवी वगैरह). इसे "डिवाइस की कैटगरी" भी कहा जाता है |
ऐप्लिकेशन | रिकॉर्ड | इवेंट जनरेट करने वाला ऐप्लिकेशन |
app.build_version | स्ट्रिंग | ऐप्लिकेशन का बिल्ड वर्शन |
ऐप्लिकेशन.display_version | स्ट्रिंग | |
user | रिकॉर्ड | ज़रूरी नहीं: ऐप्लिकेशन के उपयोगकर्ता के बारे में इकट्ठा की गई जानकारी |
user.name | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता का नाम |
user.email | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता का ईमेल पता |
user.id | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता से जुड़ा कोई खास ऐप्लिकेशन आईडी |
कस्टम कुंजी | दोहराया गया रिकॉर्ड | डेवलपर के तय किए गए की-वैल्यू पेयर |
custom_keys.key | स्ट्रिंग | डेवलपर की ओर से तय की गई कुंजी |
custom_keys.value | स्ट्रिंग | डेवलपर की ओर से तय की गई वैल्यू |
इंस्टॉलेशन_uuid | स्ट्रिंग | ऐसा आईडी जो खास ऐप्लिकेशन और डिवाइस को इंस्टॉल किए जाने की पहचान करता है |
Crowdlytics_sdk_versions | स्ट्रिंग | Crashlytics SDK टूल का वह वर्शन जिससे इवेंट जनरेट हुआ |
app_orientation | स्ट्रिंग | PORTRAIT, LANDSCAPE, FACE_UP या FACE_DOWN |
device_orientation | स्ट्रिंग | PORTRAIT, LANDSCAPE, FACE_UP या FACE_DOWN |
प्रोसेस_स्टेट | स्ट्रिंग | बैकग्राउंड या आगे का हिस्सा |
लॉग | दोहराया गया रिकॉर्ड | अगर यह नीति चालू है, तो Crashlytics लॉगर से, टाइमस्टैंप वाले लॉग मैसेज जनरेट हो जाते हैं |
Logs.timestamp | टाइमस्टैंप | लॉग कब बनाया गया था |
Logs.message | स्ट्रिंग | लॉग किया गया मैसेज |
ब्रेडक्रंब | दोहराया गया रिकॉर्ड | Google Analytics के टाइमस्टैंप वाले ब्रेडक्रंब, अगर चालू हैं |
ब्रेडक्रंब.timestamp | टाइमस्टैंप | ब्रेडक्रंब से जुड़ा टाइमस्टैंप |
breadcrumbs.name | स्ट्रिंग | ब्रेडक्रंब से जुड़ा नाम |
ब्रेडक्रंब.params | दोहराया गया रिकॉर्ड | ब्रेडक्रंब से जुड़े पैरामीटर |
ब्रेडक्रंब.params.key | स्ट्रिंग | ब्रेडक्रंब से जुड़ी पैरामीटर कुंजी |
ब्रेडक्रंब.params.value | स्ट्रिंग | ब्रेडक्रंब से जुड़ी पैरामीटर वैल्यू |
ब्लेम_फ़्रेम | रिकॉर्ड | क्रैश या गड़बड़ी की असल वजह के तौर पर पहचाने गए फ़्रेम |
Blame_frame.line | INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
Blame_frame.file | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
Blame_frame.सिम्बॉल | स्ट्रिंग | हाइड्रेटेड सिंबल या रॉ सिंबल |
Blame_frame.offset | INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है, Java अपवादों के लिए सेट नहीं |
Blame_frame.address | INT64 | बाइनरी इमेज में मौजूद पता, जिसमें कोड शामिल है. इसे Java फ़्रेम के लिए सेट नहीं किया गया है |
Blame_frame.library | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
Blame_frame.owner | स्ट्रिंग | डेवलपर, वेंडर, RUNTIME, प्लैटफ़ॉर्म या सिस्टम |
ब्लेम_फ़्रेम.ब्लेड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला कि क्रैश या गड़बड़ी की वजह फ़्रेम हुई है |
अपवाद | दोहराया गया रिकॉर्ड | सिर्फ़ Android के लिए: इस इवेंट के दौरान हुए अपवाद. नेस्ट किए गए अपवादों को समय के हिसाब से उल्टे क्रम में दिखाया जाता है (पढ़ें: आखिरी रिकॉर्ड पहला अपवाद है) |
अपवाद.टाइप | स्ट्रिंग | अपवाद का टाइप, उदाहरण के लिए, java.lang.legalStateexcept |
अपवाद.अपवाद मैसेज | स्ट्रिंग | इस अपवाद से जुड़ा मैसेज |
अपवाद.नेस्ट किया गया | बूलियन | आखिरी बार डाले गए अपवाद (यानी पहला रिकॉर्ड) को छोड़कर बाकी सभी के लिए सही है |
अपवाद.टाइटल | स्ट्रिंग | थ्रेड का टाइटल |
अपवाद.सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
अपवाद.उन्हें दोषी ठहराया गया है | बूलियन | अगर Crashlytics, यह तय करता है कि गड़बड़ी या क्रैश होने की वजह अपवाद है, तो नीति 'सही' होगी |
अपवाद.फ़्रेम | दोहराया गया रिकॉर्ड | अपवाद से जुड़े फ़्रेम |
अपवाद.फ़्रेम.लाइन | INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
अपवाद.फ़्रेम फ़ाइल | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
अपवाद.फ़्रेम.सिमबॉल | स्ट्रिंग | हाइड्रेटेड सिंबल या रॉ सिंबल |
अपवाद.फ़्रेम्स.ऑफ़सेट | INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है, Java अपवादों के लिए सेट नहीं |
अपवाद.फ़्रेम.पता | INT64 | बाइनरी इमेज में मौजूद पता, जिसमें कोड शामिल है. इसे Java फ़्रेम के लिए सेट नहीं किया गया है |
अपवाद.फ़्रेम्स.लाइब्रेरी | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
अपवाद.फ़्रेम्स.मालिक | स्ट्रिंग | डेवलपर, वेंडर, RUNTIME, प्लैटफ़ॉर्म या सिस्टम |
अपवाद.फ़्रेम्स.ब्लेड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला कि क्रैश या गड़बड़ी की वजह फ़्रेम हुई है |
गड़बड़ी | दोहराया गया रिकॉर्ड | सिर्फ़ Apple के ऐप्लिकेशन: साधारण गड़बड़ियां |
error.queue_name | स्ट्रिंग | वह सूची जिस पर थ्रेड चल रहा था |
error.code | INT64 | ऐप्लिकेशन के कस्टम लॉग किए गए NSError से जुड़ा गड़बड़ी का कोड |
error.title | स्ट्रिंग | थ्रेड का टाइटल |
गड़बड़ी वाला सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
error.blable | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, गड़बड़ी की वजह है या नहीं |
गड़बड़ी.फ़्रेम | दोहराया गया रिकॉर्ड | स्टैकट्रेस के फ़्रेम |
error.frames.line | INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
error.frames.file | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
error.frames.simbol | स्ट्रिंग | हाइड्रेटेड सिंबल या रॉ सिंबल |
error.frames.offset | INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है |
error.frames.address | INT64 | बाइनरी इमेज में पता, जिसमें कोड शामिल है |
error.frames.library | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
error.frames.owner | स्ट्रिंग | डेवलपर, वेंडर, RUNTIME, प्लैटफ़ॉर्म या सिस्टम |
error.frames.bla वाक्यांश | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, गड़बड़ी की वजह है या नहीं |
थ्रेड | दोहराया गया रिकॉर्ड | इवेंट के दौरान मौजूद थ्रेड |
थ्रेड.क्रैश | बूलियन | थ्रेड क्रैश हुआ है या नहीं |
Threads.Thread का नाम | स्ट्रिंग | थ्रेड का नाम |
Thread.queue_name | स्ट्रिंग | सिर्फ़ Apple के ऐप्लिकेशन: वह सूची जिस पर थ्रेड चल रहा था |
Thread.signal_name | स्ट्रिंग | उस सिग्नल का नाम जिसकी वजह से ऐप्लिकेशन क्रैश हुआ. यह सिर्फ़ क्रैश हो चुके नेटिव थ्रेड में मौजूद होता है |
थ्रेड.signal_code | स्ट्रिंग | सिग्नल का कोड जिसकी वजह से ऐप्लिकेशन क्रैश हुआ; सिर्फ़ क्रैश हो चुके नेटिव थ्रेड पर मौजूद है |
थ्रेड.crash_address | INT64 | उस सिग्नल का पता जिसकी वजह से ऐप्लिकेशन क्रैश हुआ; यह सिर्फ़ क्रैश हुए नेटिव थ्रेड पर मौजूद होता है |
थ्रेड.कोड | INT64 | सिर्फ़ Apple के ऐप्लिकेशन के लिए: ऐप्लिकेशन के कस्टम लॉग किए गए NSError का गड़बड़ी कोड |
थ्रेड.टाइटल | स्ट्रिंग | थ्रेड का टाइटल |
थ्रेड.सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
थ्रेड पर गलत दावा किया गया | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला कि क्रैश या गड़बड़ी की वजह फ़्रेम हुई है |
थ्रेड.फ़्रेम | दोहराया गया रिकॉर्ड | थ्रेड के फ़्रेम |
थ्रेड.फ़्रेम्स.लाइन | INT64 | फ़्रेम की फ़ाइल की लाइन नंबर |
थ्रेड.फ़्रेम्स.फ़ाइल | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
थ्रेड.फ़्रेम्स.सिमबॉल | स्ट्रिंग | हाइड्रेटेड सिंबल या रॉ सिंबल |
थ्रेड.फ़्रेम्स.ऑफ़सेट | INT64 | उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है |
थ्रेड.फ़्रेम्स.पता | INT64 | बाइनरी इमेज में पता, जिसमें कोड शामिल है |
थ्रेड.फ़्रेम्स.लाइब्रेरी | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
थ्रेड.फ़्रेम्स.मालिक | स्ट्रिंग | डेवलपर, वेंडर, RUNTIME, प्लैटफ़ॉर्म या सिस्टम |
थ्रेड.फ़्रेम्स.ब्लेड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, गड़बड़ी की वजह है या नहीं |
unity_metadata.unity_version | स्ट्रिंग | इस डिवाइस पर चल रहे Unity का वर्शन |
unity_metadata.debug_build | बूलियन | अगर यह एक डीबग बिल्ड है |
unity_metadata.processor_type | स्ट्रिंग | प्रोसेसर का टाइप |
unity_metadata.processor_count | INT64 | प्रोसेसर की संख्या (कोर) |
unity_metadata.processor_frequency_mhz | INT64 | मेगाहर्ट्ज़ में प्रोसेसर की फ़्रीक्वेंसी |
unity_metadata.system_memory_size_mb | INT64 | सिस्टम की मेमोरी का साइज़, एमबी में |
unity_metadata.graphics_memory_size_mb | INT64 | एमबी में ग्राफ़िक मेमोरी |
unity_metadata.graphics_device_id | INT64 | ग्राफ़िक डिवाइस का आइडेंटिफ़ायर |
unity_metadata.graphics_device_vendor_id | INT64 | ग्राफ़िक प्रोसेसर के वेंडर का आइडेंटिफ़ायर |
unity_metadata.graphics_device_name | स्ट्रिंग | ग्राफ़िक डिवाइस का नाम |
unity_metadata.graphics_device_vendor | स्ट्रिंग | ग्राफ़िक डिवाइस का वेंडर |
unity_metadata.graphics_device_version | स्ट्रिंग | ग्राफ़िक डिवाइस का वर्शन |
unity_metadata.graphics_device_type | स्ट्रिंग | ग्राफ़िक डिवाइस का टाइप |
unity_metadata.graphics_shader_level | INT64 | ग्राफ़िक्स का शेडर लेवल |
unity_metadata.graphics_render_target_count | INT64 | ग्राफ़िकल रेंडरिंग टारगेट की संख्या |
unity_metadata.graphics_copy_texture_support | स्ट्रिंग | Unity API में बताए गए ग्राफ़िक टेक्सचर को कॉपी करने की सुविधा |
unity_metadata.graphics_max_texture_size | INT64 | टेक्स्चर को रेंडर करने के लिए तय किया गया ज़्यादा से ज़्यादा साइज़ |
unity_metadata.screen_size_px | स्ट्रिंग | पिक्सल में स्क्रीन का साइज़, चौड़ाई x ऊंचाई के फ़ॉर्मैट में |
unity_metadata.screen_ भोजन_dpi | स्ट्रिंग | फ़्लोटिंग पॉइंट नंबर के तौर पर स्क्रीन का डीपीआई |
unity_metadata.screen_refresh_rate_hz | INT64 | स्क्रीन की रीफ़्रेश दर हर्ट्ज़ में |
Data Studio की मदद से, एक्सपोर्ट किए गए Crashlytics डेटा को विज़ुअलाइज़ करना
Google Data Studio, BigQuery में मौजूद आपके Crashlytics डेटासेट को पढ़ने और शेयर करने में आसान, और पूरी तरह से कस्टमाइज़ करने लायक रिपोर्ट में बदल देता है.
Data Studio का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Data Studio की क्विकस्टार्ट गाइड पढ़ें, Data Studio में आपका स्वागत है.
Crashlytics रिपोर्ट टेंप्लेट का इस्तेमाल करने का तरीका
डेटा स्टूडियो में Crashlytics के लिए एक नमूना रिपोर्ट मौजूद है, जिसमें एक्सपोर्ट किए गए Crashlytics BigQuery स्कीमा से डाइमेंशन और मेट्रिक का एक बड़ा सेट शामिल है. अगर आपने Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट चालू किया है, तो Data Studio टेंप्लेट के रीयल टाइम रुझान पेज पर इस डेटा को देखा जा सकता है. अपने ऐप्लिकेशन के रॉ क्रैश डेटा के आधार पर, तुरंत नई रिपोर्ट और विज़ुअलाइज़ेशन बनाने के लिए, इस सैंपल को टेंप्लेट के तौर पर इस्तेमाल किया जा सकता है.
- Crashlytics Data Studio का डैशबोर्ड टेंप्लेट खोलें.
- सबसे ऊपर दाएं कोने में, टेंप्लेट का इस्तेमाल करें पर क्लिक करें.
- नया डेटा सोर्स ड्रॉपडाउन में, नया डेटा सोर्स बनाएं चुनें.
- BigQuery कार्ड पर चुनें पर क्लिक करें.
- वह टेबल चुनें जिसमें एक्सपोर्ट किया गया Crashlytics का डेटा शामिल है. इसके लिए, मेरे प्रोजेक्ट > [your-project-name] > firebase_crashlytics > [your-table-name] को चुनें. बैच टेबल चुनने के लिए हमेशा उपलब्ध रहती है. अगर Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट चालू है, तो इसकी रीयलटाइम टेबल चुनी जा सकती है.
- कॉन्फ़िगरेशन में जाकर, Crashlytics टेंप्लेट लेवल को डिफ़ॉल्ट पर सेट करें.
- नया डेटा सोर्स बनाने के लिए, कनेक्ट करें पर क्लिक करें.
- Crashlytics टेंप्लेट पर वापस जाने के लिए, रिपोर्ट में जोड़ें पर क्लिक करें.
- आखिर में, Crashlytics Data Studio के डैशबोर्ड टेंप्लेट की अपनी कॉपी बनाने के लिए, रिपोर्ट बनाएं पर क्लिक करें.