আরও বিশ্লেষণের জন্য আপনি আপনার Firebase Crashlytics ডেটা BigQuery এ এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে এবং Google ডেটা স্টুডিওর সাথে ভিজ্যুয়ালাইজেশন এবং কাস্টম ড্যাশবোর্ডের জন্য এটি ব্যবহার করতে দেয়।
BigQuery এ এক্সপোর্ট চালু করুন
- Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।
- BigQuery কার্ডে, লিঙ্কে ক্লিক করুন।
- BigQuery এ এক্সপোর্ট সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
আপনি BigQuery এ রপ্তানি সক্ষম করলে কী হয় তা এখানে রয়েছে:
ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করেন এমন যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
Firebase আপনার Firebase প্রকল্প থেকে BigQuery এ আপনার ডেটার দৈনিক সিঙ্ক সেট আপ করে।
Firebase আপনার বিদ্যমান ডেটার একটি অনুলিপি BigQuery এ রপ্তানি করে। প্রতিটি লিঙ্ক করা অ্যাপের জন্য, এতে দৈনিক সিঙ্ক থেকে ডেটা সম্বলিত একটি ব্যাচ টেবিল অন্তর্ভুক্ত থাকে।
আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন , তাহলে সমস্ত লিঙ্ক করা অ্যাপের একটি রিয়েলটাইম টেবিল থাকবে যাতে ক্রমাগত ডেটা আপডেট হয়।
BigQuery এ রপ্তানি নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন ।
BigQuery এ কোন ডেটা রপ্তানি করা হয়?
Firebase Crashlytics ডেটা firebase_crashlytics
নামে একটি BigQuery ডেটাসেটে রপ্তানি করা হয়। ডিফল্টরূপে, আপনার প্রোজেক্টের প্রতিটি অ্যাপের জন্য Crashlytics ডেটাসেটের ভিতরে পৃথক টেবিল তৈরি করা হবে। ফায়ারবেস অ্যাপের শনাক্তকারীর উপর ভিত্তি করে টেবিলের নাম দেয়, পিরিয়ডগুলিকে আন্ডারস্কোরে রূপান্তরিত করে এবং শেষে একটি প্ল্যাটফর্মের নাম যুক্ত করা হয়।
উদাহরণস্বরূপ, com.google.test
প্যাকেজ নামের একটি Android অ্যাপের ডেটা com_google_test_ANDROID
নামের একটি টেবিলে থাকবে। এই ব্যাচ টেবিল প্রতিদিন একবার আপডেট করা হয়. আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন, তাহলে Crashlytics ডেটাও রিয়েলটাইমে com_google_test_ANDROID_REALTIME
নামের একটি টেবিলে স্ট্রিম করা হবে।
একটি টেবিলের প্রতিটি সারি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR সহ অ্যাপে ঘটে যাওয়া একটি ইভেন্টকে উপস্থাপন করে।
BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট
আপনি BigQuery স্ট্রিমিং এর মাধ্যমে আপনার Crashlytics ডেটা রিয়েলটাইমে স্ট্রিম করতে পারেন। লাইভ ডেটার প্রয়োজন হয় এমন যেকোন উদ্দেশ্যে আপনি এটি ব্যবহার করতে পারেন, যেমন একটি লাইভ ড্যাশবোর্ডে তথ্য উপস্থাপন করা, একটি রোলআউট লাইভ দেখা, বা অ্যালার্ট এবং কাস্টম ওয়ার্কফ্লো ট্রিগার করে এমন অ্যাপ্লিকেশন সমস্যাগুলি পর্যবেক্ষণ করা।
আপনি যখন BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করবেন, ব্যাচ টেবিলের পাশাপাশি আপনার কাছে একটি রিয়েলটাইম টেবিলও থাকবে। টেবিলের মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে রয়েছে:
ব্যাচ টেবিল | রিয়েলটাইম টেবিল |
---|---|
|
|
ব্যাচ টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে প্রবণতা সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে স্থায়ীভাবে সংরক্ষণ করি এবং সেগুলি 30 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, তখনই আমরা তা BigQuery এ লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল একটি সেলাই কোয়েরি সঙ্গে মিলিত হতে পারে উভয় সুবিধা পেতে.
ডিফল্টরূপে, রিয়েলটাইম টেবিলের পার্টিশনের মেয়াদ 30 দিনের জন্য থাকে। এটি কীভাবে সংশোধন করতে হয় তা জানতে, BigQuery ডকুমেন্টেশনে পার্টিশনের মেয়াদ সেট করুন দেখুন।
BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করুন
- Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।
- BigQuery কার্ডে, পরিচালনায় ক্লিক করুন।
- স্ট্রিমিং অন্তর্ভুক্ত করুন চেকবক্স নির্বাচন করুন।
এই ক্রিয়াটি আপনার সমস্ত লিঙ্ক করা অ্যাপের জন্য স্ট্রিমিং সক্ষম করে৷
রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
BigQuery এ রপ্তানি করে ডিভাইসের ধরন, অপারেটিং সিস্টেম, ব্যতিক্রম (Android অ্যাপ) বা ত্রুটি (Apple অ্যাপস) এবং Crashlytics লগের পাশাপাশি অন্যান্য ডেটা সহ কাঁচা ক্র্যাশ ডেটা থাকে।
Crashlytics ডেটা রপ্তানি করা হয় ঠিক কি এবং এর টেবিল স্কিমা পরে এই পৃষ্ঠায় পর্যালোচনা করুন।
একটি ডেটা স্টুডিও টেমপ্লেট ব্যবহার করুন
আপনার ডেটা স্টুডিও টেমপ্লেটে রিয়েলটাইম ডেটা সক্ষম করতে, ডেটা স্টুডিওর সাথে এক্সপোর্ট করা Crashlytics ডেটা ভিজ্যুয়ালাইজ করার নির্দেশাবলী অনুসরণ করুন।
ভিউ তৈরি করুন
আপনি BigQuery UI ব্যবহার করে প্রশ্নগুলিকে ভিউতে রূপান্তর করতে পারেন। বিশদ নির্দেশাবলীর জন্য, BigQuery ডকুমেন্টেশনে ভিউ তৈরি করুন দেখুন।
প্রশ্ন চালান
নিচের উদাহরণগুলি দেখায় যে আপনি আপনার Crashlytics ডেটাতে চালাতে পারেন এমন প্রতিবেদন তৈরি করতে যা ক্র্যাশ ইভেন্ট ডেটাকে আরও সহজে বোঝার সারাংশে একত্রিত করে। যেহেতু এই ধরনের রিপোর্টগুলি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে পাওয়া যায় না, তাই সেগুলি আপনার বিশ্লেষণ এবং ক্র্যাশ ডেটা বোঝার পরিপূরক হতে পারে।
উদাহরণ 1: দিনে দিনে ক্র্যাশ
যতটা সম্ভব বাগ ঠিক করার জন্য কাজ করার পরে, আপনি মনে করেন আপনার টিম অবশেষে আপনার নতুন ফটো শেয়ারিং অ্যাপ চালু করতে প্রস্তুত। আপনি করার আগে, আপনার বাগ-ব্যাশ সময়ের সাথে অ্যাপটিকে আরও স্থিতিশীল করে তুলেছে তা নিশ্চিত করতে আপনি গত মাসে প্রতিদিন ক্র্যাশের সংখ্যা পরীক্ষা করতে চান।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
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;
উদাহরণ 2: সবচেয়ে ব্যাপক ক্র্যাশগুলি খুঁজুন
প্রোডাকশন প্ল্যানগুলিকে সঠিকভাবে অগ্রাধিকার দিতে, আপনি আপনার অ্যাপে শীর্ষ 10টি সর্বাধিক বিস্তৃত ক্র্যাশগুলি খুঁজে পেতে চান৷ আপনি একটি প্রশ্ন তৈরি করেন যা তথ্যের প্রাসঙ্গিক পয়েন্টগুলি প্রদান করে।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
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 অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
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;
উদাহরণ 4: কাস্টম কী দ্বারা ফিল্টার করুন
আপনি একজন গেম ডেভেলপার যিনি আপনার গেমের কোন স্তরে সবচেয়ে বেশি ক্র্যাশ হয়েছে তা জানতে চান।
সেই পরিসংখ্যান ট্র্যাক করতে সাহায্য করার জন্য, আপনি current_level
নামক একটি কাস্টম Crashlytics কী সেট করুন এবং প্রতিবার ব্যবহারকারী যখন একটি নতুন স্তরে পৌঁছান তখন এটি আপডেট করুন।
সুইফট
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
উদ্দেশ্য-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
জাভা
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
উদাহরণ 5: ব্যবহারকারী আইডি নিষ্কাশন
প্রাথমিক অ্যাক্সেসে আপনার কাছে একটি 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: ক্র্যাশ সমস্যা দ্বারা প্রভাবিত ব্যবহারকারীর সংখ্যা, দেশ অনুসারে বিভক্ত
আপনার টিম একটি নতুন রিলিজের রোলআউটের সময় একটি জটিল বাগ সনাক্ত করেছে৷ আপনি নির্দিষ্ট ক্র্যাশ সমস্যা আইডি সনাক্ত করতে উপরের "সবচেয়ে ব্যাপক ক্র্যাশগুলি খুঁজুন" উদাহরণ থেকে প্রশ্নটি ব্যবহার করতে সক্ষম হয়েছেন৷ আপনার দল এখন দেখতে চায় যে এই ক্র্যাশটি বিশ্বের বিভিন্ন দেশে ব্যবহারকারীদের মধ্যে ছড়িয়ে পড়েছে কিনা।
এই প্রশ্নটি লিখতে, আপনার দলকে নিম্নলিখিতগুলি করতে হবে:
BigQuery এ Google Analytics ডেটা রপ্তানি সক্ষম করুন। BigQuery-এ প্রজেক্ট ডেটা এক্সপোর্ট দেখুন।
Google Analytics SDK এবং Crashlytics SDK উভয় ক্ষেত্রেই একটি ব্যবহারকারী আইডি পাস করতে আপনার অ্যাপ আপডেট করুন।
সুইফট
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
উদ্দেশ্য-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
জাভা
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Crashlytics ডেটাসেটে ক্র্যাশ সহ Google Analytics ডেটাসেটে ইভেন্টে যোগ দিতে ব্যবহারকারী আইডি ক্ষেত্র ব্যবহার করে এমন একটি ক্যোয়ারী লিখুন।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং
IOS
ব্যবহার করুন (প্যাকেজের নাম এবংANDROID
এর পরিবর্তে)।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: আজ পর্যন্ত সেরা 5টি সমস্যা
এখানে একটি 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;
উদাহরণ 9: আজ সহ DATE থেকে শীর্ষ 5টি সমস্যা
আপনি নির্ভরযোগ্য ব্যাচ ডেটাতে রিয়েলটাইম তথ্য যোগ করতে একটি স্টিচিং কোয়েরির সাথে ব্যাচ এবং রিয়েলটাইম টেবিলগুলিকে একত্রিত করতে পারেন। যেহেতু event_id
একটি প্রাথমিক কী, আপনি দুটি টেবিল থেকে যেকোনো সাধারণ ঘটনা অনুমান করতে DISTINCT event_id
ব্যবহার করতে পারেন।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
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 স্কিমা বুঝুন
আপনি যখন BigQuery এ Crashlytics ডেটা এক্সপোর্ট সেট আপ করেন, তখন Firebase সাম্প্রতিক ইভেন্টগুলি (ক্র্যাশ, অ-মৃত্যুর ত্রুটি এবং ANR) রপ্তানি করে, লিঙ্কের দুই দিন আগে পর্যন্ত ইভেন্ট সহ, 30 দিন পর্যন্ত ব্যাকফিল করার বিকল্প সহ।
সেই বিন্দু থেকে আপনি রপ্তানি নিষ্ক্রিয় না করা পর্যন্ত, Firebase Crashlytics ইভেন্টগুলি প্রতিদিন রপ্তানি করে। প্রতিটি এক্সপোর্টের পরে BigQuery এ ডেটা উপলব্ধ হতে কয়েক মিনিট সময় লাগতে পারে।
ডেটাসেট
Crashlytics Crashlytics ডেটার জন্য BigQuery এ একটি নতুন ডেটাসেট তৈরি করে। ডেটাসেটটি আপনার পুরো প্রকল্পকে কভার করে, এমনকি এতে একাধিক অ্যাপ থাকলেও।
টেবিল
Crashlytics আপনার প্রোজেক্টের প্রতিটি অ্যাপের জন্য ডেটাসেটে একটি টেবিল তৈরি করে, যদি না আপনি সেই অ্যাপের জন্য ডেটা এক্সপোর্ট করা থেকে অপ্ট আউট করেন। ফায়ারবেস অ্যাপের শনাক্তকারীর উপর ভিত্তি করে টেবিলের নাম দেয়, পিরিয়ডগুলিকে আন্ডারস্কোরে রূপান্তরিত করে এবং শেষে একটি প্ল্যাটফর্মের নাম যুক্ত করা হয়।
উদাহরণস্বরূপ, com.google.test
প্যাকেজ নামের একটি অ্যান্ড্রয়েড অ্যাপের ডেটা com_google_test_ANDROID
নামের একটি টেবিলে থাকবে এবং রিয়েলটাইম ডেটা (যদি সক্ষম করা থাকে) com_google_test_ANDROID_REALTIME
নামের একটি টেবিলে থাকবে
টেবিলে আপনার অ্যাপে আপনার দ্বারা সংজ্ঞায়িত যেকোনো কাস্টম Crashlytics কী ছাড়াও Crashlytics ডেটার একটি মানক সেট রয়েছে।
সারি
একটি টেবিলের প্রতিটি সারি অ্যাপটির সম্মুখীন হওয়া একটি ত্রুটি উপস্থাপন করে।
কলাম
একটি টেবিলের কলামগুলি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR-এর জন্য অভিন্ন। যদি BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে রিয়েলটাইম টেবিলে ব্যাচ টেবিলের মতো একই কলাম থাকবে। মনে রাখবেন যে আপনার সারিগুলিতে কলাম থাকতে পারে যা এমন ইভেন্টগুলিকে উপস্থাপন করে যেগুলির স্ট্যাক ট্রেস নেই৷
রপ্তানির মধ্যে থাকা কলামগুলি এই টেবিলে তালিকাভুক্ত করা হয়েছে:
ক্ষেত্রের নাম | ডেটা টাইপ | বর্ণনা |
---|---|---|
platform | STRING | ফায়ারবেস প্রকল্পে নিবন্ধিত অ্যাপের প্ল্যাটফর্ম (বৈধ মান: IOS বা ANDROID ) |
bundle_identifier | STRING | Firebase প্রোজেক্টে নিবন্ধিত অ্যাপটির অনন্য শনাক্তকারী (উদাহরণস্বরূপ,com.google.gmail )অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য, এটি অ্যাপের বান্ডেল আইডি। অ্যান্ড্রয়েড অ্যাপের জন্য, এটি অ্যাপটির প্যাকেজের নাম। |
event_id | STRING | অনুষ্ঠানের জন্য অনন্য আইডি |
is_fatal | বুলিয়ান | অ্যাপটি ক্র্যাশ হয়েছে কিনা |
error_type | STRING | ইভেন্টের ত্রুটির ধরন (উদাহরণস্বরূপ, FATAL , NON_FATAL , ANR , ইত্যাদি) |
issue_id | STRING | ঘটনার সঙ্গে যুক্ত সমস্যা |
variant_id | STRING | এই ইভেন্টের সাথে সম্পর্কিত সমস্যা বৈকল্পিক মনে রাখবেন যে সমস্ত ইভেন্টের একটি সম্পর্কিত সমস্যা বৈকল্পিক নেই। |
event_timestamp | টাইমস্ট্যাম্প | যখন ঘটনাটি ঘটেছে |
device | রেকর্ড | যে ডিভাইসে ঘটনাটি ঘটেছে |
device.manufacturer | STRING | ডিভাইস প্রস্তুতকারক |
device.model | STRING | ডিভাইস মডেল |
device.architecture | STRING | উদাহরণস্বরূপ, X86_32 , X86_64 , ARMV7 , ARM64 , ARMV7S , বা ARMV7K |
memory | রেকর্ড | ডিভাইসের মেমরি স্থিতি |
memory.used | INT64 | মেমরির বাইট ব্যবহার করা হয়েছে |
memory.free | INT64 | বাইট মেমরি অবশিষ্ট আছে |
storage | রেকর্ড | ডিভাইসের স্থায়ী সঞ্চয়স্থান |
storage.used | INT64 | স্টোরেজের বাইট ব্যবহার করা হয়েছে |
storage.free | INT64 | বাইট স্টোরেজ বাকি |
operating_system | রেকর্ড | ডিভাইসে OS এর বিশদ বিবরণ |
operating_system.display_version | STRING | ডিভাইসে OS এর সংস্করণ |
operating_system.name | STRING | ডিভাইসে OS এর নাম |
operating_system.modification_state | STRING | ডিভাইসটি পরিবর্তন করা হয়েছে কিনা (উদাহরণস্বরূপ, একটি জেলব্রোকেন অ্যাপটি MODIFIED এবং একটি রুট করা অ্যাপটি UNMODIFIED ) |
operating_system.type | STRING | (শুধুমাত্র অ্যাপল অ্যাপ) ডিভাইসে চলমান ওএসের ধরন (উদাহরণস্বরূপ, IOS , MACOS , ইত্যাদি) |
operating_system.device_type | STRING | ডিভাইসের ধরন (উদাহরণস্বরূপ, MOBILE , TABLET , TV , ইত্যাদি); "ডিভাইস বিভাগ" নামেও পরিচিত |
application | রেকর্ড | যে অ্যাপটি ইভেন্টটি তৈরি করেছে |
application.build_version | STRING | অ্যাপটির বিল্ড সংস্করণ |
application.display_version | STRING | |
user | রেকর্ড | (ঐচ্ছিক) অ্যাপের ব্যবহারকারী সম্পর্কে সংগৃহীত তথ্য |
user.name | STRING | (ঐচ্ছিক) ব্যবহারকারীর নাম |
user.email | STRING | (ঐচ্ছিক) ব্যবহারকারীর ইমেল ঠিকানা |
user.id | STRING | (ঐচ্ছিক) ব্যবহারকারীর সাথে যুক্ত একটি অ্যাপ-নির্দিষ্ট আইডি |
custom_keys | পুনরাবৃত্তি রেকর্ড | বিকাশকারী-সংজ্ঞায়িত কী-মান জোড়া |
custom_keys.key | STRING | একটি বিকাশকারী-সংজ্ঞায়িত কী |
custom_keys.value | STRING | একটি বিকাশকারী-সংজ্ঞায়িত মান |
installation_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 , ইত্যাদি। |
process_state | STRING | BACKGROUND বা FOREGROUND |
logs | পুনরাবৃত্তি রেকর্ড | Crashlytics লগার দ্বারা তৈরি করা টাইমস্ট্যাম্পযুক্ত লগ বার্তা, যদি সক্রিয় থাকে |
logs.timestamp | টাইমস্ট্যাম্প | যখন লগ করা হয়েছিল |
logs.message | STRING | লগ করা বার্তা |
breadcrumbs | পুনরাবৃত্তি রেকর্ড | টাইমস্ট্যাম্পযুক্ত 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 | উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM |
blame_frame.blamed | বুলিয়ান | Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ |
exceptions | পুনরাবৃত্তি রেকর্ড | (শুধুমাত্র অ্যান্ড্রয়েড) ব্যতিক্রম যা এই ইভেন্টের সময় ঘটেছে। নেস্টেড ব্যতিক্রমগুলি বিপরীত কালানুক্রমিক ক্রমে উপস্থাপিত হয়, যার মানে শেষ রেকর্ডটি নিক্ষেপ করা প্রথম ব্যতিক্রম। |
exceptions.type | STRING | ব্যতিক্রম প্রকার (উদাহরণস্বরূপ,java.lang.IllegalStateException) |
exceptions.exception_message | STRING | ব্যতিক্রমের সাথে যুক্ত একটি বার্তা |
exceptions.nested | বুলিয়ান | শেষ নিক্ষেপ করা ব্যতিক্রম ছাড়া সকলের জন্য সত্য (অর্থাৎ প্রথম রেকর্ড) |
exceptions.title | STRING | থ্রেড শিরোনাম |
exceptions.subtitle | STRING | থ্রেডের সাবটাইটেল |
exceptions.blamed | বুলিয়ান | সত্য যদি Crashlytics ব্যতিক্রমটি নির্ধারণ করে ত্রুটি বা ক্র্যাশের জন্য দায়ী |
exceptions.frames | পুনরাবৃত্তি রেকর্ড | ব্যতিক্রম সঙ্গে যুক্ত ফ্রেম |
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 | উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM |
exceptions.frames.blamed | বুলিয়ান | Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ |
error | পুনরাবৃত্তি রেকর্ড | (শুধুমাত্র অ্যাপল অ্যাপ) অ-মারাত্মক ত্রুটি |
error.queue_name | STRING | যে সারিতে থ্রেড চলছিল |
error.code | 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 | উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM |
error.frames.blamed | বুলিয়ান | Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ |
threads | পুনরাবৃত্তি রেকর্ড | অনুষ্ঠানের সময় উপস্থিত থ্রেড |
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 | থ্রেডের সাবটাইটেল |
threads.blamed | বুলিয়ান | 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 | উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM |
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 | হার্জে স্ক্রিনের রিফ্রেশ রেট |
ডেটা স্টুডিওর সাথে এক্সপোর্ট করা Crashlytics ডেটা ভিজ্যুয়ালাইজ করুন
Google ডেটা স্টুডিও BigQuery এ আপনার Crashlytics ডেটাসেটগুলিকে এমন রিপোর্টে পরিণত করে যা পড়া সহজ, শেয়ার করা সহজ এবং সম্পূর্ণরূপে কাস্টমাইজযোগ্য।
ডেটা স্টুডিও ব্যবহার সম্পর্কে আরও জানতে, ডেটা স্টুডিও কুইকস্টার্ট গাইড, ডেটা স্টুডিওতে স্বাগতম ।
একটি Crashlytics রিপোর্ট টেমপ্লেট ব্যবহার করুন
ডেটা স্টুডিওতে Crashlytics জন্য একটি নমুনা প্রতিবেদন রয়েছে যাতে এক্সপোর্ট করা Crashlytics BigQuery স্কিমা থেকে মাত্রা এবং মেট্রিক্সের একটি বিস্তৃত সেট রয়েছে। আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি ডেটা স্টুডিও টেমপ্লেটের রিয়েলটাইম ট্রেন্ডস পৃষ্ঠায় সেই ডেটা দেখতে পারেন। আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে দ্রুত নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি নমুনাটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন। :
উপরের ডানদিকে কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।
নতুন ডেটা উত্স ড্রপ ডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।
BigQuery কার্ডে সিলেক্ট এ ক্লিক করুন।
আমার প্রকল্পগুলি > PROJECT_ID > firebase_crashlytics > TABLE_NAME বেছে নিয়ে রপ্তানি করা Crashlytics ডেটা ধারণকারী একটি সারণী নির্বাচন করুন।
আপনার ব্যাচ টেবিল সবসময় নির্বাচন করার জন্য উপলব্ধ. যদি BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিল বেছে নিতে পারেন।
কনফিগারেশনের অধীনে, Crashlytics টেমপ্লেট স্তরকে ডিফল্টে সেট করুন।
নতুন ডেটা সোর্স তৈরি করতে কানেক্ট এ ক্লিক করুন।
Crashlytics টেমপ্লেটে ফিরে যেতে প্রতিবেদনে যোগ করুন ক্লিক করুন।
অবশেষে, Crashlytics ডেটা স্টুডিও ড্যাশবোর্ড টেমপ্লেটের আপনার অনুলিপি তৈরি করতে প্রতিবেদন তৈরি করুন- এ ক্লিক করুন।