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

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

BigQuery Export चालू करें

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

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

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

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

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

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

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