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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BigQuery এ কোন ডেটা রপ্তানি করা হয়?

Firebase Crashlytics ডেটা firebase_crashlytics নামে একটি BigQuery ডেটাসেটে রপ্তানি করা হয়। ডিফল্টরূপে, আপনার প্রোজেক্টের প্রতিটি অ্যাপের জন্য Crashlytics ডেটাসেটের ভিতরে পৃথক টেবিল তৈরি করা হবে। ফায়ারবেস অ্যাপের শনাক্তকারীর উপর ভিত্তি করে টেবিলের নাম দেয়, পিরিয়ডগুলিকে আন্ডারস্কোরে রূপান্তরিত করে এবং শেষে একটি প্ল্যাটফর্মের নাম যুক্ত করা হয়।

উদাহরণস্বরূপ, com.google.test প্যাকেজ নামের একটি Android অ্যাপের ডেটা com_google_test_ANDROID নামের একটি টেবিলে থাকবে। এই ব্যাচ টেবিল প্রতিদিন একবার আপডেট করা হয়. আপনি যদি BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন, তাহলে Crashlytics ডেটাও রিয়েলটাইমে com_google_test_ANDROID_REALTIME নামের একটি টেবিলে স্ট্রিম করা হবে।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

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

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

রপ্তানির মধ্যে থাকা কলামগুলি এই টেবিলে তালিকাভুক্ত করা হয়েছে:

ক্ষেত্রের নাম ডেটা টাইপ বর্ণনা
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 স্কিমা থেকে মাত্রা এবং মেট্রিক্সের একটি বিস্তৃত সেট রয়েছে। আপনি যদি BigQueryCrashlytics স্ট্রিমিং রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি ডেটা স্টুডিও টেমপ্লেটের রিয়েলটাইম ট্রেন্ডস পৃষ্ঠায় সেই ডেটা দেখতে পারেন। আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে দ্রুত নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি নমুনাটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন। :

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

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

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

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

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

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

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

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

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

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

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

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

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

  • আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি আগে এক্সপোর্ট চালু করেন, তাহলে আপনি এখন ঐচ্ছিকভাবে যেকোন BigQuery সমর্থিত ডেটাসেট লোকেশনে ডেটা এক্সপোর্টের জন্য লোকেশন পরিবর্তন করতে পারবেন।

  • আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি বা তার পরে এক্সপোর্ট চালু করেন, তাহলে সেটআপের সময় আপনি যেকোন BigQuery সমর্থিত ডেটাসেট লোকেশন বেছে নিতে পারেন।

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

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

নতুন পরিকাঠামোতে আপগ্রেড করার আগে, নিশ্চিত করুন যে আপনি নিম্নলিখিত পূর্বশর্তগুলি পূরণ করেছেন: আপনার বর্তমান ব্যাচ BigQuery টেবিলে আপনার নিবন্ধিত Firebase অ্যাপগুলির জন্য সেট করা বান্ডেল আইডি বা প্যাকেজ নামের সাথে মিলে যাওয়া শনাক্তকারী রয়েছে৷

যেমন:

  • আপনার যদি com_yourcompany_yourproject_IOS নামে একটি BigQuery টেবিল থাকে, তাহলে আপনার Firebase iOS+ অ্যাপটি আপনার Firebase প্রকল্পে com.yourcompany.yourproject বান্ডেল আইডি সহ নিবন্ধিত থাকা উচিত।

  • আপনার যদি com_yourcompany_yourproject_ANDROID নামে একটি BigQuery টেবিল থাকে, তাহলে আপনার Firebase প্রজেক্টে com.yourcompany.yourproject প্যাকেজ নামের সাথে একটি Firebase Android অ্যাপ নিবন্ধিত থাকা উচিত।

আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত সমস্ত ফায়ারবেস অ্যাপগুলি কীভাবে খুঁজে পাবেন তা এখানে রয়েছে:

  1. Firebase কনসোলে, আপনার প্রকল্প সেটিংসে যান।

  2. আপনার অ্যাপস কার্ডে নিচে স্ক্রোল করুন, তারপরে শনাক্তকারী সহ অ্যাপটির তথ্য দেখতে পছন্দসই Firebase অ্যাপটিতে ক্লিক করুন।

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

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

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

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

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

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

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

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

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