Firebase Crashlytics डेटा को BigQuery में एक्सपोर्ट करना

बेहतर विश्लेषण के लिए, Crashlytics से मिले डेटा को BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery एसक्यूएल का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है और उसे किसी दूसरी क्लाउड सेवा में एक्सपोर्ट किया जा सकता है. साथ ही, Google Data Studio में विज़ुअलाइज़ेशन और कस्टम डैशबोर्ड के लिए इसका इस्तेमाल किया जा सकता है.

BigQuery Export चालू करें

  1. Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
  2. BigQuery कार्ड में, लिंक करें पर क्लिक करें.
  3. 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 स्ट्रीमिंग एक्सपोर्ट को चालू करने पर, बैच टेबल के साथ आपको एक रीयल टाइम टेबल दिखेगी. यहां टेबल के बीच के अंतर के बारे में जानकारी दी गई है:

बैच टेबल रीयल टाइम टेबल
  • डेटा रोज़ एक बार एक्सपोर्ट किया जाता है
  • BigQuery में बैच लिखने से पहले, इवेंट को लंबे समय तक सेव किया जाता है
  • 30 दिन पहले तक, बैकफ़िल किया जा सकता है
  • रीयल टाइम में एक्सपोर्ट किया गया डेटा
  • कोई बैकफ़िल उपलब्ध नहीं है

बैच टेबल, लंबे समय तक विश्लेषण करने और समय के साथ रुझानों की पहचान करने के लिए सबसे सही है क्योंकि इवेंट लिखने से पहले हम उन्हें लंबे समय तक सेव करके रखते हैं. साथ ही, इन्हें टेबल में 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: ऐसे उपयोगकर्ताओं की संख्या जिन पर क्रैश की समस्या का असर पड़ा है. यह संख्या, देश के हिसाब से अलग-अलग होती है

अब टीम को नई रिलीज़ के रोल आउट के दौरान एक गंभीर गड़बड़ी का पता चला है. क्रैश से जुड़ी खास समस्या के आईडी की पहचान करने के लिए, उन्होंने ऊपर दिए गए दूसरे उदाहरण में दी गई क्वेरी का इस्तेमाल किया. टीम अब यह देखना चाहेगी कि क्या यह क्रैश दुनिया भर के अलग-अलग देशों के उपयोगकर्ताओं तक पहुंच पाया है.

यह क्वेरी लिखने के लिए, टीम को यह करना होगा:

  1. Google Analytics के लिए BigQuery Export चालू करें. BigQuery में प्रोजेक्ट डेटा एक्सपोर्ट करना लेख पढ़ें.

  2. यूज़र आईडी को 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");
    
  3. एक ऐसी क्वेरी लिखें जो यूज़र आईडी फ़ील्ड का इस्तेमाल करके 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 टेंप्लेट के रीयल टाइम रुझान पेज पर देखा जा सकता है. इस सैंपल का इस्तेमाल, टेंप्लेट के तौर पर किया जा सकता है. इससे, अपने ऐप्लिकेशन के रॉ क्रैश डेटा के आधार पर तुरंत नई रिपोर्ट और विज़ुअलाइज़ेशन बनाए जा सकते हैं.

  1. Crashlytics Data Studio डैशबोर्ड का टेंप्लेट खोलें.
  2. सबसे ऊपर दाएं कोने में मौजूद, टेंप्लेट का इस्तेमाल करें पर क्लिक करें.
  3. नया डेटा सोर्स ड्रॉपडाउन में, नया डेटा सोर्स बनाएं चुनें.
  4. BigQuery कार्ड पर चुनें पर क्लिक करें.
  5. मेरे प्रोजेक्ट > [your-project-name] > firebase_crashlytics > [your-table-name] को चुनकर, Crashlytics का एक्सपोर्ट किया गया डेटा चुनें. आपकी बैच टेबल हमेशा उपलब्ध होती है. अगर Crashlytics BigQuery स्ट्रीमिंग एक्सपोर्ट चालू है, तो आपके पास रीयल टाइम टेबल चुनने का विकल्प होता है.
  6. कॉन्फ़िगरेशन में, Crashlytics टेंप्लेट लेवल को डिफ़ॉल्ट पर सेट करें.
  7. नया डेटा सोर्स बनाने के लिए, कनेक्ट करें पर क्लिक करें.
  8. Crashlytics टेंप्लेट पर वापस जाने के लिए, रिपोर्ट में जोड़ें पर क्लिक करें.
  9. आखिर में, Crashlytics डेटा स्टूडियो डैशबोर्ड टेंप्लेट की कॉपी बनाने के लिए, रिपोर्ट बनाएं पर क्लिक करें.