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

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

BigQuery में एक्सपोर्ट करने की सुविधा चालू करना

  1. Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
  2. BigQuery कार्ड में, लिंक करें पर क्लिक करें.
  3. BigQuery में एक्सपोर्ट करने की सुविधा चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.

यहां बताया गया है कि BigQuery में एक्सपोर्ट करने की सुविधा चालू करने पर क्या होता है:

BigQuery पर एक्सपोर्ट करने की सुविधा बंद करने के लिए, Firebase कंसोल में जाकर, अपने प्रोजेक्ट को अनलिंक करें.

BigQuery में कौनसा डेटा एक्सपोर्ट किया जाता है?

Firebase Crashlytics के डेटा को BigQuery के डेटासेट में एक्सपोर्ट किया गया है firebase_crashlytics. डिफ़ॉल्ट रूप से, इसके अंदर अलग-अलग टेबल बनाई जाएंगी आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए, Crashlytics डेटासेट. Firebase, टेबल के नाम ऐप्लिकेशन के आइडेंटिफ़ायर के आधार पर तय करता है. इसमें पीरियड को अंडरस्कोर में बदल दिया जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ दिया जाता है.

उदाहरण के लिए, com.google.test पैकेज नाम वाले Android ऐप्लिकेशन का डेटा com_google_test_ANDROID नाम की टेबल में होगा. यह बैच टेबल अपडेट की गई है दिन में एक बार. अगर Crashlytics की स्ट्रीमिंग एक्सपोर्ट चालू की जाती है, तो BigQuery, इसके बाद Crashlytics का डेटा भी रीयलटाइम में स्ट्रीम किया जाएगा com_google_test_ANDROID_REALTIME नाम की टेबल में.

अपने प्रोजेक्ट के खास ऐप्लिकेशन को ऐक्सेस करने के लिए.

टेबल की हर लाइन, ऐप्लिकेशन में हुए किसी इवेंट के बारे में बताती है. जैसे, ऐप्लिकेशन बंद होने की समस्याएं, गड़बड़ियां, और ANR.

Crashlytics BigQuery में स्ट्रीमिंग एक्सपोर्ट

BigQuery स्ट्रीमिंग की मदद से, अपने Crashlytics डेटा को रीयल टाइम में स्ट्रीम किया जा सकता है. इसका इस्तेमाल, लाइव डेटा की ज़रूरत वाले किसी भी काम के लिए किया जा सकता है. जैसे, लाइव डैशबोर्ड में जानकारी दिखाना, रोल आउट को लाइव देखना या चेतावनियों और कस्टम वर्कफ़्लो को ट्रिगर करने वाली ऐप्लिकेशन की समस्याओं को मॉनिटर करना.

अगर Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery में चालू किया जाता है, तो बैच टेबल के अलावा आपके पास एक रीयलटाइम टेबल भी होगी. यहां टेबल के बीच के अंतर के बारे में बताया गया है:

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

बैच टेबल, लंबे समय तक के विश्लेषण और समय के साथ रुझानों की पहचान करने के लिए बेहतरीन है. ऐसा इसलिए, क्योंकि हम इवेंट को लिखने से पहले उन्हें सुरक्षित तरीके से सेव करते हैं. साथ ही, इन्हें 30 दिनों तक टेबल में बैकफ़िल किया जा सकता है. जब हम आपकी रीयल टाइम टेबल में डेटा डालते हैं, तो हम उसे तुरंत BigQuery में डाल देते हैं. इसलिए, यह लाइव डैशबोर्ड और कस्टम सूचनाओं के लिए सबसे सही है. ये दोनों टेबल एक स्टिचिंग क्वेरी के साथ संयोजित किया जाता है. दोनों के फ़ायदे.

डिफ़ॉल्ट रूप से, रीयल टाइम टेबल में, सेगमेंट की समयसीमा 30 दिन की होती है. यहां की यात्रा पर हूं इसे संशोधित करने का तरीका जानें, देखें सेगमेंट की समयसीमा खत्म होने की तारीख सेट करना BigQuery दस्तावेज़ में पढ़ें.

Crashlytics से BigQuery पर स्ट्रीमिंग एक्सपोर्ट करने की सुविधा चालू करना

  1. Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं.
  2. BigQuery कार्ड में, मैनेज करें पर क्लिक करें.
  3. स्ट्रीमिंग शामिल करें चेकबॉक्स को चुनें.

इस कार्रवाई से आपके लिंक किए गए सभी ऐप्लिकेशन के लिए स्ट्रीमिंग चालू हो जाएगी.

एक्सपोर्ट किए गए डेटा का इस्तेमाल करके क्या किया जा सकता है?

BigQuery को एक्सपोर्ट किए जाने वाले डेटा में, क्रैश डेटा शामिल नहीं होता. जैसे, डिवाइस टाइप, अपवाद (Android ऐप्लिकेशन) या गड़बड़ियां (Apple ऐप्लिकेशन) और Crashlytics लॉग और अन्य डेटा.

देखें कि Crashlytics का कौनसा डेटा एक्सपोर्ट किया गया है और उसकी टेबल क्या है स्कीमा के बाद इस पेज पर जाएं.

Data Studio टेंप्लेट का इस्तेमाल करना

अपने Data Studio टेंप्लेट में रीयलटाइम डेटा चालू करने के लिए, इसमें निर्देश एक्सपोर्ट किए गए Crashlytics के डेटा को Data Studio की मदद से विज़ुअलाइज़ करना.

व्यू बनाना

BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, क्वेरी को व्यू में बदला जा सकता है. ज़्यादा जानकारी के लिए, BigQuery दस्तावेज़ में व्यू बनाना देखें.

क्वेरी चलाएं

यहां दिए गए उदाहरणों में ऐसी क्वेरी दिखाई गई हैं जिन्हें अपने Crashlytics डेटा पर चलाया जा सकता है. इससे, क्रैश इवेंट के डेटा को आसानी से समझी जा सकने वाली खास जानकारी में एग्रीगेट करने वाली रिपोर्ट जनरेट की जा सकती हैं. चूंकि इस प्रकार की रिपोर्ट उपलब्ध नहीं होती हैं Firebase कंसोल के Crashlytics डैशबोर्ड में, ये ऐड-ऑन जोड़कर काम कर सकते हैं क्रैश डेटा का विश्लेषण और समझ.

पहला उदाहरण: दिन के हिसाब से क्रैश

ज़्यादा से ज़्यादा गड़बड़ियों को ठीक करने के बाद, आपको लगता है कि आपकी टीम अब फ़ोटो शेयर करने वाला नया ऐप्लिकेशन लॉन्च करने के लिए तैयार है. हालांकि, ऐसा करने से पहले आपको पिछले महीने के लिए, हर दिन ऐप्लिकेशन के क्रैश होने की संख्या देखनी है. इससे आपको यह पक्का करने में मदद मिलेगी कि गड़बड़ियों को ठीक करने की प्रोसेस के बाद, ऐप्लिकेशन ज़्यादा बेहतर तरीके से काम कर रहा है या नहीं.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID के बजाय, उसके बंडल आईडी और IOS का इस्तेमाल करें.

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

दूसरा उदाहरण: ऐप्लिकेशन के सबसे ज़्यादा क्रैश होने की समस्या का पता लगाना

प्रोडक्शन प्लान को सही तरीके से प्राथमिकता देने के लिए, आपको सबसे लोकप्रिय 10 गेम चुनने होंगे आपके ऐप्लिकेशन में व्यापक रूप से बंद हो जाता है. आपने ऐसी क्वेरी बनाई है जो काम की है डेटा के पॉइंट.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID के बजाय, उसके बंडल आईडी और IOS का इस्तेमाल करें.

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

उदाहरण 3: क्रैश होने वाले टॉप 10 डिवाइस

पतझड़ नया फ़ोन सीज़न है! आपकी कंपनी को पता है कि इसका मतलब यह भी है कि डिवाइस से जुड़ी नई समस्याओं का मौसम शुरू हो गया है. खास तौर पर, Android के लिए. डिवाइसों के साथ काम करने से जुड़ी समस्याओं से पहले से निपटने के लिए, आपने एक क्वेरी बनाई है. इससे उन 10 डिवाइसों की पहचान की जा सकती है जिन पर पिछले हफ़्ते (168 घंटे) में सबसे ज़्यादा क्रैश हुए.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID के बजाय, उसके बंडल आईडी और IOS का इस्तेमाल करें.

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

चौथा उदाहरण: कस्टम बटन के हिसाब से फ़िल्टर करना

आप एक गेम डेवलपर हैं और आपको यह जानना है कि आपके गेम के किस लेवल में सबसे ज़्यादा क्रैश आते हैं.

उस आंकड़े को ट्रैक करने के लिए, current_level नाम की एक कस्टम Crashlytics कुंजी सेट की जाती है. साथ ही, हर बार जब उपयोगकर्ता किसी नए लेवल पर पहुंचता है, तो उसे अपडेट किया जाता है.

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

BigQuery में एक्सपोर्ट करने के लिए, उस कुंजी का इस्तेमाल करके, हर क्रैश इवेंट से जुड़ी current_level वैल्यू के डिस्ट्रिब्यूशन की रिपोर्ट करने के लिए क्वेरी लिखी जा सकती है.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें और IOS (पैकेज के नाम और ANDROID के बजाय).

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

पांचवां उदाहरण: यूज़र आईडी निकालना

आपके पास Android ऐप्लिकेशन का रिलीज़ होने से पहले इस्तेमाल करने का विकल्प है. आपके ज़्यादातर उपयोगकर्ताओं को यह पसंद आया, लेकिन तीन उपयोगकर्ताओं को ऐप्लिकेशन के क्रैश होने की समस्या का सामना करना पड़ा. समस्या की पूरी जानकारी पाने के लिए समस्या है, तो आप एक ऐसी क्वेरी लिखते हैं जो उन उपयोगकर्ताओं के लिए सभी क्रैश इवेंट की जानकारी हासिल करती है, उपयोगकर्ता आईडी का इस्तेमाल कर रहे हैं.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें और IOS (पैकेज के नाम और ANDROID के बजाय).

SELECT *
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
  user.id
 

उदाहरण 6: उन सभी उपयोगकर्ताओं को ढूंढना जिन्हें क्रैश की खास समस्या का सामना करना पड़ रहा है

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

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें और IOS (पैकेज के नाम और ANDROID के बजाय).

SELECT user.id as user_id
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  issue_id = "ISSUE_ID"
  AND application.display_version = "APP_VERSION"
  AND user.id != ""
ORDER BY
  user.id;

उदाहरण 7: ऐसे उपयोगकर्ताओं की संख्या जिन पर क्रैश की समस्या का असर पड़ा है. इस समस्या को देश के हिसाब से बांटा गया है

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

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

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

  2. दोनों Google Analytics SDK टूल में यूज़र आईडी पास करने के लिए अपना ऐप्लिकेशन अपडेट करें और Crashlytics SDK टूल.

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. ऐसी क्वेरी लिखें जो Google Analytics डेटासेट के इवेंट को Crashlytics डेटासेट के क्रैश से जोड़ने के लिए, यूज़र आईडी फ़ील्ड का इस्तेमाल करती हो.

    यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID के बजाय, उसके बंडल आईडी और IOS का इस्तेमाल करें.

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c
    INNER JOIN  `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id
    WHERE
      c.issue_id = "ISSUE_ID"
      AND a._TABLE_SUFFIX BETWEEN '20190101'
      AND '20200101'
    GROUP BY
      c.issue_id,
      a.geo.country,
      c.user.id

उदाहरण 8: आज तक की पांच सबसे बड़ी समस्याएं

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, उसके बंडल आईडी का इस्तेमाल करें और IOS (पैकेज के नाम और ANDROID के बजाय).

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

नौवां उदाहरण: DATE से लेकर आज तक की पांच सबसे बड़ी समस्याएं

भरोसेमंद बैच डेटा में रीयल-टाइम जानकारी जोड़ने के लिए, स्टिचिंग क्वेरी की मदद से बैच और रीयल-टाइम टेबल को भी जोड़ा जा सकता है. event_id एक मुख्य कुंजी है. इसलिए, दोनों टेबल से किसी भी सामान्य इवेंट को हटाने के लिए, DISTINCT event_id का इस्तेमाल किया जा सकता है.

यहां Android ऐप्लिकेशन के लिए क्वेरी का उदाहरण दिया गया है. iOS ऐप्लिकेशन के लिए, पैकेज के नाम और ANDROID के बजाय, उसके बंडल आईडी और IOS का इस्तेमाल करें.

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`)
WHERE
  event_timestamp >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

BigQuery में Crashlytics स्कीमा को समझना

जब Firebase में, Crashlytics का डेटा एक्सपोर्ट BigQuery में सेट अप किया जाता है हाल ही के इवेंट (क्रैश, साधारण गड़बड़ियां, और ANR) एक्सपोर्ट करता है, जिनमें इवेंट शामिल हैं लिंक से दो दिन पहले तक बैकफ़िल ज़्यादा से ज़्यादा 30 दिन लग सकते हैं.

इसके बाद, जब तक एक्सपोर्ट की सुविधा बंद नहीं की जाती, तब तक Firebase हर दिन Crashlytics इवेंट एक्सपोर्ट करता है. डेटा इकट्ठा होने में कुछ मिनट लग सकते हैं हर एक्सपोर्ट के बाद, BigQuery में उपलब्ध होगा.

डेटासेट

Crashlytics, Crashlytics के लिए BigQuery में नया डेटासेट बनाता है डेटा. डेटासेट में आपके पूरे प्रोजेक्ट का डेटा शामिल होता है. भले ही, उसमें एक से ज़्यादा ऐप्लिकेशन हों.

टेबल

Crashlytics आपके प्रोजेक्ट में मौजूद हर ऐप्लिकेशन के लिए, डेटासेट में एक टेबल बनाता है. ऐसा तब तक होता है, जब तक आपने उस ऐप्लिकेशन के डेटा को एक्सपोर्ट करने की सुविधा से ऑप्ट आउट नहीं किया है. Firebase, ऐप्लिकेशन के आइडेंटिफ़ायर के आधार पर टेबल का नाम तय करता है. इसमें पीरियड को अंडरस्कोर में बदल दिया जाता है और आखिर में प्लैटफ़ॉर्म का नाम जोड़ दिया जाता है.

उदाहरण के लिए, com.google.test पैकेज नाम वाले Android ऐप्लिकेशन का डेटा com_google_test_ANDROID नाम की टेबल और रीयलटाइम डेटा में दिखेगा (चालू होने पर) com_google_test_ANDROID_REALTIME नाम की टेबल में होगी

टेबल में Crashlytics डेटा का स्टैंडर्ड सेट होता है. साथ ही, इसमें आपके ऐप्लिकेशन में तय की गई कस्टम Crashlytics कुंजियां भी शामिल होती हैं.

लाइन

टेबल की हर लाइन, ऐप्लिकेशन में हुई गड़बड़ी के बारे में बताती है.

कॉलम

टेबल में मौजूद कॉलम, क्रैश, सामान्य गड़बड़ियों, और ANRs के लिए एक जैसे होते हैं. अगर आपने Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery पर चालू करें. इसके बाद रीयलटाइम टेबल में वही कॉलम होंगे जो बैच टेबल में हैं. ध्यान दें कि हो सकता है कि आपके पास लाइनों में ऐसे कॉलम हों जो ऐसे इवेंट दिखाते हों जिनमें स्टैक ट्रेस न हों.

एक्सपोर्ट में शामिल कॉलम इस टेबल में दिए गए हैं:

फ़ील्ड का नाम डेटा टाइप ब्यौरा
platform स्ट्रिंग Firebase प्रोजेक्ट में रजिस्टर किया गया ऐप्लिकेशन का प्लैटफ़ॉर्म (मान्य वैल्यू: IOS या ANDROID)
bundle_identifier स्ट्रिंग Firebase प्रोजेक्ट में रजिस्टर किए गए ऐप्लिकेशन का यूनीक आइडेंटिफ़ायर (उदाहरण के लिए, com.google.gmail)
Apple प्लैटफ़ॉर्म के ऐप्लिकेशन के लिए, यह ऐप्लिकेशन का बंडल आईडी होता है.
Android ऐप्लिकेशन के लिए, यह ऐप्लिकेशन का पैकेज नाम होता है.
event_id स्ट्रिंग इवेंट का यूनीक आईडी
is_fatal बूलियन ऐप्लिकेशन क्रैश हुआ या नहीं
error_type स्ट्रिंग इवेंट का किस तरह का गड़बड़ी है (उदाहरण के लिए, FATAL, NON_FATAL, ANR वगैरह)
issue_id स्ट्रिंग इवेंट से जुड़ी समस्या
variant_id स्ट्रिंग इस इवेंट से जुड़ी समस्या का वैरिएंट
ध्यान दें कि हर इवेंट में, समस्या का वैरिएंट नहीं होता.
event_timestamp टाइमस्टैंप इवेंट कब हुआ
device रिकॉर्ड वह डिवाइस जिस पर इवेंट हुआ
device.manufacturer स्ट्रिंग डिवाइस बनाने वाली कंपनी
device.model स्ट्रिंग डिवाइस का मॉडल
device.architecture स्ट्रिंग उदाहरण के लिए, X86_32, X86_64, ARMV7, ARM64, ARMV7S या ARMV7K
memory रिकॉर्ड डिवाइस की मेमोरी की स्थिति
memory.used INT64 इस्तेमाल की गई मेमोरी के बाइट
memory.free INT64 बची हुई मेमोरी के बाइट
storage रिकॉर्ड डिवाइस का स्थायी स्टोरेज
storage.used INT64 इस्तेमाल किया गया स्टोरेज (बाइट में)
storage.free INT64 बचे हुए स्टोरेज के बाइट
operating_system रिकॉर्ड डिवाइस पर मौजूद ओएस की जानकारी
operating_system.display_version स्ट्रिंग डिवाइस पर ओएस का वर्शन
operating_system.name स्ट्रिंग डिवाइस पर ओएस का नाम
operating_system.modification_state स्ट्रिंग डिवाइस में बदलाव किया गया है या नहीं (उदाहरण के लिए, MODIFIED ऐप्लिकेशन, रूट किया गया ऐप्लिकेशन है और रूट किया गया ऐप्लिकेशन UNMODIFIED)
operating_system.type स्ट्रिंग (सिर्फ़ Apple ऐप्लिकेशन के लिए) डिवाइस पर चलने वाले ऑपरेटिंग सिस्टम का टाइप (उदाहरण के लिए, IOS, MACOS वगैरह)
operating_system.device_type स्ट्रिंग डिवाइस किस तरह का है (उदाहरण के लिए, MOBILE, TABLET, TV वगैरह); "डिवाइस श्रेणी" के रूप में भी जाना जाता है
application रिकॉर्ड वह ऐप्लिकेशन जिसने इवेंट जनरेट किया
application.build_version स्ट्रिंग ऐप्लिकेशन का बिल्ड वर्शन
application.display_version स्ट्रिंग
user रिकॉर्ड (ज़रूरी नहीं) ऐप्लिकेशन के उपयोगकर्ता के बारे में इकट्ठा की गई जानकारी
user.name स्ट्रिंग (ज़रूरी नहीं) उपयोगकर्ता का नाम
user.email स्ट्रिंग (ज़रूरी नहीं) उपयोगकर्ता का ईमेल पता
user.id स्ट्रिंग (ज़रूरी नहीं) उपयोगकर्ता से जुड़ा, ऐप्लिकेशन से जुड़ा आईडी
custom_keys दोहराया गया रिकॉर्ड डेवलपर के तय किए गए की-वैल्यू पेयर
custom_keys.key स्ट्रिंग डेवलपर की ओर से तय की गई कुंजी
custom_keys.value स्ट्रिंग डेवलपर की ओर से तय की गई वैल्यू
installation_uuid स्ट्रिंग ऐसा आईडी जो किसी खास ऐप्लिकेशन और डिवाइस को इंस्टॉल किए जाने की पहचान करता है
crashlytics_sdk_versions स्ट्रिंग इवेंट जनरेट करने वाले Crashlytics SDK टूल का वर्शन
app_orientation स्ट्रिंग उदाहरण के लिए, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN वगैरह
device_orientation स्ट्रिंग उदाहरण के लिए, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN वगैरह
process_state स्ट्रिंग BACKGROUND या FOREGROUND
logs दोहराया गया रिकॉर्ड टाइमस्टैंप वाले लॉग मैसेज, जिन्हें Crashlytics लॉगर ने जनरेट किया, अगर चालू है
logs.timestamp टाइमस्टैंप लॉग कब बनाया गया था
logs.message स्ट्रिंग लॉग किया गया मैसेज
breadcrumbs दोहराया गया रिकॉर्ड टाइमस्टैंप वाला Google Analytics ब्रेडक्रंब, अगर चालू है
breadcrumbs.timestamp टाइमस्टैंप ब्रेडक्रंब से जुड़ा टाइमस्टैंप
breadcrumbs.name स्ट्रिंग ब्रेडक्रंब से जुड़ा नाम
breadcrumbs.params बार-बार रिकॉर्ड करना ब्रेडक्रंब से जुड़े पैरामीटर
breadcrumbs.params.key स्ट्रिंग ब्रेडक्रंब से जुड़ी पैरामीटर कुंजी
breadcrumbs.params.value स्ट्रिंग ब्रेडक्रंब से जुड़ी पैरामीटर वैल्यू
blame_frame रिकॉर्ड वह फ़्रेम जिसकी पहचान क्रैश या गड़बड़ी की मुख्य वजह के तौर पर की गई है
blame_frame.line INT64 फ़्रेम की फ़ाइल की लाइन नंबर
blame_frame.file स्ट्रिंग फ़्रेम फ़ाइल का नाम
blame_frame.symbol स्ट्रिंग हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल
blame_frame.offset INT64 उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है
Java अपवादों के लिए सेट न करें
blame_frame.address INT64 बाइनरी इमेज में दिया गया पता, जिसमें कोड शामिल है
Java फ़्रेम के लिए सेट न करें
blame_frame.library स्ट्रिंग उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है
blame_frame.owner स्ट्रिंग उदाहरण के लिए, DEVELOPER, VENDOR, RUNTIME, PLATFORM या SYSTEM
blame_frame.blamed बूलियन Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं
exceptions दोहराया गया रिकॉर्ड (सिर्फ़ Android के लिए) इस इवेंट के दौरान हुई गड़बड़ियां. नेस्ट किए गए अपवाद, समय के हिसाब से उलटे क्रम में दिखाए जाते हैं. इसका मतलब है कि आखिरी रिकॉर्ड, सबसे पहले दिखाया गया अपवाद है
exceptions.type स्ट्रिंग अपवाद का टाइप (उदाहरण के लिए, java.lang.IllegalStateException)
exceptions.exception_message स्ट्रिंग अपवाद से जुड़ा मैसेज
exceptions.nested बूलियन आखिरी बार लागू किए गए अपवाद को छोड़कर बाकी सभी के लिए सही है (पहला रिकॉर्ड)
exceptions.title स्ट्रिंग थ्रेड का टाइटल
exceptions.subtitle स्ट्रिंग थ्रेड का सबटाइटल
exceptions.blamed बूलियन सही है, अगर Crashlytics को लगता है कि अपवाद की वजह से गड़बड़ी या क्रैश
exceptions.frames दोहराया गया रिकॉर्ड अपवाद से जुड़े फ़्रेम
exceptions.frames.line INT64 फ़्रेम की फ़ाइल की लाइन नंबर
exceptions.frames.file स्ट्रिंग फ़्रेम फ़ाइल का नाम
exceptions.frames.symbol स्ट्रिंग हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल
exceptions.frames.offset INT64 उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है
Java अपवादों के लिए सेट न करें
exceptions.frames.address INT64 बाइनरी इमेज में दिया गया पता, जिसमें कोड शामिल है
Java फ़्रेम के लिए सेट न करें
exceptions.frames.library स्ट्रिंग उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है
exceptions.frames.owner स्ट्रिंग उदाहरण के लिए, DEVELOPER, VENDOR, RUNTIME, PLATFORM या SYSTEM
exceptions.frames.blamed बूलियन Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं
error बार-बार रिकॉर्ड करना (सिर्फ़ Apple के ऐप्लिकेशन के लिए) गड़बड़ियां, जो गंभीर नहीं हैं
error.queue_name स्ट्रिंग वह सूची जिस पर थ्रेड चल रहा था
error.code INT64 ऐप्लिकेशन के कस्टम लॉग किए गए NSError से जुड़ा गड़बड़ी का कोड
error.title स्ट्रिंग थ्रेड का टाइटल
error.subtitle स्ट्रिंग थ्रेड का सबटाइटल
error.blamed बूलियन क्या Crashlytics ने यह तय किया है कि गड़बड़ी का मकसद यह फ़्रेम है
error.frames बार-बार रिकॉर्ड करना स्टैक ट्रेस के फ़्रेम
error.frames.line INT64 फ़्रेम की फ़ाइल की लाइन नंबर
error.frames.file स्ट्रिंग फ़्रेम फ़ाइल का नाम
error.frames.symbol स्ट्रिंग हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल
error.frames.offset INT64 उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है
error.frames.address INT64 बाइनरी इमेज में पता, जिसमें कोड शामिल है
error.frames.library स्ट्रिंग उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है
error.frames.owner स्ट्रिंग उदाहरण के लिए, DEVELOPER, VENDOR, RUNTIME, PLATFORM या SYSTEM
error.frames.blamed बूलियन क्या Crashlytics ने यह तय किया है कि गड़बड़ी का मकसद यह फ़्रेम है
threads बार-बार रिकॉर्ड करना इवेंट के दौरान मौजूद थ्रेड
threads.crashed बूलियन थ्रेड क्रैश हुआ है या नहीं
threads.thread_name स्ट्रिंग थ्रेड का नाम
threads.queue_name स्ट्रिंग (सिर्फ़ Apple के ऐप्लिकेशन के लिए) वह सूची जिस पर थ्रेड चल रहा था
threads.signal_name स्ट्रिंग उस सिग्नल का नाम जिसकी वजह से ऐप्लिकेशन क्रैश हुआ. यह नाम, सिर्फ़ क्रैश होने पर मौजूद होता है नेटिव थ्रेड
threads.signal_code स्ट्रिंग ऐप्लिकेशन के क्रैश होने की वजह बताने वाले सिग्नल का कोड; केवल क्रैश होने पर मौजूद नेटिव थ्रेड
threads.crash_address INT64 उस सिग्नल का पता जिसकी वजह से ऐप्लिकेशन क्रैश हुआ; सिर्फ़ क्रैश हुई नेटिव थ्रेड पर मौजूद होता है
threads.code INT64 (सिर्फ़ Apple के ऐप्लिकेशन के लिए) ऐप्लिकेशन के कस्टम लॉग किए गए NSError का गड़बड़ी कोड
threads.title स्ट्रिंग थ्रेड का टाइटल
threads.subtitle स्ट्रिंग थ्रेड का सबटाइटल
threads.blamed बूलियन Crashlytics ने यह तय किया है कि क्रैश या गड़बड़ी की वजह यह फ़्रेम है या नहीं
threads.frames दोहराया गया रिकॉर्ड थ्रेड के फ़्रेम
threads.frames.line INT64 फ़्रेम की फ़ाइल की लाइन नंबर
threads.frames.file स्ट्रिंग फ़्रेम फ़ाइल का नाम
threads.frames.symbol स्ट्रिंग हाइड्रेट किया गया सिंबल या अगर हाइड्रेट नहीं किया जा सकता, तो रॉ सिंबल
threads.frames.offset INT64 उस बाइनरी इमेज में बाइट ऑफ़सेट जो कोड है
threads.frames.address INT64 बाइनरी इमेज में पता, जिसमें कोड शामिल है
threads.frames.library स्ट्रिंग उस लाइब्रेरी का डिसप्ले नेम जिसमें फ़्रेम शामिल है
threads.frames.owner स्ट्रिंग उदाहरण के लिए, DEVELOPER, VENDOR, RUNTIME, PLATFORM या SYSTEM
threads.frames.blamed बूलियन क्या 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_resolution_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 के लिए एक सैंपल रिपोर्ट होती है. इसमें, एक्सपोर्ट किए गए CrashlyticsBigQuery स्कीमा के डाइमेंशन और मेट्रिक का पूरा सेट शामिल होता है. अगर आपने Crashlytics BigQuery पर स्ट्रीमिंग एक्सपोर्ट की सुविधा चालू की है, तो उस डेटा को Data Studio टेंप्लेट के रीयल टाइम रुझान पेज पर देखा जा सकता है. अपने ऐप्लिकेशन के क्रैश के रॉ डेटा के आधार पर, नई रिपोर्ट और विज़ुअलाइज़ेशन तुरंत बनाने के लिए, सैंपल को टेंप्लेट के तौर पर इस्तेमाल किया जा सकता है:

  1. Crashlytics Data Studio डैशबोर्ड टेंप्लेट खोलें.

  2. सबसे ऊपर दाएं कोने में मौजूद, टेंप्लेट का इस्तेमाल करें पर क्लिक करें.

  3. नया डेटा सोर्स ड्रॉप-डाउन में, नया डेटा सोर्स बनाएं चुनें.

  4. BigQuery कार्ड पर, चुनें पर क्लिक करें.

  5. वह टेबल चुनें जिसमें एक्सपोर्ट किया गया Crashlytics का डेटा शामिल है. इसके लिए, मेरे प्रोजेक्ट > PROJECT_ID > firebase_crashlytics > TABLE_NAME.

    आपकी बैच टेबल हमेशा उपलब्ध रहती है. अगर आपने Crashlytics स्ट्रीमिंग एक्सपोर्ट को BigQuery पर एक्सपोर्ट करने की सुविधा चालू है. इसके बाद, आप इसके बजाय, अपनी रीयलटाइम टेबल चुन सकते हैं.

  6. कॉन्फ़िगरेशन में जाकर, Crashlytics टेंप्लेट लेवल को डिफ़ॉल्ट पर सेट करें.

  7. नया डेटा सोर्स बनाने के लिए, कनेक्ट करें पर क्लिक करें.

  8. Crashlytics टेंप्लेट पर वापस जाने के लिए, रिपोर्ट में जोड़ें पर क्लिक करें.

  9. आखिर में, Crashlytics की कॉपी बनाने के लिए, रिपोर्ट बनाएं पर क्लिक करें Data Studio डैशबोर्ड टेंप्लेट.