আরও বিশ্লেষণের জন্য আপনি আপনার Crashlytics ডেটা BigQuery- এ এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে এবং Google ডেটা স্টুডিওর সাথে ভিজ্যুয়ালাইজেশন এবং কাস্টম ড্যাশবোর্ডের জন্য এটি ব্যবহার করতে দেয়।
BigQuery এক্সপোর্ট চালু করুন
- Firebase কনসোলে ইন্টিগ্রেশন পৃষ্ঠায় যান।
- BigQuery কার্ডে, লিঙ্কে ক্লিক করুন।
- BigQuery সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
আপনি যখন আপনার প্রকল্পকে BigQuery-এর সাথে লিঙ্ক করবেন:
- Firebase আপনার Firebase প্রকল্প থেকে BigQuery-এ আপনার ডেটার দৈনিক সিঙ্ক সেট আপ করে।
- ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery-এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করা যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery-এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
- Firebase আপনার বিদ্যমান ডেটার একটি কপি BigQuery-এ এক্সপোর্ট করে । প্রতিটি লিঙ্ক করা অ্যাপের জন্য, এতে দৈনিক সিঙ্ক থেকে ডেটা সম্বলিত একটি ব্যাচ টেবিল অন্তর্ভুক্ত থাকে।
- আপনি Crashlytics BigQuery স্ট্রিমিং রপ্তানি সক্ষম করলে, সমস্ত লিঙ্ক করা অ্যাপের একটি রিয়েলটাইম টেবিল থাকবে যাতে ক্রমাগত ডেটা আপডেট হয়।
BigQuery এক্সপোর্ট নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন ।
BigQuery-এ কোন ডেটা রপ্তানি করা হয়?
Firebase Crashlytics ডেটা firebase_crashlytics
নামের একটি BigQuery ডেটাসেটে রপ্তানি করা হয়। ডিফল্টরূপে, আপনার প্রজেক্টের প্রতিটি অ্যাপের জন্য Crashlytics ডেটা সেটের ভিতরে পৃথক টেবিল তৈরি করা হবে। ফায়ারবেস অ্যাপের বান্ডেল শনাক্তকারীর উপর ভিত্তি করে টেবিলের নাম দেয়, পিরিয়ডগুলিকে আন্ডারস্কোরে রূপান্তরিত করে এবং শেষে একটি প্ল্যাটফর্মের নাম যুক্ত করা হয়।
উদাহরণস্বরূপ, com.google.test
আইডি সহ একটি অ্যাপের ডেটা com_google_test_ANDROID
নামের একটি টেবিলে থাকবে। এই ব্যাচ টেবিল প্রতিদিন একবার আপডেট করা হয়. আপনি Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট সক্ষম করলে, Firebase Crashlytics ডেটাও রিয়েলটাইমে com_google_test_ANDROID_REALTIME
এ স্ট্রিম করা হবে।
একটি টেবিলের প্রতিটি সারি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR সহ অ্যাপে ঘটে যাওয়া একটি ইভেন্টকে উপস্থাপন করে।
Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট সক্ষম করুন
আপনি BigQueryStreaming এর মাধ্যমে আপনার Crashlytics ডেটা রিয়েলটাইমে স্ট্রিম করতে পারেন। লাইভ ডেটার প্রয়োজন হয় এমন যেকোন উদ্দেশ্যে আপনি এটি ব্যবহার করতে পারেন, যেমন একটি লাইভ ড্যাশবোর্ডে তথ্য উপস্থাপন করা, একটি রোলআউট লাইভ দেখা, বা অ্যালার্ট এবং কাস্টম ওয়ার্কফ্লো ট্রিগার করে এমন অ্যাপ্লিকেশন সমস্যাগুলি পর্যবেক্ষণ করা।
BigQuery স্যান্ডবক্সের জন্য Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট উপলব্ধ নয়।
আপনি যখন Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট সক্ষম করেন, তখন ব্যাচ টেবিল ছাড়াও আপনার কাছে একটি রিয়েলটাইম টেবিল থাকবে। টেবিলের মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে রয়েছে:
ব্যাচ টেবিল | রিয়েলটাইম টেবিল |
---|---|
|
|
ব্যাচ টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে প্রবণতা সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে স্থিরভাবে সংরক্ষণ করি এবং সেগুলি 90 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, তখনই আমরা তা BigQuery-এ লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল একটি সেলাই কোয়েরি সঙ্গে মিলিত হতে পারে উভয় সুবিধা পেতে. নীচের 9 নং প্রশ্নের উদাহরণ দেখুন।
ডিফল্টরূপে, রিয়েলটাইম টেবিলের পার্টিশনের মেয়াদ 30 দিনের জন্য থাকে। এটিকে কীভাবে পরিবর্তন করতে হয় তা জানতে, পার্টিশনের মেয়াদ আপডেট করা দেখুন।
Crashlytics BigQuery স্ট্রিমিং সক্ষম করুন
স্ট্রিমিং সক্ষম করতে, BigQuery ইন্টিগ্রেশন পৃষ্ঠার Crashlytics বিভাগে নেভিগেট করুন এবং স্ট্রিমিং অন্তর্ভুক্ত করুন চেকবক্স নির্বাচন করুন।
ডেটা স্টুডিও টেমপ্লেট
আপনার ডেটা স্টুডিও টেমপ্লেটে রিয়েলটাইম ডেটা সক্ষম করতে, ডেটা স্টুডিওর সাথে এক্সপোর্ট করা ক্র্যাশলিটিক্স ডেটা ভিজ্যুয়ালাইজ করার নির্দেশাবলী অনুসরণ করুন।
ভিউ
আপনি BigQuery UI ব্যবহার করে নীচের উদাহরণের প্রশ্নগুলিকে ভিউতে পরিণত করতে পারেন। বিস্তারিত নির্দেশাবলীর জন্য ভিউ তৈরি করা দেখুন।
রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
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;
উদাহরণ 2: সর্বাধিক বিস্তৃত ক্র্যাশগুলি খুঁজুন
প্রোডাকশন প্ল্যানকে সঠিকভাবে অগ্রাধিকার দেওয়ার জন্য, একজন প্রোজেক্ট ম্যানেজার চিন্তা করেন কিভাবে তাদের প্রোডাক্টের শীর্ষ 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: কাস্টম কী দ্বারা ফিল্টার করুন
একজন গেম ডেভেলপার জানতে চায় তাদের গেমের কোন স্তরে সবচেয়ে বেশি ক্র্যাশ হয়েছে। তাদের সেই স্ট্যাট ট্র্যাক করতে সাহায্য করার জন্য, তারা একটি কাস্টম ক্র্যাশলিটিক্স কী current_level
সেট করে এবং প্রতিবার ব্যবহারকারী যখন একটি নতুন স্তরে পৌঁছায় তখন এটি আপডেট করে।
উদ্দেশ্য গ
CrashlyticsKit setIntValue:3 forKey:@"current_level";
সুইফট
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
জাভা
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
উদাহরণ 5: ব্যবহারকারী আইডি নিষ্কাশন
একজন ডেভেলপারের প্রারম্ভিক অ্যাক্সেসে একটি অ্যাপ আছে। তাদের বেশিরভাগ ব্যবহারকারী এটি পছন্দ করেন, তবে তিনজন অস্বাভাবিক সংখ্যক ক্র্যাশের সম্মুখীন হয়েছেন। সমস্যার তলানিতে যাওয়ার জন্য, তারা একটি ক্যোয়ারী লেখে যা তাদের ব্যবহারকারী আইডি ব্যবহার করে সেই ব্যবহারকারীদের জন্য সমস্ত ক্র্যাশ ইভেন্ট টানে:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
উদাহরণ 6: একটি নির্দিষ্ট ক্র্যাশ সমস্যার সম্মুখীন সমস্ত ব্যবহারকারীদের খুঁজুন
একজন বিকাশকারী বিটা পরীক্ষকদের একটি গ্রুপে একটি জটিল বাগ প্রকাশ করেছে। দলটি নির্দিষ্ট ক্র্যাশ ইস্যু আইডি সনাক্ত করতে উপরের উদাহরণ 2 থেকে প্রশ্নটি ব্যবহার করতে সক্ষম হয়েছিল। এখন তারা এই ক্র্যাশ দ্বারা প্রভাবিত অ্যাপ ব্যবহারকারীদের তালিকা বের করার জন্য একটি ক্যোয়ারী চালাতে চায়:
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: ক্র্যাশ সমস্যা দ্বারা প্রভাবিত ব্যবহারকারীর সংখ্যা, দেশ অনুসারে বিভক্ত
এখন দলটি একটি নতুন রিলিজের রোলআউটের সময় একটি জটিল বাগ সনাক্ত করেছে৷ তারা নির্দিষ্ট ক্র্যাশ ইস্যু আইডি সনাক্ত করতে উপরের উদাহরণ 2 থেকে প্রশ্নটি ব্যবহার করতে সক্ষম হয়েছিল। দলটি এখন দেখতে চায় যে এই ক্র্যাশটি বিশ্বের বিভিন্ন দেশে ব্যবহারকারীদের মধ্যে ছড়িয়ে পড়েছে কিনা।
এই ক্যোয়ারী লিখতে, দলের প্রয়োজন হবে:
Google Analytics-এর জন্য BigQuery এক্সপোর্ট চালু করুন। BigQuery-এ প্রজেক্ট ডেটা এক্সপোর্ট দেখুন।
Google Analytics SDK এবং Crashlytics SDK উভয় ক্ষেত্রেই একটি ব্যবহারকারী আইডি পাস করতে তাদের অ্যাপ আপডেট করুন।
উদ্দেশ্য গ
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
সুইফট
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
জাভা
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Crashlytics BigQuery ডেটা সেটে ক্র্যাশ সহ Google Analytics BigQuery ডেটা সেটের ইভেন্টগুলিতে যোগদান করতে ব্যবহারকারী আইডি ক্ষেত্র ব্যবহার করে এমন একটি প্রশ্ন লিখুন:
SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `projectId.firebase_crashlytics.package_name_ANDROID` c INNER JOIN `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "YOUR_ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
উদাহরণ 8: আজ পর্যন্ত সেরা 5টি সমস্যা
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 থেকে শীর্ষ 5টি সমস্যা
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 স্কিমা বোঝা
আপনি যখন BigQuery-এর সাথে Crashlytics লিঙ্ক করেন, তখন Firebase সাম্প্রতিক ইভেন্টগুলি (ক্র্যাশ, অ-মরণীয় ত্রুটি এবং ANR) রপ্তানি করে, লিঙ্কের দুই দিন আগে পর্যন্ত ইভেন্ট সহ, নব্বই দিন পর্যন্ত ব্যাকফিল করার বিকল্প সহ।
সেই থেকে আপনি লিঙ্কটি নিষ্ক্রিয় না করা পর্যন্ত, Firebase ক্র্যাশলিটিক্স ইভেন্টগুলি প্রতিদিন রপ্তানি করে। প্রতিটি এক্সপোর্টের পরে BigQuery-এ ডেটা উপলব্ধ হতে কয়েক মিনিট সময় লাগতে পারে।
ডেটাসেট
Firebase Crashlytics Crashlytics ডেটার জন্য BigQuery-এ একটি নতুন ডেটাসেট তৈরি করে। ডেটাসেটটি আপনার পুরো প্রকল্পকে কভার করে, এমনকি এতে একাধিক অ্যাপ থাকলেও।
টেবিল
Firebase Crashlytics আপনার প্রোজেক্টের প্রতিটি অ্যাপের জন্য ডেটাসেটে একটি টেবিল তৈরি করে, যদি না আপনি সেই অ্যাপের জন্য ডেটা এক্সপোর্ট করা অপ্ট আউট করেন। ফায়ারবেস অ্যাপের বান্ডেল শনাক্তকারীর উপর ভিত্তি করে টেবিলের নাম দেয়, পিরিয়ডগুলিকে আন্ডারস্কোরে রূপান্তরিত করে এবং শেষে একটি প্ল্যাটফর্মের নাম যুক্ত করা হয়।
উদাহরণস্বরূপ, com.google.test
ID সহ একটি Android অ্যাপের ডেটা com_google_test_ANDROID
নামের একটি টেবিলে থাকবে এবং রিয়েলটাইম ডেটা (যদি সক্ষম করা থাকে) com_google_test_ANDROID_REALTIME
নামের একটি টেবিলে থাকবে
ডেভেলপারদের দ্বারা সংজ্ঞায়িত যেকোনো কাস্টম ক্র্যাশলিটিক্স কী ছাড়াও সারণিতে ক্র্যাশলিটিক্স ডেটার একটি প্রমিত সেট রয়েছে।
সারি
একটি টেবিলের প্রতিটি সারি অ্যাপটির সম্মুখীন হওয়া একটি ত্রুটি উপস্থাপন করে।
কলাম
একটি টেবিলের কলামগুলি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR-এর জন্য অভিন্ন। যদি Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে রিয়েলটাইম টেবিলে ব্যাচ টেবিলের মতো একই কলাম থাকবে। রপ্তানির মধ্যে থাকা কলামগুলি নীচে তালিকাভুক্ত করা হয়েছে৷
স্ট্যাক ট্রেস ছাড়া
সারিতে উপস্থিত কলামগুলি স্ট্যাক ট্রেস ছাড়াই ইভেন্টগুলিকে উপস্থাপন করে৷
ক্ষেত্র নাম | ডেটা টাইপ | বর্ণনা |
---|---|---|
প্ল্যাটফর্ম | STRING | অ্যাপল বা অ্যান্ড্রয়েড অ্যাপস |
bundle_identifier | STRING | বান্ডেল আইডি, যেমন com.google.gmail |
event_id | STRING | ইভেন্টের জন্য একটি অনন্য আইডি |
হয়_মারাত্মক | বুলিয়ান | অ্যাপটি ক্র্যাশ হয়েছে কিনা |
error_type | STRING | ইভেন্টের ত্রুটির ধরন (ফ্যাটাল, নন_ফ্যাটাল, এএনআর) |
issue_id | STRING | ঘটনার সঙ্গে যুক্ত সমস্যা |
variant_id | STRING | এই ইভেন্টের সাথে সম্পর্কিত সমস্যা বৈকল্পিক মনে রাখবেন যে সমস্ত ইভেন্টের একটি সম্পর্কিত সমস্যা বৈকল্পিক নেই। |
ঘটনা_টাইমস্ট্যাম্প | টাইমস্ট্যাম্প | যখন ঘটনাটি ঘটেছে |
যন্ত্র | রেকর্ড | যে ডিভাইসে ঘটনাটি ঘটেছে |
device.manufacturer | STRING | ডিভাইস প্রস্তুতকারক |
ডিভাইস মডেল | STRING | ডিভাইস মডেল |
device.architecture | STRING | X86_32, X86_64, ARMV7, ARM64, ARMV7S, বা ARMV7K |
স্মৃতি | রেকর্ড | ডিভাইসের মেমরি স্থিতি |
memory.used | INT64 | মেমরির বাইট ব্যবহার করা হয়েছে |
স্মৃতি বিনামূল্যে | INT64 | বাইট মেমরি অবশিষ্ট আছে |
স্টোরেজ | রেকর্ড | ডিভাইসের স্থায়ী সঞ্চয়স্থান |
store.used | INT64 | স্টোরেজের বাইট ব্যবহার করা হয়েছে |
স্টোরেজ বিনামূল্যে | INT64 | বাইট স্টোরেজ বাকি |
অপারেটিং_সিস্টেম | রেকর্ড | ডিভাইসে OS এর বিশদ বিবরণ |
operating_system.display_version | STRING | ডিভাইসে OS এর সংস্করণ |
operating_system.name | STRING | ডিভাইসে OS এর নাম |
operating_system.modification_state | STRING | ডিভাইসটি পরিবর্তন করা হয়েছে কিনা, যেমন জেলব্রোকেন/রুটেড (সংশোধিত বা অপরিবর্তিত) |
operating_system.type | STRING | ডিভাইসে চলমান OS এর ধরন (উদাহরণস্বরূপ, IOS, MACOS); শুধুমাত্র অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য উপলব্ধ |
operating_system.device_type | STRING | ডিভাইসের ধরন (উদাহরণস্বরূপ, মোবাইল, ট্যাবলেট, টিভি, ইত্যাদি); "ডিভাইস বিভাগ" নামেও পরিচিত |
আবেদন | রেকর্ড | যে অ্যাপটি ইভেন্টটি তৈরি করেছে |
application.build_version | STRING | অ্যাপটির বিল্ড সংস্করণ |
application.display_version | STRING | |
ব্যবহারকারী | রেকর্ড | ঐচ্ছিক: অ্যাপের ব্যবহারকারীর তথ্য সংগ্রহ করা |
ব্যবহারকারীর নাম | STRING | ঐচ্ছিক: ব্যবহারকারীর নাম |
user.email | STRING | ঐচ্ছিক: ব্যবহারকারীর ইমেল ঠিকানা |
ব্যবহারকারী আইডি | STRING | ঐচ্ছিক: ব্যবহারকারীর সাথে যুক্ত একটি অ্যাপ-নির্দিষ্ট আইডি |
কাস্টম_কি | পুনরাবৃত্তি রেকর্ড | বিকাশকারী-সংজ্ঞায়িত কী-মান জোড়া |
custom_keys.key | STRING | একটি বিকাশকারী-সংজ্ঞায়িত কী |
custom_keys.value | STRING | একটি বিকাশকারী-সংজ্ঞায়িত মান |
ইনস্টলেশন_uuid | STRING | একটি আইডি যা একটি অনন্য অ্যাপ এবং ডিভাইস ইনস্টলেশন শনাক্ত করে |
crashlytics_sdk_versions | STRING | Crashlytics SDK সংস্করণ যা ইভেন্টটি তৈরি করেছে৷ |
app_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP, বা FACE_DOWN |
device_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP, বা FACE_DOWN |
প্রক্রিয়া_রাষ্ট্র | STRING | ব্যাকগ্রাউন্ড বা ফোরগ্রাউন্ড |
লগ | পুনরাবৃত্তি রেকর্ড | Crashlytics লগার দ্বারা তৈরি করা টাইমস্ট্যাম্পযুক্ত লগ বার্তা, যদি সক্রিয় থাকে |
logs.timestamp | টাইমস্ট্যাম্প | যখন লগ করা হয়েছিল |
logs.message | STRING | লগ করা বার্তা |
ব্রেডক্রাম্বস | পুনরাবৃত্তি রেকর্ড | টাইমস্ট্যাম্পযুক্ত Google Analytics ব্রেডক্রাম্ব, যদি সক্ষম করা থাকে |
breadcrumbs.timestamp | টাইমস্ট্যাম্প | ব্রেডক্রাম্বের সাথে যুক্ত টাইমস্ট্যাম্প |
breadcrumbs.name | STRING | ব্রেডক্রাম্বের সাথে যুক্ত নাম |
breadcrumbs.params | পুনরাবৃত্তি রেকর্ড | ব্রেডক্রাম্বের সাথে যুক্ত পরামিতি |
breadcrumbs.params.key | STRING | ব্রেডক্রাম্বের সাথে যুক্ত একটি প্যারামিটার কী |
breadcrumbs.params.value | STRING | ব্রেডক্রাম্বের সাথে সম্পর্কিত একটি প্যারামিটার মান |
blame_frame | রেকর্ড | ক্র্যাশ বা ত্রুটির মূল কারণ হিসেবে চিহ্নিত ফ্রেম |
blame_frame.line | INT64 | ফ্রেমের ফাইলের লাইন নম্বর |
blame_frame.file | STRING | ফ্রেম ফাইলের নাম |
blame_frame.symbol | STRING | হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয় |
blame_frame.offset | INT64 | বাইট অফসেট বাইনারি ইমেজ যা কোড ধারণ করে, জাভা ব্যতিক্রমের জন্য আনসেট |
blame_frame.address | INT64 | বাইনারি চিত্রের ঠিকানা যেখানে কোড রয়েছে, জাভা ফ্রেমের জন্য সেট করা নেই |
blame_frame.library | STRING | ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম |
blame_frame.owner | STRING | বিকাশকারী, বিক্রেতা, রানটাইম, প্ল্যাটফর্ম বা সিস্টেম৷ |
blame_frame.blamed | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ |
ব্যতিক্রম | পুনরাবৃত্তি রেকর্ড | শুধুমাত্র Android: ব্যতিক্রম যা এই ইভেন্টের সময় ঘটেছে। নেস্টেড ব্যতিক্রমগুলি বিপরীত কালানুক্রমিক ক্রমে উপস্থাপিত হয় (পড়ুন: শেষ রেকর্ডটি নিক্ষেপ করা প্রথম ব্যতিক্রম) |
ব্যতিক্রম। প্রকার | STRING | ব্যতিক্রম প্রকার, যেমন java.lang.IllegalStateException |
exceptions.exception_message | STRING | ব্যতিক্রমের সাথে যুক্ত একটি বার্তা |
exceptions.nested | বুলিয়ান | শেষ নিক্ষেপ করা ব্যতিক্রম ছাড়া সকলের জন্য সত্য (অর্থাৎ প্রথম রেকর্ড) |
ব্যতিক্রম। শিরোনাম | STRING | থ্রেড শিরোনাম |
ব্যতিক্রম.সাবটাইটেল | STRING | থ্রেডের সাবটাইটেল |
ব্যতিক্রম। দোষী | বুলিয়ান | সত্য যদি ক্র্যাশলিটিক্স ব্যতিক্রমটি নির্ধারণ করে ত্রুটি বা ক্র্যাশের জন্য দায়ী |
ব্যতিক্রম.ফ্রেম | পুনরাবৃত্তি রেকর্ড | ব্যতিক্রম সঙ্গে যুক্ত ফ্রেম |
exceptions.frames.line | INT64 | ফ্রেমের ফাইলের লাইন নম্বর |
exceptions.frames.file | STRING | ফ্রেম ফাইলের নাম |
exceptions.frames.symbol | STRING | হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয় |
exceptions.frames.offset | INT64 | বাইট অফসেট বাইনারি ইমেজ যা কোড ধারণ করে, জাভা ব্যতিক্রমের জন্য আনসেট |
exceptions.frames.address | INT64 | বাইনারি চিত্রের ঠিকানা যেখানে কোড রয়েছে, জাভা ফ্রেমের জন্য সেট করা নেই |
exceptions.frames.library | STRING | ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম |
exceptions.frames.owner | STRING | বিকাশকারী, বিক্রেতা, রানটাইম, প্ল্যাটফর্ম বা সিস্টেম৷ |
exceptions.frames.blamed | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ |
ত্রুটি | পুনরাবৃত্তি রেকর্ড | শুধুমাত্র অ্যাপল অ্যাপস: অ-মারাত্মক ত্রুটি |
error.queue_name | STRING | যে সারিতে থ্রেড চলছিল |
ভুল সংকেত | INT64 | অ্যাপের কাস্টম লগ করা NSError এর সাথে যুক্ত ত্রুটি কোড |
error.title | STRING | থ্রেড শিরোনাম |
error.subtitle | STRING | থ্রেডের সাবটাইটেল |
error.blamed | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ |
error.frames | পুনরাবৃত্তি রেকর্ড | স্ট্যাকট্রেস এর ফ্রেম |
error.frames.line | INT64 | ফ্রেমের ফাইলের লাইন নম্বর |
error.frames.file | STRING | ফ্রেম ফাইলের নাম |
error.frames.symbol | STRING | হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয় |
error.frames.offset | INT64 | বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে |
error.frames.address | INT64 | বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে |
error.frames.library | STRING | ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম |
error.frames.owner | STRING | বিকাশকারী, বিক্রেতা, রানটাইম, প্ল্যাটফর্ম বা সিস্টেম৷ |
error.frames.blamed | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ |
থ্রেড | পুনরাবৃত্তি রেকর্ড | অনুষ্ঠানের সময় উপস্থিত থ্রেড |
threads.crashed | বুলিয়ান | থ্রেড বিপর্যস্ত কিনা |
threads.thread_name | STRING | থ্রেড এর নাম |
threads.queue_name | STRING | শুধুমাত্র অ্যাপল অ্যাপস: থ্রেডটি যে সারিতে চলছিল |
threads.signal_name | STRING | যে সিগন্যালটির কারণে অ্যাপটি ক্র্যাশ হয়েছে, শুধুমাত্র ক্র্যাশ হওয়া নেটিভ থ্রেডে উপস্থিত থাকে |
threads.signal_code | STRING | সিগন্যালের কোড যার কারণে অ্যাপটি ক্র্যাশ হয়েছে; শুধুমাত্র বিপর্যস্ত নেটিভ থ্রেডে উপস্থিত |
threads.crash_address | INT64 | সিগন্যালের ঠিকানা যা অ্যাপ্লিকেশনটি ক্র্যাশ করেছে; শুধুমাত্র বিপর্যস্ত নেটিভ থ্রেডে উপস্থিত |
threads.code | INT64 | শুধুমাত্র অ্যাপল অ্যাপস: অ্যাপ্লিকেশনের কাস্টম লগ করা NSError-এর ত্রুটি কোড |
threads.title | STRING | থ্রেড শিরোনাম |
threads.subtitle | STRING | থ্রেডের সাবটাইটেল |
থ্রেড | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ |
threads.frames | পুনরাবৃত্তি রেকর্ড | থ্রেড এর ফ্রেম |
threads.frames.line | INT64 | ফ্রেমের ফাইলের লাইন নম্বর |
threads.frames.file | STRING | ফ্রেম ফাইলের নাম |
threads.frames.symbol | STRING | হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি জলমুক্ত না হয় |
threads.frames.offset | INT64 | বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে |
threads.frames.address | INT64 | বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে |
threads.frames.library | STRING | ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম |
threads.frames.owner | STRING | বিকাশকারী, বিক্রেতা, রানটাইম, প্ল্যাটফর্ম বা সিস্টেম৷ |
threads.frames.blamed | বুলিয়ান | Crashlytics-এর বিশ্লেষণ নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ |
unity_metadata.unity_version | STRING | ইউনিটির সংস্করণ এই ডিভাইসে চলছে |
unity_metadata.debug_build | বুলিয়ান | যদি এটি একটি ডিবাগ বিল্ড হয় |
unity_metadata.processor_type | STRING | প্রসেসরের ধরন |
unity_metadata.processor_count | INT64 | প্রসেসরের সংখ্যা (কোর) |
unity_metadata.processor_frequency_mhz | INT64 | MHz এ প্রসেসরের ফ্রিকোয়েন্সি |
unity_metadata.system_memory_size_mb | INT64 | Mb-এ সিস্টেমের মেমরির আকার |
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 | STRING | গ্রাফিক্স ডিভাইসের নাম |
unity_metadata.graphics_device_vendor | STRING | গ্রাফিক্স ডিভাইসের বিক্রেতা |
unity_metadata.graphics_device_version | STRING | গ্রাফিক্স ডিভাইসের সংস্করণ |
unity_metadata.graphics_device_type | STRING | গ্রাফিক্স ডিভাইসের ধরন |
unity_metadata.graphics_shader_level | INT64 | গ্রাফিক্সের ছায়ার স্তর |
unity_metadata.graphics_render_target_count | INT64 | গ্রাফিকাল রেন্ডারিং লক্ষ্যের সংখ্যা |
unity_metadata.graphics_copy_texture_support | STRING | ইউনিটি API- তে সংজ্ঞায়িত গ্রাফিক্স টেক্সচার অনুলিপি করার জন্য সমর্থন |
unity_metadata.graphics_max_texture_size | INT64 | টেক্সচার রেন্ডার করার জন্য নিবেদিত সর্বাধিক আকার |
unity_metadata.screen_size_px | STRING | পিক্সেলে স্ক্রিনের আকার, প্রস্থ x উচ্চতা হিসাবে ফর্ম্যাট করা হয়েছে |
unity_metadata.screen_resolution_dpi | STRING | ফ্লোটিং পয়েন্ট নম্বর হিসাবে স্ক্রিনের DPI |
unity_metadata.screen_refresh_rate_hz | INT64 | হার্জে স্ক্রিনের রিফ্রেশ রেট |
ডেটা স্টুডিওর সাথে এক্সপোর্ট করা ক্র্যাশলিটিক্স ডেটা ভিজ্যুয়ালাইজ করা
Google ডেটা স্টুডিও BigQuery-এ আপনার Crashlytics ডেটাসেটগুলিকে এমন রিপোর্টে পরিণত করে যা পড়া সহজ, শেয়ার করা সহজ এবং সম্পূর্ণরূপে কাস্টমাইজযোগ্য।
ডেটা স্টুডিও ব্যবহার সম্পর্কে আরও জানতে, ডেটা স্টুডিও কুইকস্টার্ট গাইড, ডেটা স্টুডিওতে স্বাগতম ।
একটি Crashlytics রিপোর্ট টেমপ্লেট ব্যবহার করে
ডেটা স্টুডিওতে Crashlytics-এর জন্য একটি নমুনা প্রতিবেদন রয়েছে যাতে এক্সপোর্ট করা Crashlytics BigQuery স্কিমা থেকে মাত্রা এবং মেট্রিক্সের একটি বিস্তৃত সেট রয়েছে। আপনি যদি Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট সক্ষম করে থাকেন, তাহলে আপনি ডেটা স্টুডিও টেমপ্লেটের রিয়েলটাইম ট্রেন্ডস পৃষ্ঠায় সেই ডেটা দেখতে পারেন। আপনার নিজের অ্যাপের ক্র্যাশ ডেটার উপর ভিত্তি করে দ্রুত নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি নমুনাটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন:
- Crashlytics ডেটা স্টুডিও ড্যাশবোর্ড টেমপ্লেট খুলুন।
- উপরের ডানদিকে কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।
- নতুন ডেটা উত্স ড্রপডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।
- BigQuery কার্ডে সিলেক্ট এ ক্লিক করুন।
- আমার প্রজেক্ট > [your-project-name] > firebase_crashlytics > [your-table-name] বেছে নিয়ে এক্সপোর্ট করা Crashlytics ডেটা সম্বলিত একটি টেবিল নির্বাচন করুন। আপনার ব্যাচ টেবিল সবসময় নির্বাচন করার জন্য উপলব্ধ; Crashlytics BigQuery স্ট্রিমিং এক্সপোর্ট চালু থাকলে, আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিল নির্বাচন করতে পারেন।
- কনফিগারেশনের অধীনে, Crashlytics টেমপ্লেট স্তরকে ডিফল্টে সেট করুন।
- নতুন ডেটা সোর্স তৈরি করতে কানেক্ট এ ক্লিক করুন।
- Crashlytics টেমপ্লেটে ফিরে যেতে প্রতিবেদনে যোগ করুন ক্লিক করুন।
- অবশেষে, Crashlytics ডেটা স্টুডিও ড্যাশবোর্ড টেমপ্লেটের আপনার অনুলিপি তৈরি করতে প্রতিবেদন তৈরি করুন- এ ক্লিক করুন।