बेहतर विश्लेषण के लिए, Crashlytics से मिले डेटा को BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery एसक्यूएल का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है और उसे किसी दूसरी क्लाउड सेवा में एक्सपोर्ट किया जा सकता है. साथ ही, Google Data Studio में विज़ुअलाइज़ेशन और कस्टम डैशबोर्ड के लिए इसका इस्तेमाल किया जा सकता है.
BigQuery Export चालू करें
- Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
- BigQuery कार्ड में, लिंक करें पर क्लिक करें.
- BigQuery को चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
प्रोजेक्ट को BigQuery से लिंक करने पर:
- Firebase आपके Firebase प्रोजेक्ट से 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
पर स्ट्रीम किया जाएगा.
टेबल की हर पंक्ति में, ऐप्लिकेशन में होने वाले किसी इवेंट को दिखाया जाता है. इसमें, ऐप्लिकेशन में क्रैश होने की समस्याएं, साधारण गड़बड़ियां, और ANRs शामिल होते हैं.
Crashlytics से BigQuery स्ट्रीमिंग एक्सपोर्ट चालू करें
BigQueryStreaming की मदद से, Crashlytics से जुड़ा डेटा रीयल टाइम में स्ट्रीम किया जा सकता है. इसका इस्तेमाल ऐसे किसी भी काम के लिए किया जा सकता है जिसके लिए लाइव डेटा की ज़रूरत होती है. जैसे, लाइव डैशबोर्ड में जानकारी देना, रोल आउट को लाइव देखना या ऐप्लिकेशन की उन समस्याओं को मॉनिटर करना जिनसे अलर्ट और कस्टम वर्कफ़्लो ट्रिगर होते हैं.
BigQuery सैंडबॉक्स के लिए, Crashlytics से BigQuery स्ट्रीमिंग एक्सपोर्ट की सुविधा उपलब्ध नहीं है.
Crashlytics से BigQuery स्ट्रीमिंग एक्सपोर्ट को चालू करने पर, बैच टेबल के साथ आपको एक रीयल टाइम टेबल दिखेगी. यहां टेबल के बीच के अंतर के बारे में जानकारी दी गई है:
बैच टेबल | रीयल टाइम टेबल |
---|---|
|
|
बैच टेबल, लंबे समय तक विश्लेषण करने और समय के साथ रुझानों की पहचान करने के लिए सबसे सही है क्योंकि इवेंट लिखने से पहले हम उन्हें लंबे समय तक सेव करके रखते हैं. साथ ही, इन्हें टेबल में 30 दिनों तक बैकफ़िल किया जा सकता है. जब हम आपकी रीयल टाइम टेबल में डेटा लिखते हैं, तो हम तुरंत उसे BigQuery में लिखते हैं. इसलिए, यह लाइव डैशबोर्ड और कस्टम सूचनाओं के लिए सही होता है. दोनों का फ़ायदा पाने के लिए इन दोनों टेबल को स्टिचिंग क्वेरी के साथ जोड़ा जा सकता है. यहां दी गई क्वेरी का उदाहरण 9 देखें.
डिफ़ॉल्ट रूप से, रीयल टाइम टेबल में पार्टिशन की समयसीमा 30 दिनों की होती है. इसमें बदलाव करने का तरीका जानने के लिए, सेगमेंट के खत्म होने की तारीख अपडेट करना लेख पढ़ें.
Crashlytics से BigQuery स्ट्रीमिंग की सुविधा चालू करें
स्ट्रीमिंग की सुविधा चालू करने के लिए, BigQuery के इंटिग्रेशन पेज के Crashlytics सेक्शन पर जाएं और स्ट्रीमिंग शामिल करें चेकबॉक्स को चुनें.
Data Studio टेंप्लेट
अपने Data Studio टेंप्लेट में रीयल टाइम डेटा को चालू करने के लिए, Data Studio में एक्सपोर्ट किए गए Crashlytics डेटा को विज़ुअलाइज़ करना में दिए गए निर्देशों का पालन करें.
व्यू
BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, उदाहरण के तौर पर दी गई क्वेरी को व्यू में बदला जा सकता है. ज़्यादा जानकारी के लिए, व्यू बनाने का तरीका देखें.
एक्सपोर्ट किए गए डेटा का क्या किया जा सकता है?
BigQuery एक्सपोर्ट में क्रैश का रॉ डेटा होता है. इसमें डिवाइस का टाइप, ऑपरेटिंग सिस्टम, अपवाद (Android ऐप्लिकेशन) या गड़बड़ियां (Apple ऐप्लिकेशन) जैसी गड़बड़ियां, Crashlytics लॉग, और अन्य डेटा शामिल है.
BigQuery में Firebase Crashlytics डेटा के साथ काम करना
नीचे दिए गए उदाहरणों में बताया गया है कि Crashlytics से मिले डेटा पर की जाने वाली क्वेरी चलाई जा सकती हैं. ये क्वेरी ऐसी रिपोर्ट जनरेट करती हैं जो Crashlytics डैशबोर्ड में उपलब्ध नहीं हैं.
Crashlytics से जुड़ी क्वेरी के उदाहरण
यहां दिए गए उदाहरणों में ऐसी रिपोर्ट जनरेट करने का तरीका बताया गया है जो क्रैश इवेंट डेटा को आसानी से समझ में आने वाली खास जानकारी में इकट्ठा करती हैं.
उदाहरण 1: दिन के हिसाब से क्रैश की संख्या
ज़्यादा से ज़्यादा गड़बड़ियां ठीक करने के बाद, एक लीड डेवलपर को लगता है कि उसकी टीम अब फ़ोटो-शेयर करने वाला नया ऐप्लिकेशन लॉन्च करने के लिए तैयार है. ऐसा करने से पहले, उसे यह देखना होगा कि पिछले महीने में हर दिन क्रैश हो रहा है या नहीं. इससे यह पक्का हो सकेगा कि उसकी बग बैश ने ऐप्लिकेशन को समय के साथ और स्थिर बनाया है:
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;
तीसरा उदाहरण: क्रैश होने वाले टॉप 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;
चौथा उदाहरण: कस्टम कुंजी के हिसाब से फ़िल्टर करना
एक गेम डेवलपर यह जानना चाहता है कि उसके गेम में किस लेवल पर सबसे ज़्यादा क्रैश
होते हैं. वे उस आंकड़े को ट्रैक करने के लिए, पसंद के मुताबिक 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
पांचवां उदाहरण: यूज़र आईडी निकालना
डेवलपर के पास एक ऐसा ऐप्लिकेशन है जिसे रिलीज़ होने से पहले इस्तेमाल किया जा सकता है. उनके ज़्यादातर उपयोगकर्ताओं को यह सुविधा पसंद आई, लेकिन तीन लोगों को ऐप्लिकेशन क्रैश होने की संख्या बहुत ज़्यादा नहीं हुई. समस्या की तह तक जाने के लिए, वे एक क्वेरी लिखते हैं. इसमें उन उपयोगकर्ताओं के यूज़र आईडी का इस्तेमाल करके, उनके सभी क्रैश इवेंट के बारे में जानकारी दी जाती है:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
छठा उदाहरण: उन सभी उपयोगकर्ताओं को ढूंढना जिन्हें क्रैश होने से जुड़ी किसी खास समस्या का सामना करना पड़ रहा है
एक डेवलपर ने बीटा टेस्टर के ग्रुप के लिए, एक गंभीर गड़बड़ी रिलीज़ की है. हमारी टीम क्रैश से जुड़ी खास समस्या के आईडी की पहचान करने के लिए, ऊपर दिए गए दूसरे उदाहरण में दी गई क्वेरी का इस्तेमाल कर पाई. अब वे इस क्रैश से प्रभावित ऐप्लिकेशन उपयोगकर्ताओं की सूची निकालने के लिए एक क्वेरी चलाना चाहते हैं:
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");
एक ऐसी क्वेरी लिखें जो यूज़र आईडी फ़ील्ड का इस्तेमाल करके Google Analytics के BigQuery डेटा सेट में Crashlytics से, 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: आज तक की पांच मुख्य समस्याएं
Crashlytics से 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 से अब तक की मुख्य पांच समस्याएं
इसके लिए, Crashlytics से 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 हाल के इवेंट (क्रैश, गंभीर गड़बड़ी, और ANR वाली गड़बड़ियां) एक्सपोर्ट करता है. इनमें लिंक से दो दिन पहले के इवेंट भी शामिल हैं. साथ ही, 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 | बूलियन | ऐप्लिकेशन क्रैश हो गया है या नहीं |
गड़बड़ी किस तरह की है | स्ट्रिंग | इवेंट का गड़बड़ी टाइप (FATAL, NON_FATAL, ANR) |
समस्या का_आईडी | स्ट्रिंग | इवेंट से जुड़ी समस्या |
वैरिएंट_आईडी | स्ट्रिंग | इस इवेंट से जुड़ा समस्या का वैरिएंट ध्यान दें कि सभी इवेंट में समस्या का वैरिएंट नहीं होता. |
event_timestamp | टाइमस्टैंप | इवेंट कब हुआ |
device | रिकॉर्ड | वह डिवाइस जिस पर इवेंट हुआ |
device.manufacturer | स्ट्रिंग | डिवाइस बनाने वाली कंपनी |
device.model | स्ट्रिंग | डिवाइस का मॉडल |
device.आर्किटेक्चर | स्ट्रिंग | X86_32, X86_64, ARMV7, ARM64, ARMV7S या ARMV7K |
मेमोरी | रिकॉर्ड | डिवाइस की मेमोरी की स्थिति |
मेमोरी.used | INT64 | इस्तेमाल की गई मेमोरी के बाइट |
मेमोरी.free | INT64 | शेष मेमोरी के बाइट |
स्टोर करने की जगह | रिकॉर्ड | डिवाइस का स्थायी स्टोरेज |
Storage.used | INT64 | इस्तेमाल किए गए स्टोरेज के बाइट |
Storage.free | INT64 | कितने बाइट स्टोरेज बचा है |
ऑपरेटिंग_सिस्टम | रिकॉर्ड | डिवाइस पर मौजूद ओएस की जानकारी |
ऑपरेटिंग सिस्टम.display_version | स्ट्रिंग | डिवाइस पर ओएस का वर्शन |
operating_system.name | स्ट्रिंग | डिवाइस पर ओएस का नाम |
ऑपरेटिंग_सिस्टम.मॉडिफ़िकेशन_स्टेटस | स्ट्रिंग | डिवाइस में बदलाव किया गया है या नहीं, जैसे कि जेल से ब्रेक लिया गया/रूट किया गया (बदलाव किया गया है या बिना बदलाव किया गया है) |
ऑपरेटिंग सिस्टम प्रकार | स्ट्रिंग | डिवाइस पर चल रहा ओएस किस तरह का है (उदाहरण के लिए, IOS, MACOS); सिर्फ़ Apple प्लैटफ़ॉर्म के ऐप्लिकेशन के लिए उपलब्ध है |
ऑपरेटिंग सिस्टम.device_type | स्ट्रिंग | डिवाइस किस तरह का है, जैसे कि मोबाइल, टैबलेट, टीवी वगैरह. इसे "डिवाइस कैटगरी" भी कहा जाता है |
ऐप्लिकेशन | रिकॉर्ड | वह ऐप्लिकेशन जिसने इवेंट जनरेट किया |
ऐप्लिकेशन.build_version | स्ट्रिंग | ऐप्लिकेशन का बिल्ड वर्शन |
ऐप्लिकेशन.display_version | स्ट्रिंग | |
user | रिकॉर्ड | ज़रूरी नहीं: ऐप्लिकेशन के उपयोगकर्ता के बारे में इकट्ठा की गई जानकारी |
user.name | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता का नाम |
user.email | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता का ईमेल पता |
user.id | स्ट्रिंग | ज़रूरी नहीं: उपयोगकर्ता से जुड़ा ऐप्लिकेशन के लिए खास आईडी |
कस्टम कुंजी | दोहराया गया रिकॉर्ड | डेवलपर के तय किए गए की-वैल्यू पेयर |
custom_keys.key | स्ट्रिंग | डेवलपर की ओर से तय की गई कुंजी |
custom_keys.value | स्ट्रिंग | डेवलपर का तय किया गया मान |
इंस्टॉलेशन_uuid | स्ट्रिंग | ऐसा आईडी जो किसी खास ऐप्लिकेशन और डिवाइस इंस्टॉल किए जाने की पहचान करता है |
Crashlytics_SDK_versions | स्ट्रिंग | Crashlytics SDK टूल का वर्शन, जिसने इवेंट जनरेट किया |
ऐप्लिकेशन ओरिएंटेशन | स्ट्रिंग | PORTRAIT, LANDSCAPE, FACE_UP या FACE_DOWN |
डिवाइस_ओरिएंटेशन | स्ट्रिंग | PORTRAIT, LANDSCAPE, FACE_UP या FACE_DOWN |
प्रोसेस_स्टेटस | स्ट्रिंग | बैकग्राउंड या फ़ोरग्राउंड |
लॉग | दोहराया गया रिकॉर्ड | यह सुविधा चालू होने पर, Crashlytics लॉगर से जनरेट किए गए, टाइमस्टैंप वाले लॉग मैसेज जनरेट किए जाते हैं |
लॉग्स.टाइमस् टैंप | टाइमस्टैंप | लॉग कब बनाया गया |
लॉग्स.मैसेज | स्ट्रिंग | लॉग किया गया मैसेज |
ब्रेडक्रंब | दोहराया गया रिकॉर्ड | 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 | स्ट्रिंग | डेवलपर, विक्रेता, रनटाइम, प्लैटफ़ॉर्म या सिस्टम |
blame_frame.blad | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, क्रैश या गड़बड़ी की वजह है |
अपवाद | दोहराया गया रिकॉर्ड | सिर्फ़ Android के लिए: इस इवेंट के दौरान हुए अपवाद. नेस्ट किए गए अपवाद क्रम से लगे उलटे क्रम में पेश किए जाते हैं (पढ़ें: आखिरी रिकॉर्ड, पहली बार दिखाया गया अपवाद है) |
अपवाद.टाइप | स्ट्रिंग | अपवाद का टाइप, जैसे कि java.lang.legalState दूसरों के एक्सटेंशन |
अपवाद.exception_message | स्ट्रिंग | अपवाद से जुड़ा मैसेज |
अपवाद.nested | बूलियन | आखिरी रिकॉर्ड वाले अपवाद (यानी पहले रिकॉर्ड) को छोड़कर बाकी सभी के लिए सही |
अपवाद.title | स्ट्रिंग | थ्रेड का टाइटल |
अपवाद.सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
अपवाद.ब्लेम | बूलियन | अगर Crashlytics से पता चलता है कि गड़बड़ी या क्रैश के लिए, अपवाद ज़िम्मेदार है, तो 'सही' होगा |
अपवाद.frames | दोहराया गया रिकॉर्ड | अपवाद से जुड़े फ़्रेम |
अपवाद.frames.line | INT64 | फ़्रेम की फ़ाइल का लाइन नंबर |
अपवाद.frames.file | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
अपवाद.frames.सिंबोल | स्ट्रिंग | हाइड्रेट किया गया सिंबल या रॉ सिंबल, अगर वह पानी पीने लायक नहीं है |
अपवाद.frames.offset | INT64 | कोड वाली बाइनरी इमेज में बाइट ऑफ़सेट, Java अपवादों के लिए सेट नहीं करें |
अपवाद.frames.address | INT64 | बाइनरी इमेज में मौजूद पता, जिसमें कोड शामिल है. इसे Java फ़्रेम के लिए सेट नहीं किया गया |
अपवाद.frames.library | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
अपवाद.frames.owner | स्ट्रिंग | डेवलपर, विक्रेता, रनटाइम, प्लैटफ़ॉर्म या सिस्टम |
अपवाद.frames.blamed | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, क्रैश या गड़बड़ी की वजह है |
गड़बड़ी | दोहराया गया रिकॉर्ड | सिर्फ़ Apple के ऐप्लिकेशन: गंभीर गड़बड़ियां नहीं |
गड़बड़ी.queue_name | स्ट्रिंग | वह सूची जिस पर थ्रेड चल रही थी |
गड़बड़ी का कोड | INT64 | ऐप्लिकेशन में, पसंद के मुताबिक लॉग किए गए NSError से जुड़ा गड़बड़ी कोड |
गड़बड़ी का टाइटल | स्ट्रिंग | थ्रेड का टाइटल |
गड़बड़ी का सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
गड़बड़ी.ब्लेड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम ही गड़बड़ी की वजह है |
गड़बड़ी वाले फ़्रेम | दोहराया गया रिकॉर्ड | स्टैकट्रेस के फ़्रेम |
service.frames.line | INT64 | फ़्रेम की फ़ाइल का लाइन नंबर |
गड़बड़ी.frames.file | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
privacy.frames.सिंबोल | स्ट्रिंग | हाइड्रेट किया गया सिंबल या रॉ सिंबल, अगर वह पानी पीने लायक नहीं है |
er.frames.offset | INT64 | कोड वाली बाइनरी इमेज में बाइट ऑफ़सेट |
गड़बड़ी.frames.address | INT64 | बाइनरी इमेज में मौजूद पता, जिसमें कोड शामिल है |
गड़बड़ी.frames.library | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
गड़बड़ी.frames.owner | स्ट्रिंग | डेवलपर, विक्रेता, रनटाइम, प्लैटफ़ॉर्म या सिस्टम |
गड़बड़ी.frames.blamed | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम ही गड़बड़ी की वजह है |
थ्रेड | दोहराया गया रिकॉर्ड | इवेंट के समय मौजूद थ्रेड |
थ्रेड.क्रैश किए गए | बूलियन | थ्रेड क्रैश हो गया है या नहीं |
थ्रेड.thread_name | स्ट्रिंग | थ्रेड का नाम |
थ्रेड.queue_name | स्ट्रिंग | सिर्फ़ Apple ऐप्लिकेशन: वह सूची जिस पर थ्रेड चल रही थी |
थ्रेड.सिग्नल नाम | स्ट्रिंग | उस सिग्नल का नाम जिसकी वजह से ऐप्लिकेशन क्रैश हुआ. यह सिर्फ़ क्रैश हुए नेटिव थ्रेड पर मौजूद होता है |
थ्रेड.signal_code | स्ट्रिंग | उस सिग्नल का कोड जिसकी वजह से ऐप्लिकेशन क्रैश हुआ यह सिर्फ़ क्रैश हुए नेटिव थ्रेड पर मौजूद होता है |
थ्रेड.क्रैश का पता | INT64 | उस सिग्नल का पता जिसकी वजह से ऐप्लिकेशन क्रैश हुआ यह सिर्फ़ क्रैश हुए नेटिव थ्रेड में मौजूद होता है |
थ्रेड.कोड | INT64 | सिर्फ़ Apple ऐप्लिकेशन: ऐप्लिकेशन की पसंद के मुताबिक लॉग किए गए NSError का गड़बड़ी कोड |
थ्रेड.टाइटल | स्ट्रिंग | थ्रेड का टाइटल |
थ्रेड.सबटाइटल | स्ट्रिंग | थ्रेड का सबटाइटल |
थ्रेड.ब्लेम्ड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम, क्रैश या गड़बड़ी की वजह है |
थ्रेड.फ़्रेम | दोहराया गया रिकॉर्ड | थ्रेड के फ़्रेम |
थ्रेड.फ़्रेम्स.लाइन | INT64 | फ़्रेम की फ़ाइल का लाइन नंबर |
थ्रेड.फ़्रेम्स.फ़ाइल | स्ट्रिंग | फ़्रेम फ़ाइल का नाम |
थ्रेड.फ़्रेम्स.सिंबल | स्ट्रिंग | हाइड्रेटेड सिंबल या उसे हाइड्रेट करने वाला सिंबल |
parameter.frames.offset | INT64 | कोड वाली बाइनरी इमेज में बाइट ऑफ़सेट |
थ्रेड.फ़्रेम्स.पता | INT64 | बाइनरी इमेज में मौजूद पता, जिसमें कोड शामिल है |
थ्रेड.फ़्रेम्स.लाइब्रेरी | स्ट्रिंग | उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है |
parameter.frames.owner | स्ट्रिंग | डेवलपर, विक्रेता, रनटाइम, प्लैटफ़ॉर्म या सिस्टम |
थ्रेड.फ़्रेम्स.ब्लेम्ड | बूलियन | क्या Crashlytics के विश्लेषण से यह पता चला है कि यह फ़्रेम ही गड़बड़ी की वजह है |
unity_metadata.unity_version | स्ट्रिंग | इस डिवाइस पर चल रहा Unity का वर्शन |
यूनिटी_metadata.debug_build | बूलियन | अगर यह एक डीबग बिल्ड है |
यूनिटी_metadata.processor_type | स्ट्रिंग | प्रोसेसर किस तरह का है |
campaigny_metadata.processor_count | INT64 | प्रोसेसर की संख्या (कोर) |
यूनिटी_metadata.processor_frequency_mhz | INT64 | मेगाहर्ट्ज़ में प्रोसेसर की फ़्रीक्वेंसी |
campaigny_metadata.system_memory_size_mb | INT64 | Mb में सिस्टम की मेमोरी का आकार |
यूनिटी_metadata.graphics_memory_size_mb | INT64 | एमबी में ग्राफ़िक मेमोरी |
यूनिटी_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 | स्ट्रिंग | ग्राफ़िक्स डिवाइस का वर्शन |
यूनिटी_metadata.graphics_device_type | स्ट्रिंग | ग्राफ़िक्स डिवाइस का टाइप |
यूनिटी_metadata.graphics_shader_level | INT64 | ग्राफ़िक्स का शेडर लेवल |
unity_metadata.graphics_रेंडर_target_count | INT64 | ग्राफ़िकल रेंडरिंग टारगेट की संख्या |
यूनिटी_metadata.graphics_copy_texture_support | स्ट्रिंग | Unity API में बताए गए ग्राफ़िक टेक्सचर को कॉपी करने के लिए सहायता |
यूनिटी_मेटाडेटा.ग्राफ़िकs_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 रिपोर्ट टेंप्लेट का इस्तेमाल करना
Data Studio में Crashlytics की एक सैंपल रिपोर्ट मौजूद है. इसमें, एक्सपोर्ट किए गए Crashlytics BigQuery स्कीमा से मिले डाइमेंशन और मेट्रिक की पूरी जानकारी दी गई है. अगर आपने Crashlytics से BigQuery स्ट्रीमिंग एक्सपोर्ट को चालू किया है, तो इस डेटा को Data Studio टेंप्लेट के रीयल टाइम रुझान पेज पर देखा जा सकता है. इस सैंपल का इस्तेमाल, टेंप्लेट के तौर पर किया जा सकता है. इससे, अपने ऐप्लिकेशन के रॉ क्रैश डेटा के आधार पर तुरंत नई रिपोर्ट और विज़ुअलाइज़ेशन बनाए जा सकते हैं.
- Crashlytics Data Studio डैशबोर्ड का टेंप्लेट खोलें.
- सबसे ऊपर दाएं कोने में मौजूद, टेंप्लेट का इस्तेमाल करें पर क्लिक करें.
- नया डेटा सोर्स ड्रॉपडाउन में, नया डेटा सोर्स बनाएं चुनें.
- BigQuery कार्ड पर चुनें पर क्लिक करें.
- मेरे प्रोजेक्ट > [your-project-name] > firebase_crashlytics > [your-table-name] को चुनकर, Crashlytics का एक्सपोर्ट किया गया डेटा चुनें. आपकी बैच टेबल हमेशा उपलब्ध होती है. अगर Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट चालू है, तो आपके पास रीयल टाइम टेबल चुनने का विकल्प होता है.
- कॉन्फ़िगरेशन में, Crashlytics टेंप्लेट लेवल को डिफ़ॉल्ट पर सेट करें.
- नया डेटा सोर्स बनाने के लिए, कनेक्ट करें पर क्लिक करें.
- Crashlytics टेंप्लेट पर वापस जाने के लिए, रिपोर्ट में जोड़ें पर क्लिक करें.
- आखिर में, Crashlytics डेटा स्टूडियो डैशबोर्ड टेंप्लेट की कॉपी बनाने के लिए, रिपोर्ट बनाएं पर क्लिक करें.