BigQuery-এ Firebase Crashlytics ডেটা রপ্তানি করুন

আরও বিশ্লেষণের জন্য আপনি আপনার Firebase Crashlytics ডেটা BigQuery এ এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীর কাছে রপ্তানি করতে এবং Looker Studio সাথে ভিজ্যুয়ালাইজেশন এবং কাস্টম ড্যাশবোর্ডের জন্য ব্যবহার করতে দেয়।

রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?

BigQuery এ রপ্তানি করে ডিভাইসের ধরন, অপারেটিং সিস্টেম, ব্যতিক্রম (Android অ্যাপ) বা ত্রুটি (Apple অ্যাপস) এবং Crashlytics লগের পাশাপাশি অন্যান্য ডেটা সহ কাঁচা ক্র্যাশ ডেটা থাকে। আপনি ঠিক কি Crashlytics ডেটা রপ্তানি করা হয় এবং এর টেবিল স্কিমা পরে এই পৃষ্ঠায় পর্যালোচনা করতে পারেন।

আপনার এক্সপোর্ট করা Crashlytics ডেটা দিয়ে আপনি কী করতে পারেন তার কিছু উদাহরণ এখানে দেওয়া হল:

  • প্রশ্ন চালান
    আপনি Crashlytics ডেটাতে প্রশ্নগুলি চালাতে পারেন এমন প্রতিবেদন তৈরি করতে যা ক্র্যাশ ইভেন্ট ডেটাকে আরও সহজে বোঝা যায় এমন সারাংশে একত্রিত করে৷ যেহেতু এই ধরনের রিপোর্টগুলি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে পাওয়া যায় না, তাই সেগুলি আপনার বিশ্লেষণ এবং ক্র্যাশ ডেটা বোঝার পরিপূরক হতে পারে। পরে এই পৃষ্ঠায়, উদাহরণের প্রশ্নগুলির একটি নির্বাচন খুঁজুন।

  • একটি Looker Studio টেমপ্লেট ব্যবহার করুন
    Crashlytics আপনার এক্সপোর্ট করা ডেটা ভিজ্যুয়ালাইজ করার জন্য একটি পূর্ব-নির্মিত Looker Studio টেমপ্লেট প্রদান করে।

  • ভিউ তৈরি করুন
    BigQuery UI ব্যবহার করে, আপনি একটি "ভিউ" তৈরি করতে পারেন, যা একটি ভার্চুয়াল টেবিল যা SQL কোয়েরি দ্বারা সংজ্ঞায়িত করা হয়। বিভিন্ন ধরনের ভিউ এবং সেগুলি কীভাবে তৈরি করতে হয় সে সম্পর্কে বিস্তারিত নির্দেশাবলীর জন্য, BigQuery ডকুমেন্টেশন দেখুন।

BigQueryCrashlytics স্ট্রিমিং এক্সপোর্ট

আপনি BigQuery স্ট্রিমিং এর মাধ্যমে আপনার Crashlytics ডেটা রিয়েলটাইমে স্ট্রিম করতে পারেন। লাইভ ডেটার প্রয়োজন হয় এমন যেকোন উদ্দেশ্যে আপনি এটি ব্যবহার করতে পারেন, যেমন একটি লাইভ ড্যাশবোর্ডে তথ্য উপস্থাপন করা, একটি রোলআউট লাইভ দেখা, বা অ্যালার্ট এবং কাস্টম ওয়ার্কফ্লো ট্রিগার করে এমন অ্যাপ্লিকেশন সমস্যাগুলি পর্যবেক্ষণ করা।

আপনি যখন BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করবেন, ব্যাচ টেবিলের পাশাপাশি আপনার কাছে একটি রিয়েলটাইম টেবিলও থাকবে। টেবিলের মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে রয়েছে:

ব্যাচ টেবিল রিয়েলটাইম টেবিল
  • প্রতিদিন একবার ডেটা রপ্তানি করা হয়।
  • BigQuery এ ব্যাচ লেখার আগে ইভেন্টগুলি স্থিরভাবে সংরক্ষণ করা হয়।
  • 30 দিন আগে পর্যন্ত ডেটা ব্যাকফিল করা যেতে পারে*।
  • ডেটা রিয়েল টাইমে রপ্তানি করা হয়।
  • কোন ব্যাকফিলিং উপলব্ধ নেই.

ব্যাচ টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে প্রবণতা সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে স্থিরভাবে সংরক্ষণ করি এবং সেগুলি 30 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে*। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, তখনই আমরা তা BigQuery এ লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল একটি সেলাই কোয়েরি সঙ্গে মিলিত হতে পারে উভয় সুবিধা পেতে.

ডিফল্টরূপে, রিয়েলটাইম টেবিলের পার্টিশনের মেয়াদ 30 দিনের জন্য থাকে। এটি কীভাবে সংশোধন করতে হয় তা জানতে, BigQuery ডকুমেন্টেশনে পার্টিশনের মেয়াদ সেট করুন দেখুন।

* নতুন রপ্তানি পরিকাঠামোতে আপগ্রেডে ব্যাকফিল সমর্থন সম্পর্কে বিশদ দেখুন।



BigQuery এ এক্সপোর্ট চালু করুন

  1. Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, লিঙ্কে ক্লিক করুন।

  3. BigQuery এ এক্সপোর্ট সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।

    আপনি যদি BigQuery এ আপনার Crashlytics ডেটার কাছাকাছি রিয়েল-টাইম অ্যাক্সেস চান, তাহলে স্ট্রিমিং এক্সপোর্টে আপগ্রেড করার কথা বিবেচনা করুন।

BigQueryCrashlytics স্ট্রিমিং এক্সপোর্ট চালু করুন

  1. Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, পরিচালনায় ক্লিক করুন।

  3. স্ট্রিমিং অন্তর্ভুক্ত করুন চেকবক্স নির্বাচন করুন।

এই ক্রিয়াটি আপনার সমস্ত লিঙ্ক করা অ্যাপের জন্য স্ট্রিমিং সক্ষম করে৷

আপনি রপ্তানি সক্ষম করলে কি হবে?

  • আপনি ডেটাসেট অবস্থান নির্বাচন করুন. ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ আরও জানতে, বিদ্যমান রপ্তানির জন্য অবস্থান পরিবর্তন দেখুন।

    এই অবস্থানটি শুধুমাত্র BigQuery এ রপ্তানি করা ডেটার জন্য প্রযোজ্য, এবং এটি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে বা Android স্টুডিওতে ব্যবহারের জন্য সংরক্ষণ করা ডেটার অবস্থানকে প্রভাবিত করে না।

  • ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করেন এমন যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷

  • Firebase আপনার ডেটার দৈনিক সিঙ্ক BigQuery এ সেট আপ করে।

    • আপনি আপনার প্রোজেক্ট লিঙ্ক করার পরে, আপনাকে সাধারণত আপনার প্রথম ডেটা সেট BigQuery এ এক্সপোর্ট করার জন্য পরের দিনের সিঙ্ক হওয়া পর্যন্ত অপেক্ষা করতে হবে।

    • আপনি BigQuery এ সেট আপ করেছেন এমন কোনো নির্ধারিত রপ্তানি নির্বিশেষে দৈনিক সিঙ্ক প্রতিদিন একবার হয়। মনে রাখবেন যে সিঙ্ক কাজের সময় এবং সময়কাল পরিবর্তিত হতে পারে, তাই আমরা রপ্তানির নির্দিষ্ট সময়ের উপর ভিত্তি করে ডাউনস্ট্রিম অপারেশন বা কাজের সময় নির্ধারণের সুপারিশ করি না।

  • Firebase আপনার বিদ্যমান ডেটার একটি অনুলিপি BigQuery এ রপ্তানি করে। রপ্তানির জন্য ডেটার প্রাথমিক প্রচারে 48 ঘন্টা পর্যন্ত সময় লাগতে পারে।

    • প্রতিটি লিঙ্ক করা অ্যাপের জন্য, এই রপ্তানিটিতে দৈনিক সিঙ্ক থেকে ডেটা ধারণকারী একটি ব্যাচ টেবিল অন্তর্ভুক্ত রয়েছে।

    • আপনি ম্যানুয়ালি ব্যাচ টেবিলের জন্য গত 30 দিন পর্যন্ত বা সবচেয়ে সাম্প্রতিক তারিখের জন্য যখন আপনি BigQuery এ রপ্তানি সক্ষম করেছেন (যেটি সাম্প্রতিকতম) ডেটা ব্যাকফিল নির্ধারণ করতে পারেন।

    মনে রাখবেন যে আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি আগে Crashlytics ডেটা রপ্তানি সক্ষম করেন, তাহলে আপনি যেদিন রপ্তানি সক্ষম করেছেন তার 30 দিন আগেও আপনি ব্যাকফিল করতে পারবেন।

  • আপনি যদি BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন , তাহলে সমস্ত লিঙ্ক করা অ্যাপের একটি রিয়েলটাইম টেবিল থাকবে যাতে ক্রমাগত ডেটা আপডেট হয়।

BigQuery এ রপ্তানি নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন



উদাহরণ প্রশ্ন

উদাহরণ 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: ক্র্যাশ সমস্যা দ্বারা প্রভাবিত ব্যবহারকারীর সংখ্যা, দেশ অনুসারে বিভক্ত

আপনার টিম একটি নতুন রিলিজের রোলআউটের সময় একটি জটিল বাগ সনাক্ত করেছে৷ আপনি নির্দিষ্ট ক্র্যাশ সমস্যা আইডি সনাক্ত করতে উপরের "সবচেয়ে ব্যাপক ক্র্যাশগুলি খুঁজুন" উদাহরণ থেকে প্রশ্নটি ব্যবহার করতে সক্ষম হয়েছেন৷ আপনার দল এখন দেখতে চায় যে এই ক্র্যাশটি বিশ্বের বিভিন্ন দেশে ব্যবহারকারীদের মধ্যে ছড়িয়ে পড়েছে কিনা।

এই প্রশ্নটি লিখতে, আপনার দলকে নিম্নলিখিতগুলি করতে হবে:

  1. BigQueryGoogle Analytics ডেটা রপ্তানি সক্ষম করুন। BigQuery-এ প্রজেক্ট ডেটা এক্সপোর্ট দেখুন।

  2. 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");
    
  3. 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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD")
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;



Looker Studio সাথে এক্সপোর্ট করা Crashlytics ডেটা ভিজ্যুয়ালাইজ করুন

Looker Studio BigQuery এ আপনার Crashlytics ডেটাসেটগুলিকে এমন রিপোর্টে পরিণত করে যা পড়া সহজ, শেয়ার করা সহজ এবং সম্পূর্ণ কাস্টমাইজযোগ্য।

Looker Studio ব্যবহার সম্পর্কে আরও জানতে, তাদের স্বাগত নির্দেশিকা দেখুন।

একটি Crashlytics রিপোর্ট টেমপ্লেট ব্যবহার করুন

Looker Studio Crashlytics জন্য একটি নমুনা প্রতিবেদন রয়েছে যাতে এক্সপোর্ট করা Crashlytics BigQuery স্কিমা থেকে মাত্রা এবং মেট্রিক্সের একটি বিস্তৃত সেট রয়েছে। আপনি যদি BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি Looker Studio টেমপ্লেটের রিয়েলটাইম প্রবণতা পৃষ্ঠায় সেই ডেটা দেখতে পারেন। আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে দ্রুত নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি নমুনাটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন:

  1. Crashlytics Looker Studio ড্যাশবোর্ড টেমপ্লেট খুলুন।

  2. উপরের ডানদিকে কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।

  3. নতুন ডেটা উত্স ড্রপ ডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।

  4. BigQuery কার্ডে সিলেক্ট এ ক্লিক করুন।

  5. আমার প্রকল্পগুলি > PROJECT_ID > firebase_crashlytics > TABLE_NAME বেছে নিয়ে রপ্তানি করা Crashlytics ডেটা ধারণকারী একটি সারণী নির্বাচন করুন।

    আপনার ব্যাচ টেবিল সবসময় নির্বাচন করার জন্য উপলব্ধ. যদি BigQueryCrashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিল বেছে নিতে পারেন।

  6. কনফিগারেশনের অধীনে, Crashlytics টেমপ্লেট স্তরকে ডিফল্টে সেট করুন।

  7. নতুন ডেটা সোর্স তৈরি করতে কানেক্ট এ ক্লিক করুন।

  8. Crashlytics টেমপ্লেটে ফিরে যেতে প্রতিবেদনে যোগ করুন ক্লিক করুন।

  9. অবশেষে, Crashlytics Looker Studio ড্যাশবোর্ড টেমপ্লেটের আপনার অনুলিপি তৈরি করতে প্রতিবেদন তৈরি করুন ক্লিক করুন।



BigQueryCrashlytics স্কিমা বুঝুন

Firebase Crashlytics ডেটা firebase_crashlytics নামের একটি BigQuery ডেটাসেটে রপ্তানি করা হয়। ডেটাসেটটি আপনার পুরো প্রকল্পকে কভার করে, এমনকি এতে একাধিক অ্যাপ থাকলেও।

টেবিল

ডিফল্টরূপে, Firebase আপনার প্রজেক্টের প্রতিটি অ্যাপের জন্য Crashlytics ডেটাসেটের ভিতরে পৃথক টেবিল তৈরি করে যা BigQuery সাথে লিঙ্ক করা আছে। অ্যাপের শনাক্তকারীর (আন্ডারস্কোরে রূপান্তরিত পিরিয়ড সহ) এবং অ্যাপের প্ল্যাটফর্ম ( _IOS বা _ANDROID ) এর সাথে যুক্ত করা হয়েছে। উদাহরণস্বরূপ, com.google.test প্যাকেজ নামের একটি Android অ্যাপের ডেটা com_google_test_ANDROID নামের একটি টেবিলে থাকবে।

আপনি যদি BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন, তাহলে Crashlytics ডেটা রিয়েলটাইমে _REALTIME (উদাহরণস্বরূপ, com_google_test_ANDROID_REALTIME ) এর সাথে যুক্ত একটি টেবিলে স্ট্রিম করা হবে।

একটি টেবিলের প্রতিটি সারি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR সহ অ্যাপে ঘটে যাওয়া একটি ইভেন্টকে উপস্থাপন করে।

টেবিলে আপনার অ্যাপে আপনার দ্বারা সংজ্ঞায়িত যেকোনো কাস্টম Crashlytics কী ছাড়াও Crashlytics ডেটার একটি মানক সেট রয়েছে।

সারি

একটি টেবিলের প্রতিটি সারি অ্যাপটির সম্মুখীন হওয়া একটি ত্রুটি উপস্থাপন করে।

কলাম

একটি টেবিলের কলামগুলি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR-এর জন্য অভিন্ন। যদি BigQueryCrashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে রিয়েলটাইম টেবিলে ব্যাচ টেবিলের মতো একই কলাম থাকবে। মনে রাখবেন যে আপনার সারিগুলিতে কলাম থাকতে পারে যা এমন ইভেন্টগুলিকে উপস্থাপন করে যেগুলির স্ট্যাক ট্রেস নেই৷

এখানে রপ্তানি করা Crashlytics ডেটার জন্য টেবিলের কলামগুলি রয়েছে:

ক্ষেত্রের নাম ডেটা টাইপ বর্ণনা
app_orientation STRING উদাহরণস্বরূপ, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN , ইত্যাদি।
application রেকর্ড যে অ্যাপটি ইভেন্টটি তৈরি করেছে
application.build_version STRING অ্যাপটির বিল্ড সংস্করণ
application.display_version STRING
blame_frame রেকর্ড ক্র্যাশ বা ত্রুটির মূল কারণ হিসেবে চিহ্নিত ফ্রেম
blame_frame.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে
জাভা ফ্রেমের জন্য আনসেট
blame_frame.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
blame_frame.file STRING ফ্রেম ফাইলের নাম
blame_frame.library STRING ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম
blame_frame.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
blame_frame.offset INT64 বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে
জাভা ব্যতিক্রমের জন্য আনসেট
blame_frame.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM
blame_frame.symbol STRING হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয়
breadcrumbs পুনরাবৃত্তি রেকর্ড টাইমস্ট্যাম্পযুক্ত Google Analytics ব্রেডক্রাম্ব , যদি সক্ষম করা থাকে
breadcrumbs.name STRING ব্রেডক্রাম্বের সাথে যুক্ত নাম
breadcrumbs.params পুনরাবৃত্তি রেকর্ড ব্রেডক্রাম্বের সাথে যুক্ত পরামিতি
breadcrumbs.params.key STRING ব্রেডক্রাম্বের সাথে যুক্ত একটি প্যারামিটার কী
breadcrumbs.params.value STRING ব্রেডক্রাম্বের সাথে সম্পর্কিত একটি প্যারামিটার মান
breadcrumbs.timestamp টাইমস্ট্যাম্প ব্রেডক্রাম্বের সাথে যুক্ত টাইমস্ট্যাম্প
bundle_identifier STRING Firebase প্রোজেক্টে নিবন্ধিত অ্যাপটির অনন্য শনাক্তকারী (উদাহরণস্বরূপ, com.google.gmail )
অ্যাপল প্ল্যাটফর্ম অ্যাপের জন্য, এটি অ্যাপের বান্ডেল আইডি।
অ্যান্ড্রয়েড অ্যাপের জন্য, এটি অ্যাপটির প্যাকেজের নাম।
crashlytics_sdk_versions STRING Crashlytics SDK সংস্করণ যা ইভেন্টটি তৈরি করেছে৷
custom_keys পুনরাবৃত্তি রেকর্ড বিকাশকারী-সংজ্ঞায়িত কী-মান জোড়া
custom_keys.key STRING একটি বিকাশকারী-সংজ্ঞায়িত কী
custom_keys.value STRING একটি বিকাশকারী-সংজ্ঞায়িত মান
device রেকর্ড যে ডিভাইসে ঘটনাটি ঘটেছে
device_orientation STRING উদাহরণস্বরূপ, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN , ইত্যাদি।
device.architecture STRING উদাহরণস্বরূপ, X86_32 , X86_64 , ARMV7 , ARM64 , ARMV7S , বা ARMV7K
device.manufacturer STRING ডিভাইস প্রস্তুতকারক
device.model STRING ডিভাইস মডেল
error পুনরাবৃত্তি রেকর্ড (শুধুমাত্র অ্যাপল অ্যাপ) অ-মারাত্মক ত্রুটি
error_type STRING ইভেন্টের ত্রুটির ধরন (উদাহরণস্বরূপ, FATAL , NON_FATAL , ANR , ইত্যাদি)
error.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
error.code INT64 অ্যাপের কাস্টম লগ করা NSError এর সাথে যুক্ত ত্রুটি কোড
error.frames পুনরাবৃত্তি রেকর্ড স্ট্যাকট্রেস এর ফ্রেম
error.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে
error.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
error.frames.file STRING ফ্রেম ফাইলের নাম
error.frames.library STRING ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম
error.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
error.frames.offset INT64 বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে
error.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM
error.frames.symbol STRING হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয়
error.queue_name STRING যে সারিতে থ্রেড চলছিল
error.subtitle STRING থ্রেডের সাবটাইটেল
error.title STRING থ্রেড শিরোনাম
event_id STRING অনুষ্ঠানের জন্য অনন্য আইডি
event_timestamp টাইমস্ট্যাম্প যখন ঘটনাটি ঘটেছে
exceptions পুনরাবৃত্তি রেকর্ড (শুধুমাত্র অ্যান্ড্রয়েড) ব্যতিক্রম যা এই ইভেন্টের সময় ঘটেছে। নেস্টেড ব্যতিক্রমগুলি বিপরীত কালানুক্রমিক ক্রমে উপস্থাপিত হয়, যার মানে শেষ রেকর্ডটি নিক্ষেপ করা প্রথম ব্যতিক্রম।
exceptions.blamed বুলিয়ান সত্য যদি Crashlytics ব্যতিক্রমটি নির্ধারণ করে ত্রুটি বা ক্র্যাশের জন্য দায়ী
exceptions.exception_message STRING ব্যতিক্রমের সাথে যুক্ত একটি বার্তা
exceptions.frames পুনরাবৃত্তি রেকর্ড ব্যতিক্রম সঙ্গে যুক্ত ফ্রেম
exceptions.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে
জাভা ফ্রেমের জন্য আনসেট
exceptions.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
exceptions.frames.file STRING ফ্রেম ফাইলের নাম
exceptions.frames.library STRING ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম
exceptions.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
exceptions.frames.offset INT64 বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে
জাভা ব্যতিক্রমের জন্য আনসেট
exceptions.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM
exceptions.frames.symbol STRING হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি হাইড্রেটযোগ্য না হয়
exceptions.nested বুলিয়ান শেষ নিক্ষেপ করা ব্যতিক্রম ছাড়া সকলের জন্য সত্য (অর্থাৎ প্রথম রেকর্ড)
exceptions.subtitle STRING থ্রেডের সাবটাইটেল
exceptions.title STRING থ্রেড শিরোনাম
exceptions.type STRING ব্যতিক্রম প্রকার (উদাহরণস্বরূপ, java.lang.IllegalStateException)
installation_uuid STRING একটি আইডি যা একটি অনন্য অ্যাপ এবং ডিভাইস ইনস্টলেশন শনাক্ত করে
is_fatal বুলিয়ান অ্যাপটি ক্র্যাশ হয়েছে কিনা
issue_id STRING ঘটনার সঙ্গে যুক্ত সমস্যা
logs পুনরাবৃত্তি রেকর্ড Crashlytics লগার দ্বারা তৈরি করা টাইমস্ট্যাম্পযুক্ত লগ বার্তা, যদি সক্রিয় থাকে
logs.message STRING লগ করা বার্তা
logs.timestamp টাইমস্ট্যাম্প যখন লগ করা হয়েছিল
memory রেকর্ড ডিভাইসের মেমরি স্থিতি
memory.free INT64 বাইট মেমরি অবশিষ্ট আছে
memory.used INT64 মেমরির বাইট ব্যবহার করা হয়েছে
operating_system রেকর্ড ডিভাইসে OS এর বিশদ বিবরণ
operating_system.device_type STRING ডিভাইসের ধরন (উদাহরণস্বরূপ, MOBILE , TABLET , TV , ইত্যাদি); "ডিভাইস বিভাগ" নামেও পরিচিত
operating_system.display_version STRING ডিভাইসে OS এর সংস্করণ
operating_system.modification_state STRING ডিভাইসটি পরিবর্তন করা হয়েছে কিনা (উদাহরণস্বরূপ, একটি জেলব্রোকেন অ্যাপটি MODIFIED হয়েছে এবং একটি রুট করা অ্যাপটি UNMODIFIED )
operating_system.name STRING ডিভাইসে OS এর নাম
operating_system.type STRING (শুধুমাত্র অ্যাপল অ্যাপ) ডিভাইসে চলমান ওএসের ধরন (উদাহরণস্বরূপ, IOS , MACOS , ইত্যাদি)
platform STRING ফায়ারবেস প্রকল্পে নিবন্ধিত অ্যাপের প্ল্যাটফর্ম (বৈধ মান: IOS বা ANDROID )
process_state STRING BACKGROUND বা FOREGROUND
storage রেকর্ড ডিভাইসের স্থায়ী সঞ্চয়স্থান
storage.free INT64 বাইট স্টোরেজ বাকি
storage.used INT64 স্টোরেজের বাইট ব্যবহার করা হয়েছে
threads পুনরাবৃত্তি রেকর্ড অনুষ্ঠানের সময় উপস্থিত থ্রেড
threads.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
threads.code INT64 (শুধুমাত্র অ্যাপল অ্যাপস) অ্যাপ্লিকেশনের কাস্টম লগ করা NSError এর ত্রুটি কোড
threads.crash_address INT64 সিগন্যালের ঠিকানা যা অ্যাপ্লিকেশনটি ক্র্যাশ করেছে; শুধুমাত্র বিপর্যস্ত নেটিভ থ্রেডে উপস্থিত
threads.crashed বুলিয়ান থ্রেড বিপর্যস্ত কিনা
threads.frames পুনরাবৃত্তি রেকর্ড থ্রেড এর ফ্রেম
threads.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড ধারণ করে
threads.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
threads.frames.file STRING ফ্রেম ফাইলের নাম
threads.frames.library STRING ফ্রেম অন্তর্ভুক্ত লাইব্রেরির প্রদর্শন নাম
threads.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
threads.frames.offset INT64 বাইট অফসেট বাইনারি ইমেজ যে কোড ধারণ করে
threads.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM , বা SYSTEM
threads.frames.symbol STRING হাইড্রেটেড চিহ্ন, বা কাঁচা প্রতীক যদি এটি জলমুক্ত না হয়
threads.queue_name STRING (শুধুমাত্র অ্যাপল অ্যাপস) যে সারিতে থ্রেড চলছিল
threads.signal_code STRING সিগন্যালের কোড যার কারণে অ্যাপটি ক্র্যাশ হয়েছে; শুধুমাত্র বিপর্যস্ত নেটিভ থ্রেডে উপস্থিত
threads.signal_name STRING যে সিগন্যালটির কারণে অ্যাপটি ক্র্যাশ হয়েছে, শুধুমাত্র ক্র্যাশ হওয়া নেটিভ থ্রেডে উপস্থিত থাকে
threads.subtitle STRING থ্রেডের সাবটাইটেল
threads.thread_name STRING থ্রেড এর নাম
threads.title STRING থ্রেড শিরোনাম
unity_metadata.debug_build বুলিয়ান যদি এটি একটি ডিবাগ বিল্ড হয়
unity_metadata.graphics_copy_texture_support STRING ইউনিটি API- তে সংজ্ঞায়িত গ্রাফিক্স টেক্সচার অনুলিপি করার জন্য সমর্থন
unity_metadata.graphics_device_id INT64 গ্রাফিক্স ডিভাইসের শনাক্তকারী
unity_metadata.graphics_device_name STRING গ্রাফিক্স ডিভাইসের নাম
unity_metadata.graphics_device_type STRING গ্রাফিক্স ডিভাইসের ধরন
unity_metadata.graphics_device_vendor_id INT64 গ্রাফিক্স প্রসেসরের বিক্রেতার শনাক্তকারী
unity_metadata.graphics_device_vendor STRING গ্রাফিক্স ডিভাইসের বিক্রেতা
unity_metadata.graphics_device_version STRING গ্রাফিক্স ডিভাইসের সংস্করণ
unity_metadata.graphics_max_texture_size INT64 টেক্সচার রেন্ডার করার জন্য নিবেদিত সর্বাধিক আকার
unity_metadata.graphics_memory_size_mb INT64 এমবি-তে গ্রাফিক্স মেমরি
unity_metadata.graphics_render_target_count INT64 গ্রাফিকাল রেন্ডারিং লক্ষ্যের সংখ্যা
unity_metadata.graphics_shader_level INT64 গ্রাফিক্সের ছায়ার স্তর
unity_metadata.processor_count INT64 প্রসেসরের সংখ্যা (কোর)
unity_metadata.processor_frequency_mhz INT64 MHz এ প্রসেসরের ফ্রিকোয়েন্সি
unity_metadata.processor_type STRING প্রসেসরের ধরন
unity_metadata.screen_refresh_rate_hz INT64 হার্জে স্ক্রিনের রিফ্রেশ রেট
unity_metadata.screen_resolution_dpi STRING ফ্লোটিং পয়েন্ট নম্বর হিসাবে স্ক্রিনের DPI
unity_metadata.screen_size_px STRING পিক্সেলে স্ক্রিনের আকার, প্রস্থ x উচ্চতা হিসাবে ফর্ম্যাট করা হয়েছে
unity_metadata.system_memory_size_mb INT64 Mb-এ সিস্টেমের মেমরির আকার
unity_metadata.unity_version STRING ইউনিটির সংস্করণ এই ডিভাইসে চলছে
user রেকর্ড (ঐচ্ছিক) অ্যাপের ব্যবহারকারী সম্পর্কে সংগৃহীত তথ্য
user.email STRING (ঐচ্ছিক) ব্যবহারকারীর ইমেল ঠিকানা
user.id STRING (ঐচ্ছিক) ব্যবহারকারীর সাথে যুক্ত একটি অ্যাপ-নির্দিষ্ট আইডি
user.name STRING (ঐচ্ছিক) ব্যবহারকারীর নাম
variant_id STRING এই ইভেন্টের সাথে সম্পর্কিত সমস্যা বৈকল্পিক
মনে রাখবেন যে সমস্ত ইভেন্টের একটি সম্পর্কিত সমস্যা বৈকল্পিক নেই।



নতুন রপ্তানি পরিকাঠামোতে আপগ্রেড করুন

2024 সালের অক্টোবরের মাঝামাঝি, Crashlytics BigQueryCrashlytics ডেটা ব্যাচ রপ্তানির জন্য একটি নতুন পরিকাঠামো চালু করেছে।

সমস্ত Firebase প্রকল্পগুলি 15 সেপ্টেম্বর, 2025 এর প্রথম দিকে নতুন ব্যাচ রপ্তানি পরিকাঠামোতে স্বয়ংক্রিয়ভাবে আপগ্রেড হবে। আপনি এই তারিখের আগে আপগ্রেড করতে পারেন, তবে নিশ্চিত করুন যে আপনার BigQuery ব্যাচ টেবিলগুলি আপগ্রেড করার পূর্বশর্তগুলি পূরণ করে।

আপনি নতুন পরিকাঠামোতে আপগ্রেড করতে পারেন, তবে নিশ্চিত করুন যে আপনার BigQuery ব্যাচ টেবিলগুলি আপগ্রেড করার পূর্বশর্তগুলি পূরণ করে৷

আপনি নতুন পরিকাঠামোতে আছেন কিনা তা নির্ধারণ করুন

আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি বা তার পরে ব্যাচ রপ্তানি সক্ষম করেন, তাহলে আপনার Firebase প্রকল্প স্বয়ংক্রিয়ভাবে নতুন রপ্তানি পরিকাঠামো ব্যবহার করছে।

আপনার প্রকল্প কোন পরিকাঠামো ব্যবহার করছে তা আপনি পরীক্ষা করতে পারেন: Google Cloud কনসোলে যান এবং যদি আপনার "ডেটা ট্রান্সফার কনফিগারেশন" লেবেলযুক্ত Firebase Crashlytics with Multi-Region Support , তাহলে আপনার প্রকল্পটি নতুন রপ্তানি পরিকাঠামো ব্যবহার করছে৷

পুরানো রপ্তানি অবকাঠামো এবং নতুন রপ্তানি অবকাঠামোর মধ্যে গুরুত্বপূর্ণ পার্থক্য

  • নতুন অবকাঠামো মার্কিন যুক্তরাষ্ট্রের বাইরে Crashlytics ডেটাসেট অবস্থান সমর্থন করে।

    • 2024 সালের অক্টোবরের মাঝামাঝি আগে রপ্তানি সক্ষম করা হয়েছে এবং নতুন রপ্তানি পরিকাঠামোতে আপগ্রেড করা হয়েছে — আপনি এখন বিকল্পভাবে ডেটা এক্সপোর্টের জন্য অবস্থান পরিবর্তন করতে পারেন।

    • 2024 সালের অক্টোবরের মাঝামাঝি বা তার পরে রপ্তানি সক্ষম হয়েছে — সেটআপের সময় আপনাকে ডেটা রপ্তানির জন্য একটি অবস্থান নির্বাচন করতে বলা হয়েছিল।

  • আপনি রপ্তানি সক্ষম করার আগে থেকে নতুন পরিকাঠামো ডেটার ব্যাকফিল সমর্থন করে না।

    • আপনি রপ্তানি সক্ষম করার তারিখের 30 দিন আগে পুরানো অবকাঠামো ব্যাকফিল সমর্থিত।

    • নতুন পরিকাঠামো গত 30 দিন পর্যন্ত বা সাম্প্রতিকতম তারিখের জন্য ব্যাকফিল সমর্থন করে যখন আপনি BigQuery এ রপ্তানি সক্ষম করেছেন (যেটি সাম্প্রতিকতম)।

  • আপনার Firebase প্রোজেক্টে আপনার Firebase অ্যাপের জন্য সেট করা শনাক্তকারী ব্যবহার করে নতুন পরিকাঠামোর নাম BigQuery ব্যাচ টেবিল।

    • পুরানো অবকাঠামো আপনার অ্যাপের বাইনারিতে বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে নাম সহ ব্যাচ টেবিলে ডেটা লিখেছে।

    • নতুন পরিকাঠামো আপনার Firebase প্রকল্পে আপনার নিবন্ধিত Firebase Apps-এর জন্য সেট করা বান্ডেল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে নাম সহ ব্যাচ টেবিলে ডেটা লেখে।

ধাপ 1 : আপগ্রেড করার পূর্বশর্ত

  1. আপনার বিদ্যমান BigQuery ব্যাচ সারণীগুলি আপনার Firebase প্রকল্পে আপনার নিবন্ধিত Firebase অ্যাপগুলির জন্য সেট করা বান্ডেল আইডি বা প্যাকেজ নামের সাথে মিলে যাওয়া শনাক্তকারী ব্যবহার করছে কিনা পরীক্ষা করুন৷ যদি সেগুলি মেলে না, তাহলে আপনি আপনার রপ্তানি করা ব্যাচ ডেটাতে ব্যাঘাত অনুভব করতে পারেন৷ বেশিরভাগ প্রকল্প একটি সঠিক এবং সামঞ্জস্যপূর্ণ অবস্থায় থাকবে, তবে আপগ্রেড করার আগে এটি পরীক্ষা করা গুরুত্বপূর্ণ।

    • আপনি Firebase কনসোলে আপনার Firebase প্রকল্পে নিবন্ধিত সমস্ত Firebase অ্যাপ খুঁজে পেতে পারেন: আপনার প্রকল্প সেটিংসে যান, তারপর আপনার সমস্ত Firebase অ্যাপ এবং তাদের তথ্য দেখতে আপনার অ্যাপস কার্ডে স্ক্রোল করুন।

    • আপনি Google Cloud কনসোলের BigQuery পৃষ্ঠায় আপনার সমস্ত BigQuery ব্যাচ টেবিল খুঁজে পেতে পারেন।

    উদাহরণস্বরূপ, এখানে আদর্শ রাজ্যগুলি যেখানে আপগ্রেড করতে আপনার কোন সমস্যা হবে না:

    • আপনার কাছে com_yourcompany_yourproject_IOS নামে একটি ব্যাচ টেবিল এবং একটি Firebase iOS+ অ্যাপ রয়েছে যার বান্ডেল আইডি com.yourcompany.yourproject আপনার Firebase প্রকল্পে নিবন্ধিত।

    • আপনার কাছে com_yourcompany_yourproject_ANDROID নামে একটি ব্যাচ টেবিল এবং com.yourcompany.yourproject আপনার Firebase প্রকল্পে নিবন্ধিত প্যাকেজ নামের একটি Firebase Android অ্যাপ রয়েছে।

  2. আপনার যদি ব্যাচ টেবিলের নাম থাকে যা আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য সেট করা শনাক্তকারীর সাথে মেলে না , তাহলে ম্যানুয়ালি আপগ্রেড করার আগে বা 15 সেপ্টেম্বর, 2025 এর আগে আপনার ব্যাচ রপ্তানিতে ব্যাঘাত এড়াতে এই পৃষ্ঠায় পরে নির্দেশাবলী অনুসরণ করুন

ধাপ 2 : ম্যানুয়ালি নতুন পরিকাঠামোতে আপগ্রেড করুন

আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি আগে ব্যাচ রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি Firebase কনসোলে Crashlytics ডেটা এক্সপোর্ট বন্ধ টগল করে নতুন পরিকাঠামোতে ম্যানুয়ালি আপগ্রেড করতে পারেন।

এখানে বিস্তারিত পদক্ষেপ আছে:

  1. Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, পরিচালনায় ক্লিক করুন।

  3. রপ্তানি অক্ষম করতে Crashlytics স্লাইডারটি টগল করুন। অনুরোধ করা হলে, নিশ্চিত করুন যে আপনি ডেটা এক্সপোর্ট বন্ধ করতে চান।

  4. রপ্তানি পুনরায় সক্ষম করতে অবিলম্বে আবার Crashlytics স্লাইডারে টগল করুন৷ অনুরোধ করা হলে, নিশ্চিত করুন যে আপনি ডেটা রপ্তানি করতে চান।

    BigQuery এ আপনার Crashlytics ডেটা এক্সপোর্ট এখন নতুন এক্সপোর্ট ইনফ্রাস্ট্রাকচার ব্যবহার করছে।

আপনার বিদ্যমান ব্যাচ টেবিলের নাম আপনার Firebase অ্যাপ শনাক্তকারীর সাথে মেলে না

,

আপনি আরও বিশ্লেষণের জন্য আপনার Firebase Crashlytics ডেটা BigQuery রফতানি করতে পারেন। BigQuery আপনাকে BigQuery এসকিউএল ব্যবহার করে ডেটা বিশ্লেষণ করতে দেয়, এটি অন্য ক্লাউড সরবরাহকারীর কাছে রফতানি করতে এবং এটি Looker Studio সাথে ভিজ্যুয়ালাইজেশন এবং কাস্টম ড্যাশবোর্ডের জন্য ব্যবহার করতে দেয়।

রফতানি করা ডেটা দিয়ে আপনি কী করতে পারেন?

BigQuery রফতানিতে ডিভাইসের ধরণ, অপারেটিং সিস্টেম, ব্যতিক্রম (অ্যান্ড্রয়েড অ্যাপ্লিকেশন) বা ত্রুটি (অ্যাপল অ্যাপ্লিকেশন) এবং Crashlytics লগগুলি, পাশাপাশি অন্যান্য ডেটা সহ কাঁচা ক্র্যাশ ডেটা রয়েছে। এই পৃষ্ঠায় পরে কী Crashlytics ডেটা রফতানি করা হয় এবং এর টেবিল স্কিমা ঠিক তা আপনি পর্যালোচনা করতে পারেন।

আপনার রফতানি Crashlytics ডেটা দিয়ে আপনি কী করতে পারেন তার কয়েকটি উদাহরণ এখানে রয়েছে:

  • প্রশ্ন চালান
    সামগ্রিক ক্র্যাশ ইভেন্টের ডেটা আরও সহজেই বোঝার সংক্ষিপ্তসারগুলিতে এমন প্রতিবেদন তৈরি করতে আপনি আপনার Crashlytics ডেটাতে প্রশ্নগুলি চালাতে পারেন। যেহেতু এই ধরণের প্রতিবেদনগুলি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে উপলভ্য নয়, তাই তারা আপনার বিশ্লেষণ এবং ক্র্যাশ ডেটা বোঝার পরিপূরক করতে পারে। পরে এই পৃষ্ঠায়, উদাহরণ প্রশ্নের একটি নির্বাচন সন্ধান করুন।

  • একটি Looker Studio টেম্পলেট ব্যবহার করুন
    Crashlytics আপনার রফতানি ডেটা ভিজ্যুয়ালাইজ করার জন্য একটি প্রাক-বিল্ট Looker Studio টেম্পলেট সরবরাহ করে।

  • ভিউ তৈরি করুন
    BigQuery ইউআই ব্যবহার করে আপনি একটি "ভিউ" তৈরি করতে পারেন, যা একটি এসকিউএল ক্যোয়ারী দ্বারা সংজ্ঞায়িত একটি ভার্চুয়াল টেবিল। বিভিন্ন ধরণের ভিউ এবং সেগুলি কীভাবে তৈরি করবেন সে সম্পর্কে বিস্তারিত নির্দেশাবলীর জন্য, BigQuery ডকুমেন্টেশন দেখুন।

Crashlytics স্ট্রিমিং রফতানি BigQuery

আপনি BigQuery স্ট্রিমিং সহ রিয়েলটাইমে আপনার Crashlytics ডেটা স্ট্রিম করতে পারেন। আপনি এটি এমন কোনও উদ্দেশ্যে ব্যবহার করতে পারেন যাতে লাইভ ডেটা যেমন লাইভ ড্যাশবোর্ডে তথ্য উপস্থাপন করা, রোলআউট লাইভ দেখা, বা সতর্কতা এবং কাস্টম ওয়ার্কফ্লোকে ট্রিগার করা অ্যাপ্লিকেশন সমস্যাগুলি পর্যবেক্ষণ করা।

আপনি যখন BigQuery Crashlytics স্ট্রিমিং রফতানি সক্ষম করেন, ব্যাচের টেবিল ছাড়াও আপনার কাছে একটি রিয়েলটাইম টেবিলও থাকবে। টেবিলগুলির মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে:

ব্যাচের টেবিল রিয়েলটাইম টেবিল
  • ডেটা প্রতিদিন একবার রফতানি করা হয়।
  • ইভেন্টগুলি BigQuery ব্যাচের লেখার আগে যথাযথভাবে সংরক্ষণ করা হয়।
  • 30 দিন আগে ডেটা ব্যাকফিল করা যেতে পারে*।
  • রিয়েল টাইমে ডেটা রফতানি করা হয়।
  • কোনও ব্যাকফিলিং পাওয়া যায় না।

ব্যাচের টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে সাথে প্রবণতাগুলি সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে যথাযথভাবে সঞ্চয় করি এবং সেগুলি 30 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে*। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, আমরা তাত্ক্ষণিকভাবে এটি BigQuery লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল উভয়ের সুবিধা পেতে একটি সেলাই ক্যোয়ারির সাথে একত্রিত করা যেতে পারে।

ডিফল্টরূপে, রিয়েলটাইম টেবিলের একটি পার্টিশন মেয়াদোত্তীর্ণ সময় 30 দিনের। কীভাবে এটি সংশোধন করবেন তা শিখতে, BigQuery ডকুমেন্টেশনে পার্টিশন মেয়াদোত্তীর্ণতা সেট করুন

* নতুন রফতানি অবকাঠামোতে আপগ্রেডে ব্যাকফিল সমর্থন সম্পর্কিত বিশদ দেখুন।



BigQuery রফতানি সক্ষম করুন

  1. Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, লিঙ্কটি ক্লিক করুন।

  3. BigQuery রফতানি সক্ষম করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।

    আপনি যদি BigQuery আপনার Crashlytics ডেটাতে রিয়েল-টাইম অ্যাক্সেস চান তবে স্ট্রিমিং রফতানিতে আপগ্রেড করার বিষয়টি বিবেচনা করুন।

BigQuery Crashlytics স্ট্রিমিং রফতানি সক্ষম করুন

  1. Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, পরিচালনা ক্লিক করুন।

  3. স্ট্রিমিং চেকবক্স অন্তর্ভুক্ত নির্বাচন করুন।

এই ক্রিয়াটি আপনার লিঙ্কযুক্ত সমস্ত অ্যাপ্লিকেশনগুলির জন্য স্ট্রিমিং সক্ষম করে।

আপনি যখন রফতানি সক্ষম করবেন তখন কী হবে?

  • আপনি ডেটাসেট অবস্থান নির্বাচন করুন। ডেটাসেট তৈরি হওয়ার পরে, অবস্থানটি পরিবর্তন করা যায় না, তবে আপনি ডেটাসেটটি অন্য কোনও স্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি ডেটাসেটটি অন্য কোনও স্থানে সরিয়ে (পুনরায় তৈরি) করতে পারেন। আরও জানতে, বিদ্যমান রফতানির জন্য অবস্থান পরিবর্তন করুন দেখুন।

    এই অবস্থানটি কেবল BigQuery রফতানি করা ডেটার জন্য প্রযোজ্য এবং এটি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে বা অ্যান্ড্রয়েড স্টুডিওতে ব্যবহারের জন্য সঞ্চিত ডেটার অবস্থানের উপর প্রভাব ফেলে না।

  • ডিফল্টরূপে, আপনার প্রকল্পের সমস্ত অ্যাপ্লিকেশনগুলি BigQuery সাথে লিঙ্কযুক্ত এবং আপনি পরে প্রকল্পে যুক্ত হওয়া যে কোনও অ্যাপ্লিকেশনগুলি স্বয়ংক্রিয়ভাবে BigQuery সাথে লিঙ্কযুক্ত। কোন অ্যাপ্লিকেশনগুলি ডেটা প্রেরণ করতে পারে তা আপনি পরিচালনা করতে পারেন।

  • ফায়ারবেস আপনার ডেটাগুলির দৈনিক সিঙ্কগুলি BigQuery সেট আপ করে।

    • আপনি আপনার প্রকল্পটি লিঙ্ক করার পরে, আপনার প্রথম ডেটা BigQuery রফতানি করার জন্য আপনার প্রথম দিনের সিঙ্ক না হওয়া পর্যন্ত আপনাকে সাধারণত অপেক্ষা করতে হবে।

    • আপনি BigQuery সেট আপ করতে পারেন এমন কোনও নির্ধারিত রফতানি নির্বিশেষে প্রতিদিনের সিঙ্কটি প্রতিদিন একবার ঘটে। নোট করুন যে সিঙ্ক কাজের সময় এবং সময়কাল পরিবর্তন হতে পারে, তাই আমরা রফতানির নির্দিষ্ট সময়ের ভিত্তিতে ডাউন স্ট্রিম অপারেশন বা কাজের সময় নির্ধারণের পরামর্শ দিই না।

  • ফায়ারবেস আপনার বিদ্যমান ডেটার একটি অনুলিপি BigQuery রফতানি করে। রফতানির জন্য ডেটা প্রাথমিক প্রচার 48 ঘন্টা পর্যন্ত সময় নিতে পারে।

    • প্রতিটি লিঙ্কযুক্ত অ্যাপের জন্য, এই রফতানিতে দৈনিক সিঙ্ক থেকে ডেটাযুক্ত একটি ব্যাচের টেবিল অন্তর্ভুক্ত রয়েছে।

    • আপনি গত 30 দিন পর্যন্ত ব্যাচের টেবিলের জন্য ডেটা ব্যাকফিলগুলি ম্যানুয়ালি নির্ধারণ করতে পারেন বা আপনি যখন BigQuery রফতানি সক্ষম করেছেন (যেটি অতি সাম্প্রতিকতম)।

    মনে রাখবেন যে আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি সময়ে Crashlytics ডেটা রফতানি সক্ষম করে থাকেন তবে আপনি রফতানি সক্ষম করার দিনটির 30 দিন আগে আপনি ব্যাকফিল করতে পারেন।

  • আপনি যদি BigQuery Crashlytics স্ট্রিমিং রফতানি সক্ষম করেন তবে সমস্ত লিঙ্কযুক্ত অ্যাপ্লিকেশনগুলিতে ক্রমাগত ডেটা আপডেট করার জন্য একটি রিয়েলটাইম টেবিলও থাকবে।

BigQuery রফতানি নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রকল্পটি লিঙ্ক করুন



উদাহরণ প্রশ্ন

উদাহরণ 1: দিনে ক্র্যাশ

যতটা সম্ভব বাগ ঠিক করার জন্য কাজ করার পরে, আপনি মনে করেন আপনার দলটি শেষ পর্যন্ত আপনার নতুন ফটো শেয়ারিং অ্যাপটি চালু করতে প্রস্তুত। আপনি করার আগে, আপনি গত মাসের জন্য প্রতিদিন ক্র্যাশগুলির সংখ্যা পরীক্ষা করতে চান, আপনার বাগ-বাশটি সময়ের সাথে অ্যাপটিকে আরও স্থিতিশীল করেছে তা নিশ্চিত হওয়ার জন্য।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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 সর্বাধিক বিস্তৃত ক্র্যাশগুলি সন্ধান করতে চান। আপনি এমন একটি ক্যোয়ারী তৈরি করেন যা ডেটা প্রাসঙ্গিক পয়েন্ট সরবরাহ করে।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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 ক্র্যাশিং ডিভাইস

পতন নতুন ফোন মরসুম! আপনার সংস্থা জানে যে এর অর্থ এটিও নতুন ডিভাইস-নির্দিষ্ট ইস্যু মরসুম-বিশেষত অ্যান্ড্রয়েডের জন্য। সামঞ্জস্যপূর্ণ সামঞ্জস্যতা উদ্বেগের দিকে এগিয়ে যাওয়ার জন্য, আপনি একটি ক্যোয়ারী একসাথে রেখেছেন যা গত সপ্তাহে (168 ঘন্টা) সবচেয়ে ক্র্যাশগুলি অনুভব করে এমন 10 টি ডিভাইসগুলি সনাক্ত করে।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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 মানগুলির বিতরণ প্রতিবেদন করতে একটি ক্যোয়ারী লিখতে পারেন।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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: ব্যবহারকারী আইডি নিষ্কাশন

প্রাথমিক অ্যাক্সেসে আপনার একটি অ্যান্ড্রয়েড অ্যাপ রয়েছে। আপনার বেশিরভাগ ব্যবহারকারী এটি পছন্দ করেন তবে তিনজনই অস্বাভাবিক সংখ্যক ক্র্যাশ অনুভব করেছেন। সমস্যার নীচে পৌঁছানোর জন্য, আপনি এমন একটি ক্যোয়ারী লিখুন যা তাদের ব্যবহারকারীদের আইডি ব্যবহার করে সেই ব্যবহারকারীদের জন্য সমস্ত ক্র্যাশ ইভেন্টগুলি টান দেয়।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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: সমস্ত ব্যবহারকারী একটি নির্দিষ্ট ক্র্যাশ সমস্যার মুখোমুখি সন্ধান করুন

আপনার দলটি দুর্ঘটনাক্রমে বিটা পরীক্ষার্থীদের একটি গ্রুপকে একটি সমালোচনামূলক বাগ প্রকাশ করেছে। আপনার দল নির্দিষ্ট ক্র্যাশ ইস্যু আইডি সনাক্ত করতে উপরের "সর্বাধিক বিস্তৃত ক্র্যাশগুলি সন্ধান করুন" উদাহরণ থেকে ক্যোয়ারীটি ব্যবহার করতে সক্ষম হয়েছিল। এখন আপনার দল এই ক্র্যাশ দ্বারা প্রভাবিত অ্যাপ্লিকেশন ব্যবহারকারীদের তালিকা বের করতে একটি ক্যোয়ারী চালাতে চাইবে।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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. BigQuery Google Analytics ডেটা রফতানি সক্ষম করুন। বিগকোয়ারিতে প্রকল্পের ডেটা রফতানি দেখুন।

  2. Google Analytics এসডিকে এবং Crashlytics এসডিকে উভয় ক্ষেত্রেই ব্যবহারকারী আইডি পাস করতে আপনার অ্যাপ্লিকেশন আপডেট করুন।

    সুইফট

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

    উদ্দেশ্য-C

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

    জাভা

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Crashlytics ডেটাসেটে ক্র্যাশ সহ Google Analytics ডেটাসেটে ইভেন্টগুলিতে যোগদানের জন্য ব্যবহারকারী আইডি ক্ষেত্রটি ব্যবহার করে এমন একটি ক্যোয়ারী লিখুন।

    অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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 টি সমস্যা

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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: তারিখের পরে শীর্ষ 5 টি বিষয়, আজ সহ

নির্ভরযোগ্য ব্যাচের ডেটাতে রিয়েলটাইম তথ্য যুক্ত করতে আপনি একটি স্টিচিং ক্যোয়ারির সাথে ব্যাচ এবং রিয়েলটাইম টেবিলগুলি একত্রিত করতে পারেন। যেহেতু event_id একটি প্রাথমিক কী, তাই আপনি দুটি টেবিল থেকে যে কোনও সাধারণ ইভেন্ট ডেডআপ করতে DISTINCT event_id ব্যবহার করতে পারেন।

অ্যান্ড্রয়েড অ্যাপের জন্য এখানে একটি উদাহরণ ক্যোয়ারী। একটি আইওএস অ্যাপের জন্য, এর বান্ডিল আইডি এবং 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 >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD")
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;



Looker Studio সাথে রফতানি Crashlytics ডেটা ভিজ্যুয়ালাইজ করুন

Looker Studio আপনার Crashlytics ডেটাসেটগুলিকে BigQuery এমন প্রতিবেদনে পরিণত করে যা পড়া সহজ, ভাগ করা সহজ এবং সম্পূর্ণরূপে কাস্টমাইজযোগ্য।

Looker Studio ব্যবহার সম্পর্কে আরও জানতে, তাদের স্বাগত গাইডটি দেখুন।

Crashlytics রিপোর্ট টেম্পলেট ব্যবহার করুন

Looker Studio Crashlytics জন্য একটি নমুনা প্রতিবেদন রয়েছে যা রফতানি Crashlytics BigQuery স্কিমা থেকে মাত্রা এবং মেট্রিকগুলির একটি বিস্তৃত সেট অন্তর্ভুক্ত করে। যদি আপনি Crashlytics স্ট্রিমিং রফতানি BigQuery সক্ষম করে থাকেন তবে আপনি Looker Studio টেমপ্লেটের রিয়েলটাইম ট্রেন্ডস পৃষ্ঠায় সেই ডেটা দেখতে পারেন You আপনি আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে নমুনাটিকে একটি টেমপ্লেট হিসাবে ব্যবহার করতে পারেন:

  1. Crashlytics Looker Studio ড্যাশবোর্ড টেম্পলেটটি খুলুন।

  2. উপরের-ডান কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।

  3. নতুন ডেটা উত্স ড্রপ ডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।

  4. BigQuery কার্ডে নির্বাচন করুন ক্লিক করুন।

  5. আমার প্রকল্পগুলি> PROJECT_ID > ফায়ারবেস_ক্র্যাশলাইটিক্স> TABLE_NAME নির্বাচন করে রফতানি করা Crashlytics ডেটাযুক্ত একটি সারণী নির্বাচন করুন।

    আপনার ব্যাচের টেবিলটি সর্বদা নির্বাচন করার জন্য উপলব্ধ। যদি Crashlytics স্ট্রিমিং রফতানি BigQuery সক্ষম করা থাকে তবে আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিলটি নির্বাচন করতে পারেন।

  6. কনফিগারেশনের অধীনে, Crashlytics টেম্পলেট স্তরটি ডিফল্টে সেট করুন।

  7. নতুন ডেটা উত্স তৈরি করতে সংযোগ ক্লিক করুন।

  8. Crashlytics টেম্পলেটটিতে ফিরে আসতে প্রতিবেদনে অ্যাড ক্লিক করুন।

  9. অবশেষে, Crashlytics Looker Studio ড্যাশবোর্ড টেম্পলেটটির অনুলিপি তৈরি করতে প্রতিবেদন তৈরি করুন ক্লিক করুন।



BigQuery Crashlytics স্কিমা বুঝতে

Firebase Crashlytics ডেটা firebase_crashlytics নামে একটি BigQuery ডেটাসেটে রফতানি করা হয়। ডেটাসেটটি আপনার পুরো প্রকল্পটি কভার করে, এমনকি এতে একাধিক অ্যাপ্লিকেশন থাকলেও।

টেবিল

ডিফল্টরূপে, ফায়ারবেস আপনার প্রকল্পের প্রতিটি অ্যাপের জন্য Crashlytics ডেটাসেটের অভ্যন্তরে পৃথক টেবিল তৈরি করে যা BigQuery সাথে যুক্ত। টেবিলগুলি অ্যাপের সনাক্তকারী (পিরিয়ডগুলি আন্ডারস্কোরে রূপান্তরিত) এর উপর ভিত্তি করে এবং অ্যাপের প্ল্যাটফর্মের সাথে সংযুক্ত করা হয়েছে ( _IOS বা _ANDROID ) এর উপর ভিত্তি করে। উদাহরণস্বরূপ, com.google.test প্যাকেজ নাম সহ একটি অ্যান্ড্রয়েড অ্যাপের জন্য ডেটা com_google_test_ANDROID নামের একটি টেবিলে থাকবে।

আপনি যদি BigQuery Crashlytics স্ট্রিমিং রফতানি সক্ষম করেন, তবে Crashlytics ডেটা real _REALTIME (উদাহরণস্বরূপ, com_google_test_ANDROID_REALTIME ) এর সাথে সংযুক্ত একটি টেবিলে রিয়েলটাইমে প্রবাহিত হবে।

একটি টেবিলের প্রতিটি সারি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং এএনআরএস সহ অ্যাপ্লিকেশনটিতে ঘটেছিল এমন একটি ইভেন্টের প্রতিনিধিত্ব করে।

টেবিলগুলিতে আপনার অ্যাপ্লিকেশনটিতে আপনার দ্বারা সংজ্ঞায়িত কোনও কাস্টম Crashlytics কী ছাড়াও Crashlytics ডেটার একটি স্ট্যান্ডার্ড সেট রয়েছে।

সারি

একটি টেবিলের প্রতিটি সারি অ্যাপটির মুখোমুখি হওয়া একটি ত্রুটি উপস্থাপন করে।

কলাম

একটি টেবিলের কলামগুলি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং এএনআরগুলির জন্য অভিন্ন। যদি Crashlytics স্ট্রিমিং রফতানি BigQuery সক্ষম করা থাকে তবে রিয়েলটাইম টেবিলের ব্যাচের টেবিলের মতো একই কলাম থাকবে। নোট করুন যে আপনার সারিগুলিতে কলাম থাকতে পারে যা এমন ইভেন্টগুলিকে উপস্থাপন করে যা স্ট্যাক ট্রেস নেই।

রফতানি Crashlytics ডেটার জন্য টেবিলের কলামগুলি এখানে রয়েছে:

ক্ষেত্রের নাম ডেটা টাইপ বর্ণনা
app_orientation STRING উদাহরণস্বরূপ, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN ইত্যাদি
application রেকর্ড ইভেন্টটি উত্পন্ন অ্যাপ্লিকেশন
application.build_version STRING অ্যাপের বিল্ড সংস্করণ
application.display_version STRING
blame_frame রেকর্ড ফ্রেমটি ক্র্যাশ বা ত্রুটির মূল কারণ হিসাবে চিহ্নিত
blame_frame.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড রয়েছে
জাভা ফ্রেমের জন্য আনসেট
blame_frame.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
blame_frame.file STRING ফ্রেম ফাইলের নাম
blame_frame.library STRING লাইব্রেরির প্রদর্শনের নাম যা ফ্রেম অন্তর্ভুক্ত করে
blame_frame.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
blame_frame.offset INT64 বাইন্ডিটি বাইনারি চিত্রটিতে অফসেট যা কোড রয়েছে
জাভা ব্যতিক্রম জন্য আনসেট
blame_frame.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM বা SYSTEM
blame_frame.symbol STRING হাইড্রেটেড প্রতীক, বা কাঁচা প্রতীক যদি এটি অক্ষম হয়
breadcrumbs পুনরাবৃত্তি রেকর্ড টাইমস্ট্যাম্পড Google Analytics ব্রেডক্র্যাম্বস , যদি সক্ষম হয়
breadcrumbs.name STRING ব্রেডক্রাম্বের সাথে যুক্ত নাম
breadcrumbs.params পুনরাবৃত্তি রেকর্ড ব্রেডক্রাম্বের সাথে সম্পর্কিত প্যারামিটারগুলি
breadcrumbs.params.key STRING ব্রেডক্রাম্বের সাথে সম্পর্কিত একটি প্যারামিটার কী
breadcrumbs.params.value STRING ব্রেডক্রাম্বের সাথে যুক্ত একটি প্যারামিটার মান
breadcrumbs.timestamp টাইমস্ট্যাম্প ব্রেডক্রম্বের সাথে সম্পর্কিত টাইমস্ট্যাম্প
bundle_identifier STRING ফায়ারবেস প্রকল্পে নিবন্ধিত অ্যাপ্লিকেশনটির জন্য অনন্য শনাক্তকারী (উদাহরণস্বরূপ, com.google.gmail )
অ্যাপল প্ল্যাটফর্ম অ্যাপ্লিকেশনগুলির জন্য, এটি অ্যাপ্লিকেশনটির বান্ডিল আইডি।
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য, এটি অ্যাপটির প্যাকেজ নাম।
crashlytics_sdk_versions STRING Crashlytics এসডিকে সংস্করণ যা ইভেন্টটি তৈরি করেছে
custom_keys পুনরাবৃত্তি রেকর্ড বিকাশকারী-সংজ্ঞায়িত কী-মান জোড়া
custom_keys.key STRING একটি বিকাশকারী-সংজ্ঞায়িত কী
custom_keys.value STRING একটি বিকাশকারী-সংজ্ঞায়িত মান
device রেকর্ড ডিভাইস ঘটনা ঘটেছে
device_orientation STRING উদাহরণস্বরূপ, PORTRAIT , LANDSCAPE , FACE_UP , FACE_DOWN ইত্যাদি
device.architecture STRING উদাহরণস্বরূপ, X86_32 , X86_64 , ARMV7 , ARM64 , ARMV7S , বা ARMV7K
device.manufacturer STRING ডিভাইস প্রস্তুতকারক
device.model STRING ডিভাইস মডেল
error পুনরাবৃত্তি রেকর্ড (কেবল অ্যাপল অ্যাপ্লিকেশন) অ-মারাত্মক ত্রুটি
error_type STRING ইভেন্টের ত্রুটির ধরণ (উদাহরণস্বরূপ, FATAL , NON_FATAL , ANR ইত্যাদি)
error.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
error.code INT64 অ্যাপের কাস্টম লগড এনএসআরর এর সাথে সম্পর্কিত ত্রুটি কোড
error.frames পুনরাবৃত্তি রেকর্ড স্ট্যাকট্রেসের ফ্রেম
error.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড রয়েছে
error.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
error.frames.file STRING ফ্রেম ফাইলের নাম
error.frames.library STRING লাইব্রেরির প্রদর্শনের নাম যা ফ্রেম অন্তর্ভুক্ত করে
error.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
error.frames.offset INT64 বাইন্ডিটি বাইনারি চিত্রটিতে অফসেট যা কোড রয়েছে
error.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM বা SYSTEM
error.frames.symbol STRING হাইড্রেটেড প্রতীক, বা কাঁচা প্রতীক যদি এটি অক্ষম হয়
error.queue_name STRING থ্রেডটি সারি চলছিল
error.subtitle STRING থ্রেডের সাবটাইটেল
error.title STRING থ্রেডের শিরোনাম
event_id STRING ইভেন্টের জন্য অনন্য আইডি
event_timestamp টাইমস্ট্যাম্প যখন ঘটনাটি ঘটেছে
exceptions পুনরাবৃত্তি রেকর্ড (কেবলমাত্র অ্যান্ড্রয়েড) এই ইভেন্টের সময় ঘটে যাওয়া ব্যতিক্রম। নেস্টেড ব্যতিক্রমগুলি বিপরীত কালানুক্রমিক ক্রমে উপস্থাপন করা হয়, যার অর্থ শেষ রেকর্ডটি প্রথম ব্যতিক্রম নিক্ষেপ করা হয়
exceptions.blamed বুলিয়ান সত্য যদি Crashlytics নির্ধারণ করে যে ব্যতিক্রমটি ত্রুটি বা ক্র্যাশের জন্য দায়ী
exceptions.exception_message STRING ব্যতিক্রমের সাথে যুক্ত একটি বার্তা
exceptions.frames পুনরাবৃত্তি রেকর্ড ব্যতিক্রমের সাথে যুক্ত ফ্রেমগুলি
exceptions.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড রয়েছে
জাভা ফ্রেমের জন্য আনসেট
exceptions.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
exceptions.frames.file STRING ফ্রেম ফাইলের নাম
exceptions.frames.library STRING লাইব্রেরির প্রদর্শনের নাম যা ফ্রেম অন্তর্ভুক্ত করে
exceptions.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
exceptions.frames.offset INT64 বাইন্ডিটি বাইনারি চিত্রটিতে অফসেট যা কোড রয়েছে
জাভা ব্যতিক্রম জন্য আনসেট
exceptions.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM বা SYSTEM
exceptions.frames.symbol STRING হাইড্রেটেড প্রতীক, বা কাঁচা প্রতীক যদি এটি অক্ষম হয়
exceptions.nested বুলিয়ান শেষ-নিক্ষেপ ব্যতিক্রম ব্যতীত সকলের পক্ষে সত্য (যার অর্থ প্রথম রেকর্ড)
exceptions.subtitle STRING থ্রেডের সাবটাইটেল
exceptions.title STRING থ্রেডের শিরোনাম
exceptions.type STRING ব্যতিক্রম প্রকার (উদাহরণস্বরূপ, java.lang.IllegalStateException)
installation_uuid STRING একটি আইডি যা একটি অনন্য অ্যাপ্লিকেশন এবং ডিভাইস ইনস্টলেশন সনাক্ত করে
is_fatal বুলিয়ান অ্যাপটি ক্র্যাশ হয়েছে কিনা
issue_id STRING ইভেন্টের সাথে সম্পর্কিত বিষয়টি
logs পুনরাবৃত্তি রেকর্ড Crashlytics লগার দ্বারা উত্পাদিত টাইমস্ট্যাম্পড লগ বার্তাগুলি সক্ষম করা থাকলে
logs.message STRING লগ করা বার্তা
logs.timestamp টাইমস্ট্যাম্প যখন লগ তৈরি হয়েছিল
memory রেকর্ড ডিভাইসের স্মৃতি স্থিতি
memory.free INT64 স্মৃতি বাইট অবশিষ্ট
memory.used INT64 মেমরির বাইট ব্যবহৃত
operating_system রেকর্ড ডিভাইসে ওএসের বিশদ
operating_system.device_type STRING ডিভাইসের ধরণ (উদাহরণস্বরূপ, MOBILE , TABLET , TV ইত্যাদি); "ডিভাইস বিভাগ" হিসাবেও পরিচিত
operating_system.display_version STRING ডিভাইসে ওএসের সংস্করণ
operating_system.modification_state STRING ডিভাইসটি সংশোধন করা হয়েছে কিনা (উদাহরণস্বরূপ, একটি জেলব্রোকড অ্যাপ্লিকেশনটি MODIFIED হয়েছে এবং একটি মূল অ্যাপ্লিকেশনটি UNMODIFIED রয়েছে)
operating_system.name STRING ডিভাইসে ওএসের নাম
operating_system.type STRING (কেবলমাত্র অ্যাপল অ্যাপ্লিকেশন) ডিভাইসে চলমান ওএসের ধরণ (উদাহরণস্বরূপ, IOS , MACOS ইত্যাদি)
platform STRING ফায়ারবেস প্রকল্পে নিবন্ধিত হিসাবে অ্যাপ্লিকেশনটির প্ল্যাটফর্ম (বৈধ মান: IOS বা ANDROID )
process_state STRING BACKGROUND বা FOREGROUND
storage রেকর্ড ডিভাইসের অবিরাম স্টোরেজ
storage.free INT64 স্টোরেজ বাইট
storage.used INT64 স্টোরেজ বাইট ব্যবহৃত
threads পুনরাবৃত্তি রেকর্ড ইভেন্টের সময় থ্রেড উপস্থিত
threads.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ক্র্যাশ বা ত্রুটির কারণ
threads.code INT64 (কেবলমাত্র অ্যাপল অ্যাপ্লিকেশন) অ্যাপ্লিকেশনটির কাস্টম লগড এনএসইআরআর এর ত্রুটি কোড
threads.crash_address INT64 সিগন্যালের ঠিকানা যা অ্যাপ্লিকেশনটি ক্র্যাশ করেছিল; কেবল ক্র্যাশড নেটিভ থ্রেডগুলিতে উপস্থিত
threads.crashed বুলিয়ান থ্রেড ক্র্যাশ হয়েছে কিনা
threads.frames পুনরাবৃত্তি রেকর্ড থ্রেড ফ্রেম
threads.frames.address INT64 বাইনারি চিত্রের ঠিকানা যা কোড রয়েছে
threads.frames.blamed বুলিয়ান Crashlytics নির্ধারণ করেছে যে এই ফ্রেমটি ত্রুটির কারণ
threads.frames.file STRING ফ্রেম ফাইলের নাম
threads.frames.library STRING লাইব্রেরির প্রদর্শনের নাম যা ফ্রেম অন্তর্ভুক্ত করে
threads.frames.line INT64 ফ্রেমের ফাইলের লাইন নম্বর
threads.frames.offset INT64 বাইন্ডিটি বাইনারি চিত্রটিতে অফসেট যা কোড রয়েছে
threads.frames.owner STRING উদাহরণস্বরূপ, DEVELOPER , VENDOR , RUNTIME , PLATFORM বা SYSTEM
threads.frames.symbol STRING হাইড্রেটেড প্রতীক, বা কাঁচা প্রতীক যদি এটি অস্বাস্থ্যকর হয়
threads.queue_name STRING (কেবল অ্যাপল অ্যাপস) থ্রেডটি চলছে সারি
threads.signal_code STRING সিগন্যালের কোড যা অ্যাপটিকে ক্র্যাশ করেছিল; কেবল ক্র্যাশড নেটিভ থ্রেডগুলিতে উপস্থিত
threads.signal_name STRING সিগন্যালের নাম যা অ্যাপটিকে ক্র্যাশ করেছিল, কেবল ক্র্যাশড নেটিভ থ্রেডগুলিতে উপস্থিত
threads.subtitle STRING থ্রেডের সাবটাইটেল
threads.thread_name STRING থ্রেডের নাম
threads.title STRING থ্রেডের শিরোনাম
unity_metadata.debug_build বুলিয়ান যদি এটি একটি ডিবাগ বিল্ড হয়
unity_metadata.graphics_copy_texture_support STRING ইউনিটি এপিআই -তে সংজ্ঞায়িত গ্রাফিক্স টেক্সচার অনুলিপি করার জন্য সমর্থন
unity_metadata.graphics_device_id INT64 গ্রাফিক্স ডিভাইসের সনাক্তকারী
unity_metadata.graphics_device_name STRING গ্রাফিক্স ডিভাইসের নাম
unity_metadata.graphics_device_type STRING গ্রাফিক্স ডিভাইসের ধরণ
unity_metadata.graphics_device_vendor_id INT64 গ্রাফিক্স প্রসেসরের বিক্রেতার সনাক্তকারী
unity_metadata.graphics_device_vendor STRING গ্রাফিক্স ডিভাইসের বিক্রেতা
unity_metadata.graphics_device_version STRING গ্রাফিক্স ডিভাইসের সংস্করণ
unity_metadata.graphics_max_texture_size INT64 রেন্ডারিং টেক্সচারে উত্সর্গীকৃত সর্বাধিক আকার
unity_metadata.graphics_memory_size_mb INT64 এমবিতে গ্রাফিক্স মেমরি
unity_metadata.graphics_render_target_count INT64 গ্রাফিকাল রেন্ডারিং লক্ষ্যগুলির সংখ্যা
unity_metadata.graphics_shader_level INT64 গ্রাফিক্সের শেডার স্তর
unity_metadata.processor_count INT64 প্রসেসরের সংখ্যা (কোর)
unity_metadata.processor_frequency_mhz INT64 মেগাহার্টজ প্রসেসরের ফ্রিকোয়েন্সি
unity_metadata.processor_type STRING প্রসেসরের ধরণ
unity_metadata.screen_refresh_rate_hz INT64 এইচজেডে পর্দার রিফ্রেশ রেট
unity_metadata.screen_resolution_dpi STRING ভাসমান পয়েন্ট নম্বর হিসাবে পর্দার ডিপিআই
unity_metadata.screen_size_px STRING পিক্সেলগুলিতে পর্দার আকার, প্রস্থ x উচ্চতা হিসাবে ফর্ম্যাট করা
unity_metadata.system_memory_size_mb INT64 এমবিতে সিস্টেমের স্মৃতির আকার
unity_metadata.unity_version STRING এই ডিভাইসে unity ক্যের সংস্করণ চলমান
user রেকর্ড (Al চ্ছিক) অ্যাপের ব্যবহারকারী সম্পর্কে তথ্য সংগ্রহ করা হয়েছে
user.email STRING (Al চ্ছিক) ব্যবহারকারীর ইমেল ঠিকানা
user.id STRING (Al চ্ছিক) ব্যবহারকারীর সাথে সম্পর্কিত একটি অ্যাপ্লিকেশন-নির্দিষ্ট আইডি
user.name STRING (Al চ্ছিক) ব্যবহারকারীর নাম
variant_id STRING এই ইভেন্টের সাথে সম্পর্কিত ইস্যু বৈকল্পিক
নোট করুন যে সমস্ত ইভেন্টের কোনও সম্পর্কিত সমস্যা বৈকল্পিক নেই।



নতুন রফতানি অবকাঠামোতে আপগ্রেড করুন

২০২৪ সালের অক্টোবরের মাঝামাঝি সময়ে, Crashlytics BigQuery Crashlytics ডেটা ব্যাচ রফতানির জন্য একটি নতুন অবকাঠামো চালু করে।

সমস্ত ফায়ারবেস প্রকল্পগুলি স্বয়ংক্রিয়ভাবে নতুন ব্যাচ রফতানি অবকাঠামোতে আপগ্রেড করা হবে 15 সেপ্টেম্বর, 2025 এর প্রথম দিকে। আপনি এই তারিখের আগে আপগ্রেড করতে পারেন, তবে নিশ্চিত হয়ে নিন যে আপনার BigQuery ব্যাচের টেবিলগুলি আপগ্রেড করার পূর্বশর্তগুলি পূরণ করে।

আপনি নতুন অবকাঠামোতে আপগ্রেড করতে পারেন, তবে নিশ্চিত করুন যে আপনার BigQuery ব্যাচের টেবিলগুলি আপগ্রেড করার জন্য পূর্বশর্তগুলি পূরণ করেছে।

আপনি নতুন অবকাঠামোতে আছেন কিনা তা নির্ধারণ করুন

আপনি যদি ২০২৪ সালের অক্টোবরের মাঝামাঝি বা তার পরে ব্যাচ রফতানি সক্ষম করে থাকেন তবে আপনার ফায়ারবেস প্রকল্পটি স্বয়ংক্রিয়ভাবে নতুন রফতানি অবকাঠামো ব্যবহার করছে।

আপনার প্রকল্পটি কোন অবকাঠামো ব্যবহার করছে তা আপনি যাচাই করতে পারেন: Google Cloud কনসোলে যান এবং যদি আপনার "ডেটা ট্রান্সফার কনফিগারেশন" Firebase Crashlytics with Multi-Region Support লেবেলযুক্ত থাকে তবে আপনার প্রকল্পটি নতুন রফতানি অবকাঠামো ব্যবহার করছে।

পুরানো রফতানি অবকাঠামো এবং নতুন রফতানি অবকাঠামোর মধ্যে গুরুত্বপূর্ণ পার্থক্য

  • নতুন অবকাঠামো আমেরিকা যুক্তরাষ্ট্রের বাইরের Crashlytics ডেটাসেট অবস্থানগুলিকে সমর্থন করে।

    • 2024 সালের অক্টোবরের মাঝামাঝি আগে রফতানি সক্ষম করা হয়েছে এবং নতুন রফতানি অবকাঠামোতে আপগ্রেড করা হয়েছে-আপনি এখন ডেটা রফতানির জন্য অবস্থান পরিবর্তন করতে পারেন।

    • 2024 সালের অক্টোবরের মাঝামাঝি সময়ে রফতানি সক্ষম করা হয়েছে-আপনাকে সেটআপের সময় ডেটা রফতানির জন্য কোনও অবস্থান নির্বাচন করার জন্য অনুরোধ জানানো হয়েছিল।

  • নতুন অবকাঠামো আপনি রফতানি সক্ষম করার আগে থেকে ডেটা ব্যাকফিলগুলি সমর্থন করে না।

    • পুরানো অবকাঠামো আপনি রফতানি সক্ষম করার তারিখের 30 দিন আগে ব্যাকফিলকে সমর্থন করেছিলেন।

    • নতুন অবকাঠামো গত 30 দিন পর্যন্ত বা আপনি যখন BigQuery রফতানি সক্ষম করেছেন (যেটি অতি সাম্প্রতিকতম) সক্ষম করেছেন তখন ব্যাকফিলগুলি সমর্থন করে।

  • নতুন অবকাঠামোগত আপনার ফায়ারবেস প্রকল্পে আপনার ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট সনাক্তকারীগুলি ব্যবহার করে BigQuery ব্যাচের টেবিলগুলির নাম দেয়।

    • পুরানো অবকাঠামো আপনার অ্যাপের বাইনারিটিতে বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে নাম সহ ব্যাচের টেবিলগুলিতে ডেটা লিখেছিল।

    • নতুন অবকাঠামো আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট করা বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে নাম সহ ব্যাচের টেবিলগুলিকে ডেটা লিখেছেন।

পদক্ষেপ 1 : আপগ্রেড করার জন্য পূর্বশর্ত

  1. আপনার বিদ্যমান BigQuery ব্যাচের টেবিলগুলি আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট করা বান্ডিল আইডি বা প্যাকেজ নামগুলিতে ম্যাচিং আইডেন্টিফায়ার ব্যবহার করে কিনা তা পরীক্ষা করে দেখুন। যদি তারা মেলে না, তবে আপনি আপনার রফতানি ব্যাচের ডেটাতে বাধা অনুভব করতে পারেন। বেশিরভাগ প্রকল্পগুলি একটি যথাযথ এবং সামঞ্জস্যপূর্ণ অবস্থায় থাকবে তবে আপগ্রেড করার আগে এটি পরীক্ষা করা গুরুত্বপূর্ণ।

    • আপনি Firebase কনসোলে আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত সমস্ত ফায়ারবেস অ্যাপ্লিকেশনগুলি খুঁজে পেতে পারেন: আপনার প্রকল্পের সেটিংসে যান, তারপরে আপনার সমস্ত ফায়ারবেস অ্যাপ্লিকেশন এবং তাদের তথ্য দেখতে আপনার অ্যাপ্লিকেশন কার্ডে স্ক্রোল করুন।

    • আপনি Google Cloud কনসোলের BigQuery পৃষ্ঠায় আপনার সমস্ত BigQuery ব্যাচের টেবিলগুলি খুঁজে পেতে পারেন।

    উদাহরণস্বরূপ, এখানে আদর্শ রাজ্যগুলি যেখানে আপনার কোনও সমস্যা আপগ্রেড হবে না:

    • আপনার কাছে com_yourcompany_yourproject_IOS নামে একটি ব্যাচের টেবিল রয়েছে এবং আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত বান্ডিল আইডি com.yourcompany.yourproject সহ একটি ফায়ারবেস আইওএস+ অ্যাপ্লিকেশন রয়েছে।

    • আপনার কাছে com_yourcompany_yourproject_ANDROID নামে একটি ব্যাচের টেবিল রয়েছে এবং আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত প্যাকেজের নাম com.yourcompany.yourproject প্যাকেজ নাম সহ একটি ফায়ারবেস অ্যান্ড্রয়েড অ্যাপ্লিকেশন রয়েছে।

  2. আপনার যদি ব্যাচের টেবিলের নাম থাকে যা আপনার নিবন্ধিত ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট করা শনাক্তকারীদের সাথে মেলে না , তবে ম্যানুয়ালি আপগ্রেড করার আগে বা আপনার ব্যাচের রফতানিতে বাধা এড়াতে সেপ্টেম্বর 15, 2025 এর আগে এই পৃষ্ঠায় পরে নির্দেশাবলী অনুসরণ করুন

পদক্ষেপ 2 : ম্যানুয়ালি নতুন অবকাঠামোতে আপগ্রেড করুন

আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি সময়ে ব্যাচ রফতানি সক্ষম করে থাকেন তবে আপনি Crashlytics ডেটা রফতানি বন্ধ করে এবং তারপরে আবার Firebase কনসোলে আবার টগল করে নতুন অবকাঠামোতে ম্যানুয়ালি আপগ্রেড করতে পারেন।

এখানে বিস্তারিত পদক্ষেপ আছে:

  1. Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।

  2. BigQuery কার্ডে, পরিচালনা ক্লিক করুন।

  3. রফতানি অক্ষম করতে Crashlytics স্লাইডারটি টগল করুন। যখন অনুরোধ জানানো হয়, নিশ্চিত করুন যে আপনি ডেটা রফতানি বন্ধ করতে চান।

  4. পুনরায় সক্ষম রফতানিতে পুনরায় সক্ষম করতে আবার Crashlytics স্লাইডারটি আবার টগল করুন। যখন অনুরোধ জানানো হয়, আপনি ডেটা রফতানি করতে চান তা নিশ্চিত করুন।

    আপনার Crashlytics ডেটা রফতানি BigQuery এখন নতুন রফতানি অবকাঠামো ব্যবহার করছে।

আপনার বিদ্যমান ব্যাচের টেবিলের নামটি আপনার ফায়ারবেস অ্যাপ সনাক্তকারীটির সাথে মেলে না