আরও বিশ্লেষণের জন্য আপনি আপনার 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 ডকুমেন্টেশন দেখুন।
BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট
আপনি BigQuery স্ট্রিমিং এর মাধ্যমে আপনার Crashlytics ডেটা রিয়েলটাইমে স্ট্রিম করতে পারেন। লাইভ ডেটার প্রয়োজন হয় এমন যেকোন উদ্দেশ্যে আপনি এটি ব্যবহার করতে পারেন, যেমন একটি লাইভ ড্যাশবোর্ডে তথ্য উপস্থাপন করা, একটি রোলআউট লাইভ দেখা, বা অ্যালার্ট এবং কাস্টম ওয়ার্কফ্লো ট্রিগার করে এমন অ্যাপ্লিকেশন সমস্যাগুলি পর্যবেক্ষণ করা।
আপনি যখন BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করবেন, ব্যাচ টেবিলের পাশাপাশি আপনার কাছে একটি রিয়েলটাইম টেবিলও থাকবে। টেবিলের মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে রয়েছে:
ব্যাচ টেবিল | রিয়েলটাইম টেবিল |
---|---|
|
|
ব্যাচ টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে প্রবণতা সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে স্থিরভাবে সংরক্ষণ করি এবং সেগুলি 30 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে*। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, তখনই আমরা তা BigQuery এ লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল একটি সেলাই কোয়েরি সঙ্গে মিলিত হতে পারে উভয় সুবিধা পেতে.
ডিফল্টরূপে, রিয়েলটাইম টেবিলের পার্টিশনের মেয়াদ 30 দিনের জন্য থাকে। এটি কীভাবে সংশোধন করতে হয় তা জানতে, BigQuery ডকুমেন্টেশনে পার্টিশনের মেয়াদ সেট করুন দেখুন।
* নতুন রপ্তানি পরিকাঠামোতে আপগ্রেডে ব্যাকফিল সমর্থন সম্পর্কে বিশদ দেখুন।
BigQuery এ এক্সপোর্ট চালু করুন
Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।
BigQuery কার্ডে, লিঙ্কে ক্লিক করুন।
BigQuery এ এক্সপোর্ট সক্ষম করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।
আপনি যদি BigQuery এ আপনার Crashlytics ডেটার কাছাকাছি রিয়েল-টাইম অ্যাক্সেস চান, তাহলে স্ট্রিমিং এক্সপোর্টে আপগ্রেড করার কথা বিবেচনা করুন।
BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করুন
Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।
BigQuery কার্ডে, পরিচালনায় ক্লিক করুন।
স্ট্রিমিং অন্তর্ভুক্ত করুন চেকবক্স নির্বাচন করুন।
এই ক্রিয়াটি আপনার সমস্ত লিঙ্ক করা অ্যাপের জন্য স্ট্রিমিং সক্ষম করে৷
নিশ্চিত করুন যে আপনি আপনার অ্যাপ থেকে কমপক্ষে দুটি ইভেন্ট Crashlytics এ পাঠিয়েছেন এবং সেগুলি পাঠানোর পর কয়েক মিনিট অপেক্ষা করেছেন।
নিশ্চিত করুন যে আপনার ফায়ারবেস প্রকল্পটি ব্লেজ মূল্য নির্ধারণের পরিকল্পনায় রয়েছে
আপনি Firebase কনসোলের নীচে-বাম কোণে দেখে এটি পরীক্ষা করতে পারেন।দুটি ইভেন্ট পাঠানো এবং কয়েক মিনিট অপেক্ষা করার পরেও যদি আপনার রিয়েলটাইম টেবিলে এখনও কোনও ডেটা না থাকে:
Firebase কনসোলে BigQuery কার্ডে যান।
অক্ষম করুন এবং তারপর স্ট্রিমিং এক্সপোর্ট পুনরায় সক্ষম করুন৷
পরিষেবা অ্যাকাউন্ট নিশ্চিত করুন
service- PROJECT_NUMBER @gcp-sa-crashlytics.iam.gserviceaccount.com
আপনার ফায়ারবেস প্রকল্পে রয়েছে এবং এতে ফায়ারবেস ক্র্যাশলিটিক্স সার্ভিস এজেন্টের ভূমিকা রয়েছে।
আপনি Google Cloud কনসোলের IAM পৃষ্ঠায় এটি পরীক্ষা করতে পারেন ( Google-প্রদত্ত ভূমিকা অনুদান অন্তর্ভুক্ত করার জন্য চেকবক্সটি নির্বাচন করতে ভুলবেন না)।Crashlytics এ কমপক্ষে দুটি ইভেন্ট পাঠান এবং কয়েক মিনিট অপেক্ষা করুন।
আপনি যদি এখনও আপনার রিয়েলটাইম টেবিলে ডেটা দেখতে না পান, তাহলে Firebase সহায়তার সাথে যোগাযোগ করুন ।
আপনি রপ্তানি সক্ষম করলে কি হবে?
আপনি ডেটাসেট অবস্থান নির্বাচন করুন. ডেটাসেট তৈরি হওয়ার পরে, অবস্থান পরিবর্তন করা যাবে না, তবে আপনি ডেটাসেটটিকে একটি ভিন্ন অবস্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি একটি ভিন্ন অবস্থানে ডেটাসেটটি সরাতে (পুনরায় তৈরি) করতে পারেন৷ আরও জানতে, বিদ্যমান রপ্তানির জন্য অবস্থান পরিবর্তন দেখুন।
এই অবস্থানটি শুধুমাত্র BigQuery এ রপ্তানি করা ডেটার জন্য প্রযোজ্য, এবং এটি Firebase কনসোলের Crashlytics ড্যাশবোর্ডে বা Android স্টুডিওতে ব্যবহারের জন্য সংরক্ষণ করা ডেটার অবস্থানকে প্রভাবিত করে না।
ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে এবং আপনি পরে প্রোজেক্টে যোগ করেন এমন যেকোন অ্যাপ স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যায়। কোন অ্যাপগুলি ডেটা পাঠায় তা আপনি পরিচালনা করতে পারেন৷
Firebase আপনার ডেটার দৈনিক সিঙ্ক BigQuery এ সেট আপ করে।
আপনি আপনার প্রোজেক্ট লিঙ্ক করার পরে, আপনাকে সাধারণত আপনার প্রথম ডেটা সেট BigQuery এ এক্সপোর্ট করার জন্য পরের দিনের সিঙ্ক হওয়া পর্যন্ত অপেক্ষা করতে হবে।
আপনি BigQuery এ সেট আপ করেছেন এমন কোনো নির্ধারিত রপ্তানি নির্বিশেষে দৈনিক সিঙ্ক প্রতিদিন একবার হয়। মনে রাখবেন যে সিঙ্ক কাজের সময় এবং সময়কাল পরিবর্তিত হতে পারে, তাই আমরা রপ্তানির নির্দিষ্ট সময়ের উপর ভিত্তি করে ডাউনস্ট্রিম অপারেশন বা কাজের সময় নির্ধারণের সুপারিশ করি না।
Firebase আপনার বিদ্যমান ডেটার একটি অনুলিপি BigQuery এ রপ্তানি করে। রপ্তানির জন্য ডেটার প্রাথমিক প্রচারে 48 ঘন্টা পর্যন্ত সময় লাগতে পারে।
প্রতিটি লিঙ্ক করা অ্যাপের জন্য, এই রপ্তানিটিতে দৈনিক সিঙ্ক থেকে ডেটা ধারণকারী একটি ব্যাচ টেবিল অন্তর্ভুক্ত রয়েছে।
আপনি ম্যানুয়ালি ব্যাচ টেবিলের জন্য গত 30 দিন পর্যন্ত বা সবচেয়ে সাম্প্রতিক তারিখের জন্য যখন আপনি BigQuery এ রপ্তানি সক্ষম করেছেন (যেটি সাম্প্রতিকতম) ডেটা ব্যাকফিল নির্ধারণ করতে পারেন।
মনে রাখবেন যে আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি আগে Crashlytics ডেটা রপ্তানি সক্ষম করেন, তাহলে আপনি যেদিন রপ্তানি সক্ষম করেছেন তার 30 দিন আগেও আপনি ব্যাকফিল করতে পারবেন।
আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন , তাহলে সমস্ত লিঙ্ক করা অ্যাপের একটি রিয়েলটাইম টেবিল থাকবে যাতে ক্রমাগত ডেটা আপডেট হয়।
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: ক্র্যাশ সমস্যা দ্বারা প্রভাবিত ব্যবহারকারীর সংখ্যা, দেশ অনুসারে বিভক্ত
আপনার টিম একটি নতুন রিলিজের রোলআউটের সময় একটি জটিল বাগ সনাক্ত করেছে৷ আপনি নির্দিষ্ট ক্র্যাশ সমস্যা আইডি সনাক্ত করতে উপরের "সবচেয়ে ব্যাপক ক্র্যাশগুলি খুঁজুন" উদাহরণ থেকে প্রশ্নটি ব্যবহার করতে সক্ষম হয়েছেন৷ আপনার দল এখন দেখতে চায় যে এই ক্র্যাশটি বিশ্বের বিভিন্ন দেশে ব্যবহারকারীদের মধ্যে ছড়িয়ে পড়েছে কিনা।
এই প্রশ্নটি লিখতে, আপনার দলকে নিম্নলিখিতগুলি করতে হবে:
BigQuery এ Google Analytics ডেটা রপ্তানি সক্ষম করুন। BigQuery-এ প্রজেক্ট ডেটা এক্সপোর্ট দেখুন।
Google Analytics SDK এবং Crashlytics SDK উভয় ক্ষেত্রেই একটি ব্যবহারকারী আইডি পাস করতে আপনার অ্যাপ আপডেট করুন।
সুইফট
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
উদ্দেশ্য-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
জাভা
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Crashlytics ডেটাসেটে ক্র্যাশ সহ Google Analytics ডেটাসেটে ইভেন্টে যোগ দিতে ব্যবহারকারী আইডি ক্ষেত্র ব্যবহার করে এমন একটি ক্যোয়ারী লিখুন।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং
IOS
ব্যবহার করুন (প্যাকেজের নাম এবংANDROID
এর পরিবর্তে)।SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
উদাহরণ 8: আজ পর্যন্ত সেরা 5টি সমস্যা
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
উদাহরণ 9: আজ সহ DATE থেকে শীর্ষ 5টি সমস্যা
আপনি নির্ভরযোগ্য ব্যাচ ডেটাতে রিয়েলটাইম তথ্য যোগ করতে একটি স্টিচিং কোয়েরির সাথে ব্যাচ এবং রিয়েলটাইম টেবিলগুলিকে একত্রিত করতে পারেন। যেহেতু event_id
একটি প্রাথমিক কী, আপনি দুটি টেবিল থেকে যেকোনো সাধারণ ঘটনা অনুমান করতে DISTINCT event_id
ব্যবহার করতে পারেন।
এখানে একটি Android অ্যাপের জন্য একটি উদাহরণ ক্যোয়ারী আছে। একটি iOS অ্যাপের জন্য, এর বান্ডেল আইডি এবং IOS
ব্যবহার করুন (প্যাকেজের নাম এবং ANDROID
এর পরিবর্তে)।
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= 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 স্কিমা থেকে মাত্রা এবং মেট্রিক্সের একটি বিস্তৃত সেট রয়েছে। আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি Looker Studio টেমপ্লেটের রিয়েলটাইম প্রবণতা পৃষ্ঠায় সেই ডেটা দেখতে পারেন। আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে দ্রুত নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে আপনি নমুনাটিকে একটি টেমপ্লেট হিসেবে ব্যবহার করতে পারেন:
উপরের ডানদিকে কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।
নতুন ডেটা উত্স ড্রপ ডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।
BigQuery কার্ডে সিলেক্ট এ ক্লিক করুন।
আমার প্রকল্পগুলি > PROJECT_ID > firebase_crashlytics > TABLE_NAME বেছে নিয়ে রপ্তানি করা Crashlytics ডেটা ধারণকারী একটি সারণী নির্বাচন করুন।
আপনার ব্যাচ টেবিল সবসময় নির্বাচন করার জন্য উপলব্ধ. যদি BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিল বেছে নিতে পারেন।
কনফিগারেশনের অধীনে, Crashlytics টেমপ্লেট স্তরকে ডিফল্টে সেট করুন।
নতুন ডেটা সোর্স তৈরি করতে কানেক্ট এ ক্লিক করুন।
Crashlytics টেমপ্লেটে ফিরে যেতে প্রতিবেদনে যোগ করুন ক্লিক করুন।
অবশেষে, Crashlytics Looker Studio ড্যাশবোর্ড টেমপ্লেটের আপনার অনুলিপি তৈরি করতে প্রতিবেদন তৈরি করুন ক্লিক করুন।
BigQuery এ Crashlytics স্কিমা বুঝুন
Firebase Crashlytics ডেটা firebase_crashlytics
নামের একটি BigQuery ডেটাসেটে রপ্তানি করা হয়। ডেটাসেটটি আপনার পুরো প্রকল্পকে কভার করে, এমনকি এতে একাধিক অ্যাপ থাকলেও।
টেবিল
ডিফল্টরূপে, Firebase আপনার প্রজেক্টের প্রতিটি অ্যাপের জন্য Crashlytics ডেটাসেটের ভিতরে পৃথক টেবিল তৈরি করে যা BigQuery সাথে লিঙ্ক করা আছে। অ্যাপের শনাক্তকারীর (আন্ডারস্কোরে রূপান্তরিত পিরিয়ড সহ) এবং অ্যাপের প্ল্যাটফর্ম ( _IOS
বা _ANDROID
) এর সাথে যুক্ত করা হয়েছে। উদাহরণস্বরূপ, com.google.test
প্যাকেজ নামের একটি Android অ্যাপের ডেটা com_google_test_ANDROID
নামের একটি টেবিলে থাকবে।
আপনি যদি BigQuery এ Crashlytics স্ট্রিমিং রপ্তানি সক্ষম করেন, তাহলে Crashlytics ডেটা রিয়েলটাইমে _REALTIME
(উদাহরণস্বরূপ, com_google_test_ANDROID_REALTIME
) এর সাথে যুক্ত একটি টেবিলে স্ট্রিম করা হবে।
একটি টেবিলের প্রতিটি সারি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR সহ অ্যাপে ঘটে যাওয়া একটি ইভেন্টকে উপস্থাপন করে।
টেবিলে আপনার অ্যাপে আপনার দ্বারা সংজ্ঞায়িত যেকোনো কাস্টম Crashlytics কী ছাড়াও Crashlytics ডেটার একটি মানক সেট রয়েছে।
সারি
একটি টেবিলের প্রতিটি সারি অ্যাপটির সম্মুখীন হওয়া একটি ত্রুটি উপস্থাপন করে।
কলাম
একটি টেবিলের কলামগুলি ক্র্যাশ, অ-মারাত্মক ত্রুটি এবং ANR-এর জন্য অভিন্ন। যদি BigQuery এ Crashlytics স্ট্রিমিং এক্সপোর্ট চালু করা থাকে, তাহলে রিয়েলটাইম টেবিলে ব্যাচ টেবিলের মতো একই কলাম থাকবে। মনে রাখবেন যে আপনার সারিগুলিতে কলাম থাকতে পারে যা এমন ইভেন্টগুলিকে উপস্থাপন করে যেগুলির স্ট্যাক ট্রেস নেই৷
এখানে রপ্তানি করা 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 BigQuery এ Crashlytics ডেটা ব্যাচ রপ্তানির জন্য একটি নতুন পরিকাঠামো চালু করেছে।
সমস্ত 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 : আপগ্রেড করার পূর্বশর্ত
আপনার বিদ্যমান 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 অ্যাপ রয়েছে।
আপনার যদি ব্যাচ টেবিলের নাম থাকে যা আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য সেট করা শনাক্তকারীর সাথে মেলে না , তাহলে ম্যানুয়ালি আপগ্রেড করার আগে বা 15 সেপ্টেম্বর, 2025 এর আগে আপনার ব্যাচ রপ্তানিতে ব্যাঘাত এড়াতে এই পৃষ্ঠায় পরে নির্দেশাবলী অনুসরণ করুন ।
ধাপ 2 : ম্যানুয়ালি নতুন পরিকাঠামোতে আপগ্রেড করুন
আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি আগে ব্যাচ রপ্তানি সক্ষম করে থাকেন, তাহলে আপনি Firebase কনসোলে Crashlytics ডেটা এক্সপোর্ট বন্ধ টগল করে নতুন পরিকাঠামোতে ম্যানুয়ালি আপগ্রেড করতে পারেন।
এখানে বিস্তারিত পদক্ষেপ আছে:
Firebase কনসোলে, ইন্টিগ্রেশন পৃষ্ঠায় যান।
BigQuery কার্ডে, পরিচালনায় ক্লিক করুন।
রপ্তানি অক্ষম করতে Crashlytics স্লাইডারটি টগল করুন। অনুরোধ করা হলে, নিশ্চিত করুন যে আপনি ডেটা এক্সপোর্ট বন্ধ করতে চান।
রপ্তানি পুনরায় সক্ষম করতে অবিলম্বে আবার Crashlytics স্লাইডারে টগল করুন৷ অনুরোধ করা হলে, নিশ্চিত করুন যে আপনি ডেটা রপ্তানি করতে চান।
BigQuery এ আপনার Crashlytics ডেটা এক্সপোর্ট এখন নতুন এক্সপোর্ট ইনফ্রাস্ট্রাকচার ব্যবহার করছে।
আপনার বিদ্যমান ব্যাচ টেবিলের নাম আপনার Firebase অ্যাপ শনাক্তকারীর সাথে মেলে না
আপনার যদি এই অবস্থায় বিদ্যমান BigQuery ব্যাচ টেবিল থাকে, তাহলে এর মানে হল যে সেগুলি Firebase-এর নতুন ব্যাচ এক্সপোর্ট-টু- BigQuery পরিকাঠামোর সাথে সামঞ্জস্যপূর্ণ নয়। মনে রাখবেন যে সমস্ত Firebase প্রকল্পগুলি 15 সেপ্টেম্বর, 2025 এর প্রথম দিকে নতুন রপ্তানি পরিকাঠামোতে স্বয়ংক্রিয়ভাবে স্থানান্তরিত হবে।
ম্যানুয়ালি আপগ্রেড করার আগে বা 15 সেপ্টেম্বর, 2025-এর আগে BigQuery এ আপনার Crashlytics ডেটার ব্যাচ এক্সপোর্টে ব্যাঘাত এড়াতে এই বিভাগে নির্দেশিকা অনুসরণ করুন।
বিঘ্ন এড়াতে বিকল্পগুলির জন্য নির্দেশাবলীতে যান
BigQuery টেবিলে ডেটা লেখার জন্য এক্সপোর্ট ইনফ্রাস্ট্রাকচার কীভাবে শনাক্তকারী ব্যবহার করে তা বুঝুন
দুটি এক্সপোর্ট ইনফ্রাস্ট্রাকচার কিভাবে BigQuery ব্যাচ টেবিলে Crashlytics ডেটা লেখে:
লিগ্যাসি এক্সপোর্ট ইনফ্রাস্ট্রাকচার : আপনার অ্যাপের বাইনারিতে বান্ডেল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে একটি নামের সাথে একটি টেবিলে ডেটা লেখে।
নতুন রপ্তানি পরিকাঠামো : আপনার Firebase প্রকল্পে আপনার নিবন্ধিত Firebase অ্যাপের জন্য সেট করা বান্ডেল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে একটি নাম সহ একটি টেবিলে ডেটা লেখে।
দুর্ভাগ্যবশত, কখনও কখনও আপনার অ্যাপের বাইনারিতে বান্ডিল আইডি বা প্যাকেজের নাম আপনার Firebase প্রকল্পে আপনার নিবন্ধিত Firebase অ্যাপের জন্য সেট করা বান্ডিল আইডি বা প্যাকেজ নামের সাথে মেলে না। অ্যাপ রেজিস্ট্রেশনের সময় কেউ প্রকৃত শনাক্তকারী প্রবেশ না করলে সাধারণত এটি ঘটে।
আপগ্রেড করার আগে এটি ঠিক না হলে কী হবে?
যদি এই দুটি অবস্থানের শনাক্তকারী মেলে না, তাহলে নতুন রপ্তানি পরিকাঠামোতে আপগ্রেড করার পরে নিম্নলিখিতগুলি ঘটে:
আপনার Crashlytics ডেটা একটি নতুন BigQuery ব্যাচ টেবিলে লেখা শুরু করবে — অর্থাৎ, আপনার Firebase প্রোজেক্টে আপনার নিবন্ধিত Firebase অ্যাপের জন্য সেট করা বান্ডেল ID বা প্যাকেজের নামের উপর ভিত্তি করে একটি নাম সহ একটি নতুন টেবিল।
আপনার অ্যাপের বাইনারিতে শনাক্তকারীর উপর ভিত্তি করে একটি নাম সহ যেকোন বিদ্যমান "লেগেসি" টেবিলে আর এতে লেখা ডেটা থাকবে না।
অমিল শনাক্তকারীর উদাহরণ পরিস্থিতি
মনে রাখবেন যে অ্যাপের প্ল্যাটফর্ম নির্দেশ করতে BigQuery ব্যাচের টেবিলের নামগুলি স্বয়ংক্রিয়ভাবে _IOS
বা _ANDROID
সাথে যুক্ত হয়।
আপনার অ্যাপের বাইনারিতে শনাক্তকারী(গুলি) | আপনার ফায়ারবেস অ্যাপের জন্য শনাক্তকারী(গুলি) সেট করা হয়েছে | উত্তরাধিকার আচরণ | আপগ্রেড করার পরে আচরণ নতুন রপ্তানি পরিকাঠামোতে | সমাধান |
---|---|---|---|---|
foo | bar | অ্যাপের বাইনারি ( foo ) এ শনাক্তকারীর নামে একটি একক টেবিলে লেখে | তৈরি করে তারপর Firebase অ্যাপের জন্য শনাক্তকারী সেটের নামে একটি একক টেবিলে লেখে ( bar ) | নীচে বর্ণিত বিকল্প 1 বা 2 প্রয়োগ করুন। |
foo | bar , qux , ইত্যাদি | অ্যাপের বাইনারি ( foo ) এ শনাক্তকারীর নামে একটি একক টেবিলে লেখে | তৈরি করে* তারপর Firebase Apps ( bar , qux , ইত্যাদি) এর জন্য সেট করা শনাক্তকারীর নামানুসারে একাধিক টেবিলে লেখে। | নিচে বর্ণিত বিকল্প 2 বাস্তবায়ন করুন। |
foo , baz , ইত্যাদি | bar | অ্যাপের বাইনারি ( foo , baz , ইত্যাদি) একাধিক শনাক্তকারীর নামানুসারে একাধিক টেবিলে লেখে। | তৈরি করে** তারপর প্রতিটি অ্যাপের ডেটা ফায়ারবেস অ্যাপ ( bar ) এর জন্য শনাক্তকারী সেটের নামে একটি একক টেবিলে লেখে | কোনো বিকল্পই বাস্তবায়ন করা যাবে না। আপনি এখনও ডেটার পাশাপাশি এক্সপোর্ট করা অ্যাপের |
* যদি আপনার অ্যাপের বাইনারিতে থাকা শনাক্তকারীটি একটি Firebase অ্যাপের জন্য সেট করা শনাক্তকারীর একটির সাথে মিলে যায়, তাহলে নতুন রপ্তানি পরিকাঠামো সেই শনাক্তকারীর জন্য একটি নতুন টেবিল তৈরি করবে না। পরিবর্তে, এটি সেই নির্দিষ্ট অ্যাপের জন্য ডেটা লেখা চালিয়ে যাবে। অন্য সব অ্যাপ নতুন টেবিলে লেখা হবে।
** যদি আপনার অ্যাপের বাইনারি শনাক্তকারীগুলির মধ্যে একটি Firebase অ্যাপের শনাক্তকারী সেটের সাথে মিলে যায়, তাহলে নতুন রপ্তানি পরিকাঠামো একটি নতুন টেবিল তৈরি করবে না। পরিবর্তে, এটি সেই টেবিলটি বজায় রাখবে এবং এতে সমস্ত অ্যাপের জন্য ডেটা লেখা শুরু করবে।
বিঘ্ন এড়াতে বিকল্প
কোনও বাধা এড়াতে, আপনি ম্যানুয়ালি আপগ্রেড করার আগে বা 15 সেপ্টেম্বর, 2025 এর আগে নীচে বর্ণিত বিকল্পগুলির একটির জন্য নির্দেশাবলী অনুসরণ করুন।
বিকল্প 1 :
নতুন রপ্তানি পরিকাঠামো দ্বারা তৈরি নতুন টেবিল ব্যবহার করুন। আপনি আপনার বিদ্যমান টেবিল থেকে নতুন টেবিলে ডেটা কপি করবেন।Firebase কনসোলে, রপ্তানি বন্ধ করে নতুন রপ্তানি পরিকাঠামোতে আপগ্রেড করুন এবং লিঙ্ক করা অ্যাপের জন্য আবার চালু করুন।
এই ক্রিয়াটি একটি নাম সহ একটি নতুন ব্যাচ টেবিল তৈরি করে যা আপনার Firebase প্রকল্পে আপনার নিবন্ধিত Firebase অ্যাপের জন্য সেট করা বান্ডেল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে।
Google Cloud কনসোলে, আপনার উত্তরাধিকার সারণী থেকে সমস্ত ডেটা কপি করুন নতুন টেবিলে যা এইমাত্র তৈরি করা হয়েছে৷
আপনার ব্যাচ টেবিলের উপর নির্ভরশীল কোনো ডাউনস্ট্রিম নির্ভরতা থাকলে, নতুন টেবিল ব্যবহার করতে সেগুলি পরিবর্তন করুন।
বিকল্প 2 :
আপনার বিদ্যমান টেবিলে লেখা চালিয়ে যান। এটি অর্জন করতে আপনি BigQuery কনফিগারেশনে কিছু ডিফল্ট ওভাররাইড করবেন।Firebase কনসোলে, অমিল ব্যাচ টেবিলের নাম এবং শনাক্তকারী সহ অ্যাপটির Firebase অ্যাপ আইডি (উদাহরণস্বরূপ,
1:1234567890:ios:321abc456def7890
) খুঁজুন এবং নোট করুন:
আপনার প্রকল্প সেটিংসে যান, তারপর আপনার সমস্ত ফায়ারবেস অ্যাপ এবং তাদের তথ্য দেখতে আপনার অ্যাপস কার্ডে স্ক্রোল করুন।Firebase কনসোলে, রপ্তানি বন্ধ করে নতুন রপ্তানি পরিকাঠামোতে আপগ্রেড করুন এবং লিঙ্ক করা অ্যাপের জন্য আবার চালু করুন।
এই ক্রিয়াটি দুটি জিনিস করে:
আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য বান্ডিল আইডি বা প্যাকেজ নাম সেট করা একটি নাম সহ একটি নতুন ব্যাচের টেবিল তৈরি করে। (আপনি অবশেষে এই টেবিলটি মুছবেন, তবে এটি এখনও মুছবেন না ))
সোর্স
Firebase Crashlytics with Multi-Region Support
একটি BigQuery "ডেটা ট্রান্সফার কনফিগারেশন" তৈরি করে।
Google Cloud কনসোলে, নতুন "ডেটা ট্রান্সফার কনফিগারেশন" পরিবর্তন করুন যাতে ডেটা আপনার বিদ্যমান টেবিলটিতে লিখতে থাকে:
আপনার "ডেটা ট্রান্সফার কনফিগারেশন" দেখতে বিগকুয়ারি > ডেটা ট্রান্সফারগুলিতে যান।
কনফিগারেশনটি নির্বাচন করুন যা
Firebase Crashlytics with Multi-Region Support
রয়েছে।উপরের-ডান কোণায় সম্পাদনা ক্লিক করুন।
ডেটা উত্স বিশদ বিভাগে, GMP_APP_ID এর জন্য একটি তালিকা এবং ক্লায়েন্ট_নামস্পেসের জন্য একটি তালিকা সন্ধান করুন।
BigQuery , ফায়ারবেস অ্যাপ আইডিটিকে
gmp_app_id
বলা হয়। ডিফল্টরূপে, BigQueryclient_namespace
মান হ'ল অ্যাপ্লিকেশনটির সংশ্লিষ্ট অনন্য বান্ডিল আইডি / প্যাকেজ নাম, তবে আপনি এই ডিফল্ট কনফিগারেশনটিকে ওভাররাইড করবেন।BigQuery প্রতিটি লিঙ্কযুক্ত ফায়ারবেস অ্যাপ্লিকেশনটি লিখেছেন এমন ব্যাচের টেবিলের নামের জন্য
client_namespace
মান ব্যবহার করে।ফায়ারবেস অ্যাপ্লিকেশনটির GMP_APP_ID সন্ধান করুন যার জন্য আপনি ডিফল্ট সেটিংসকে ওভাররাইড করতে চান। তার ক্লায়েন্ট_নামস্পেস মানটি টেবিলের নামে পরিবর্তন করুন আপনি পরিবর্তে ফায়ারবেস অ্যাপটি লিখতে চান (সাধারণত এটি লিগ্যাসি রফতানি অবকাঠামো দিয়ে অ্যাপটি লিখেছিল এমন উত্তরাধিকার টেবিলের নাম)।
কনফিগার পরিবর্তন সংরক্ষণ করুন।
আপনার বিদ্যমান টেবিলটি ডেটা অনুপস্থিত রয়েছে এমন দিনগুলির জন্য একটি ব্যাকফিল নির্ধারণ করুন ।
ব্যাকফিলটি হয়ে গেলে, নতুন রফতানি অবকাঠামো দ্বারা স্বয়ংক্রিয়ভাবে তৈরি করা নতুন টেবিলটি মুছুন ।
আপনি আরও বিশ্লেষণের জন্য আপনার 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 স্ট্রিমিং রফতানি সক্ষম করেন, ব্যাচের টেবিল ছাড়াও আপনার কাছে একটি রিয়েলটাইম টেবিলও থাকবে। টেবিলগুলির মধ্যে আপনার যে পার্থক্যগুলি সম্পর্কে সচেতন হওয়া উচিত তা এখানে:
ব্যাচের টেবিল | রিয়েলটাইম টেবিল |
---|---|
|
|
ব্যাচের টেবিলটি দীর্ঘমেয়াদী বিশ্লেষণ এবং সময়ের সাথে সাথে প্রবণতাগুলি সনাক্ত করার জন্য আদর্শ কারণ আমরা ইভেন্টগুলি লেখার আগে যথাযথভাবে সঞ্চয় করি এবং সেগুলি 30 দিন পর্যন্ত টেবিলে ব্যাকফিল করা যেতে পারে*। যখন আমরা আপনার রিয়েলটাইম টেবিলে ডেটা লিখি, আমরা তাত্ক্ষণিকভাবে এটি BigQuery লিখি এবং তাই এটি লাইভ ড্যাশবোর্ড এবং কাস্টম সতর্কতার জন্য আদর্শ। এই দুটি টেবিল উভয়ের সুবিধা পেতে একটি সেলাই ক্যোয়ারির সাথে একত্রিত করা যেতে পারে।
ডিফল্টরূপে, রিয়েলটাইম টেবিলের একটি পার্টিশন মেয়াদোত্তীর্ণ সময় 30 দিনের। কীভাবে এটি সংশোধন করবেন তা শিখতে, BigQuery ডকুমেন্টেশনে পার্টিশন মেয়াদোত্তীর্ণতা সেট করুন ।
* নতুন রফতানি অবকাঠামোতে আপগ্রেডে ব্যাকফিল সমর্থন সম্পর্কিত বিশদ দেখুন।
BigQuery রফতানি সক্ষম করুন
Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।
BigQuery কার্ডে, লিঙ্কটি ক্লিক করুন।
BigQuery রফতানি সক্ষম করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।
আপনি যদি BigQuery আপনার Crashlytics ডেটাতে রিয়েল-টাইম অ্যাক্সেস চান তবে স্ট্রিমিং রফতানিতে আপগ্রেড করার বিষয়টি বিবেচনা করুন।
BigQuery Crashlytics স্ট্রিমিং রফতানি সক্ষম করুন
Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।
BigQuery কার্ডে, পরিচালনা ক্লিক করুন।
স্ট্রিমিং চেকবক্স অন্তর্ভুক্ত নির্বাচন করুন।
এই ক্রিয়াটি আপনার লিঙ্কযুক্ত সমস্ত অ্যাপ্লিকেশনগুলির জন্য স্ট্রিমিং সক্ষম করে।
নিশ্চিত হয়ে নিন যে আপনি আপনার অ্যাপ্লিকেশন থেকে Crashlytics কমপক্ষে দুটি ইভেন্ট প্রেরণ করেছেন এবং সেগুলি প্রেরণের কয়েক মিনিট অপেক্ষা করেছেন।
নিশ্চিত হয়ে নিন যে আপনার ফায়ারবেস প্রকল্পটি আপনাকে-যেমন-আপনি ব্লেজ মূল্য নির্ধারণের পরিকল্পনায় রয়েছেন।
আপনি Firebase কনসোলের নীচের-বাম কোণে দেখে এটি পরীক্ষা করতে পারেন।দুটি ইভেন্ট প্রেরণের পরে এবং কয়েক মিনিট অপেক্ষা করার পরে যদি আপনার রিয়েলটাইম টেবিলে এখনও কোনও ডেটা না থাকে:
Firebase কনসোলে BigQuery কার্ডে যান।
অক্ষম করুন এবং তারপরে স্ট্রিমিং রফতানি পুনরায় সক্ষম করুন।
পরিষেবা অ্যাকাউন্ট নিশ্চিত করুন
service- PROJECT_NUMBER @gcp-sa-crashlytics.iam.gserviceaccount.com
আপনার ফায়ারবেস প্রকল্পে রয়েছে এবং ফায়ারবেস ক্র্যাশলাইটিক্স সার্ভিস এজেন্টের ভূমিকা রয়েছে।
আপনি এটি Google Cloud কনসোলের আইএএম পৃষ্ঠায় চেক করতে পারেন ( গুগল-সরবরাহিত ভূমিকা অনুদানের অন্তর্ভুক্তির জন্য চেকবক্সটি নির্বাচন করার বিষয়টি নিশ্চিত করুন)।Crashlytics কমপক্ষে দুটি ইভেন্ট প্রেরণ করুন এবং কয়েক মিনিট অপেক্ষা করুন।
আপনি যদি এখনও আপনার রিয়েলটাইম টেবিলে ডেটা না দেখতে পান তবে ফায়ারবেস সমর্থনটিতে পৌঁছান ।
আপনি যখন রফতানি সক্ষম করবেন তখন কী হবে?
আপনি ডেটাসেট অবস্থান নির্বাচন করুন। ডেটাসেট তৈরি হওয়ার পরে, অবস্থানটি পরিবর্তন করা যায় না, তবে আপনি ডেটাসেটটি অন্য কোনও স্থানে অনুলিপি করতে পারেন বা ম্যানুয়ালি ডেটাসেটটি অন্য কোনও স্থানে সরিয়ে (পুনরায় তৈরি) করতে পারেন। আরও জানতে, বিদ্যমান রফতানির জন্য অবস্থান পরিবর্তন করুন দেখুন।
এই অবস্থানটি কেবল 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: ক্র্যাশ ইস্যুতে প্রভাবিত ব্যবহারকারীদের সংখ্যা, দেশ দ্বারা ভেঙে
আপনার দল একটি নতুন রিলিজের রোলআউট চলাকালীন একটি সমালোচনামূলক বাগ সনাক্ত করেছে। নির্দিষ্ট ক্র্যাশ ইস্যু আইডি সনাক্ত করতে আপনি উপরের "সর্বাধিক বিস্তৃত ক্র্যাশগুলি সন্ধান করুন" উদাহরণ থেকে ক্যোয়ারীটি ব্যবহার করতে সক্ষম হয়েছিলেন। আপনার দলটি এখন দেখতে চাইবে যে এই ক্র্যাশটি বিশ্বের বিভিন্ন দেশে ব্যবহারকারীদের কাছে ছড়িয়ে পড়েছে কিনা।
এই কোয়েরি লিখতে, আপনার দলকে নিম্নলিখিতগুলি করতে হবে:
BigQuery Google Analytics ডেটা রফতানি সক্ষম করুন। বিগকোয়ারিতে প্রকল্পের ডেটা রফতানি দেখুন।
Google Analytics এসডিকে এবং Crashlytics এসডিকে উভয় ক্ষেত্রেই ব্যবহারকারী আইডি পাস করতে আপনার অ্যাপ্লিকেশন আপডেট করুন।
সুইফট
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
উদ্দেশ্য-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
জাভা
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
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 আপনি আপনার নিজের অ্যাপের কাঁচা ক্র্যাশ ডেটার উপর ভিত্তি করে নতুন প্রতিবেদন এবং ভিজ্যুয়ালাইজেশন তৈরি করতে নমুনাটিকে একটি টেমপ্লেট হিসাবে ব্যবহার করতে পারেন:
উপরের-ডান কোণায় টেমপ্লেট ব্যবহার করুন ক্লিক করুন।
নতুন ডেটা উত্স ড্রপ ডাউনে, নতুন ডেটা উত্স তৈরি করুন নির্বাচন করুন।
BigQuery কার্ডে নির্বাচন করুন ক্লিক করুন।
আমার প্রকল্পগুলি> PROJECT_ID > ফায়ারবেস_ক্র্যাশলাইটিক্স> TABLE_NAME নির্বাচন করে রফতানি করা Crashlytics ডেটাযুক্ত একটি সারণী নির্বাচন করুন।
আপনার ব্যাচের টেবিলটি সর্বদা নির্বাচন করার জন্য উপলব্ধ। যদি Crashlytics স্ট্রিমিং রফতানি BigQuery সক্ষম করা থাকে তবে আপনি পরিবর্তে আপনার রিয়েলটাইম টেবিলটি নির্বাচন করতে পারেন।
কনফিগারেশনের অধীনে, Crashlytics টেম্পলেট স্তরটি ডিফল্টে সেট করুন।
নতুন ডেটা উত্স তৈরি করতে সংযোগ ক্লিক করুন।
Crashlytics টেম্পলেটটিতে ফিরে আসতে প্রতিবেদনে অ্যাড ক্লিক করুন।
অবশেষে, 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 : আপগ্রেড করার জন্য পূর্বশর্ত
আপনার বিদ্যমান BigQuery ব্যাচের টেবিলগুলি আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট করা বান্ডিল আইডি বা প্যাকেজ নামগুলিতে ম্যাচিং আইডেন্টিফায়ার ব্যবহার করে কিনা তা পরীক্ষা করে দেখুন। যদি তারা মেলে না, তবে আপনি আপনার রফতানি ব্যাচের ডেটাতে বাধা অনুভব করতে পারেন। বেশিরভাগ প্রকল্পগুলি একটি যথাযথ এবং সামঞ্জস্যপূর্ণ অবস্থায় থাকবে তবে আপগ্রেড করার আগে এটি পরীক্ষা করা গুরুত্বপূর্ণ।
আপনি Firebase কনসোলে আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত সমস্ত ফায়ারবেস অ্যাপ্লিকেশনগুলি খুঁজে পেতে পারেন: আপনার প্রকল্পের সেটিংসে যান, তারপরে আপনার সমস্ত ফায়ারবেস অ্যাপ্লিকেশন এবং তাদের তথ্য দেখতে আপনার অ্যাপ্লিকেশন কার্ডে স্ক্রোল করুন।
আপনি Google Cloud কনসোলের BigQuery পৃষ্ঠায় আপনার সমস্ত BigQuery ব্যাচের টেবিলগুলি খুঁজে পেতে পারেন।
উদাহরণস্বরূপ, এখানে আদর্শ রাজ্যগুলি যেখানে আপনার কোনও সমস্যা আপগ্রেড হবে না:
আপনার কাছে
com_yourcompany_yourproject_IOS
নামে একটি ব্যাচের টেবিল রয়েছে এবং আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত বান্ডিল আইডিcom.yourcompany.yourproject
সহ একটি ফায়ারবেস আইওএস+ অ্যাপ্লিকেশন রয়েছে।আপনার কাছে
com_yourcompany_yourproject_ANDROID
নামে একটি ব্যাচের টেবিল রয়েছে এবং আপনার ফায়ারবেস প্রকল্পে নিবন্ধিত প্যাকেজের নামcom.yourcompany.yourproject
প্যাকেজ নাম সহ একটি ফায়ারবেস অ্যান্ড্রয়েড অ্যাপ্লিকেশন রয়েছে।
আপনার যদি ব্যাচের টেবিলের নাম থাকে যা আপনার নিবন্ধিত ফায়ারবেস অ্যাপ্লিকেশনগুলির জন্য সেট করা শনাক্তকারীদের সাথে মেলে না , তবে ম্যানুয়ালি আপগ্রেড করার আগে বা আপনার ব্যাচের রফতানিতে বাধা এড়াতে সেপ্টেম্বর 15, 2025 এর আগে এই পৃষ্ঠায় পরে নির্দেশাবলী অনুসরণ করুন ।
পদক্ষেপ 2 : ম্যানুয়ালি নতুন অবকাঠামোতে আপগ্রেড করুন
আপনি যদি 2024 সালের অক্টোবরের মাঝামাঝি সময়ে ব্যাচ রফতানি সক্ষম করে থাকেন তবে আপনি Crashlytics ডেটা রফতানি বন্ধ করে এবং তারপরে আবার Firebase কনসোলে আবার টগল করে নতুন অবকাঠামোতে ম্যানুয়ালি আপগ্রেড করতে পারেন।
এখানে বিস্তারিত পদক্ষেপ আছে:
Firebase কনসোলে, ইন্টিগ্রেশনস পৃষ্ঠায় যান।
BigQuery কার্ডে, পরিচালনা ক্লিক করুন।
রফতানি অক্ষম করতে Crashlytics স্লাইডারটি টগল করুন। যখন অনুরোধ জানানো হয়, নিশ্চিত করুন যে আপনি ডেটা রফতানি বন্ধ করতে চান।
পুনরায় সক্ষম রফতানিতে পুনরায় সক্ষম করতে আবার Crashlytics স্লাইডারটি আবার টগল করুন। যখন অনুরোধ জানানো হয়, আপনি ডেটা রফতানি করতে চান তা নিশ্চিত করুন।
আপনার Crashlytics ডেটা রফতানি BigQuery এখন নতুন রফতানি অবকাঠামো ব্যবহার করছে।
আপনার বিদ্যমান ব্যাচের টেবিলের নামটি আপনার ফায়ারবেস অ্যাপ সনাক্তকারীটির সাথে মেলে না
যদি আপনার এই রাজ্যে বিদ্যমান BigQuery ব্যাচের টেবিলগুলি থাকে তবে এর অর্থ হ'ল তারা ফায়ারবেসের নতুন ব্যাচ রফতানি থেকে BigQuery অবকাঠামোর সাথে সামঞ্জস্যপূর্ণ নয়। নোট করুন যে সমস্ত ফায়ারবেস প্রকল্পগুলি 15 সেপ্টেম্বর, 2025 এর প্রথম দিকে স্বয়ংক্রিয়ভাবে নতুন রফতানি অবকাঠামোতে স্থানান্তরিত হবে।
আপনার Crashlytics ডেটা BigQuery ব্যাচ রফতানিতে বাধা এড়াতে ম্যানুয়ালি আপগ্রেড করার আগে বা সেপ্টেম্বর 15, 2025 এর আগে এই বিভাগে গাইডেন্সটি অনুসরণ করুন।
বাধা এড়াতে বিকল্পগুলির জন্য নির্দেশাবলীতে ঝাঁপুন
রফতানি অবকাঠামো কীভাবে BigQuery টেবিলগুলিতে ডেটা লেখার জন্য সনাক্তকারী ব্যবহার করে তা বুঝতে
দুটি রফতানি অবকাঠামো কীভাবে BigQuery ব্যাচের টেবিলগুলিতে Crashlytics ডেটা লিখুন:
লিগ্যাসি রফতানি অবকাঠামো : আপনার অ্যাপের বাইনারিটিতে বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে একটি নাম সহ একটি টেবিলে ডেটা লিখেছেন।
নতুন রফতানি অবকাঠামো : আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে একটি নাম সহ একটি টেবিলে ডেটা লিখেছেন।
দুর্ভাগ্যক্রমে, কখনও কখনও আপনার অ্যাপের বাইনারিটিতে বান্ডিল আইডি বা প্যাকেজের নামটি আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য বান্ডিল আইডি বা প্যাকেজ নাম সেটটির সাথে মেলে না। এটি সাধারণত ঘটে যদি কেউ অ্যাপ রেজিস্ট্রেশনের সময় প্রকৃত সনাক্তকারীটিতে প্রবেশ না করে।
এটি আপগ্রেড করার আগে স্থির না হলে কী হয়?
যদি এই দুটি স্থানে সনাক্তকারীরা মেলে না, তবে নতুন রফতানি অবকাঠামোতে আপগ্রেড করার পরে নিম্নলিখিতটি ঘটে:
আপনার Crashlytics ডেটা একটি নতুন BigQuery ব্যাচের টেবিলে লিখতে শুরু করবে - অর্থাৎ, আপনার ফায়ারবেস প্রকল্পে আপনার নিবন্ধিত ফায়ারবেস অ্যাপের জন্য বান্ডিল আইডি বা প্যাকেজ নামের উপর ভিত্তি করে একটি নাম সহ একটি নতুন টেবিল।
আপনার অ্যাপের বাইনারিটির সনাক্তকারীটির উপর ভিত্তি করে একটি নাম সহ বিদ্যমান "লিগ্যাসি" টেবিলটি আর এতে ডেটা লিখিত থাকবে না।
মেলে না এমন শনাক্তকারীদের উদাহরণ উদাহরণস্বরূপ
নোট করুন যে অ্যাপ্লিকেশনটির প্ল্যাটফর্মটি নির্দেশ করতে BigQuery ব্যাচের টেবিলের নামগুলি স্বয়ংক্রিয়ভাবে _IOS
বা _ANDROID
সাথে যুক্ত করা হয়।
আপনার অ্যাপের বাইনারি সনাক্তকারী (গুলি) | আপনার ফায়ারবেস অ্যাপ (গুলি) এর জন্য সেট সনাক্তকারী (গুলি) | উত্তরাধিকার আচরণ | আপগ্রেড পরে আচরণ নতুন রফতানি অবকাঠামো | সমাধান |
---|---|---|---|---|
foo | bar | অ্যাপের বাইনারি ( foo ) এর আইডেন্টিফায়ার নামে নামকরণ করা একটি একক টেবিলে লিখেছেন | তারপরে ফায়ারবেস অ্যাপ্লিকেশন ( bar ) এর জন্য আইডেন্টিফায়ার সেট নামে নামকরণ করা একটি একক টেবিলে লিখেছেন | নীচে বর্ণিত 1 বা 2 বিকল্প প্রয়োগ করুন। |
foo | bar , qux , ইত্যাদি | অ্যাপের বাইনারি ( foo ) এর আইডেন্টিফায়ার নামে নামকরণ করা একটি একক টেবিলে লিখেছেন | তৈরি করে* তারপরে ফায়ারবেস অ্যাপস ( bar , qux , ইত্যাদি) এর জন্য সেট করা আইডেন্টিফায়ারগুলির নাম অনুসারে একাধিক টেবিলগুলিতে লেখেন | নীচে বর্ণিত বিকল্প 2 প্রয়োগ করুন। |
foo , baz , ইত্যাদি | bar | অ্যাপের বাইনারি ( foo , baz , ইত্যাদি) এর একাধিক আইডেন্টিফায়ার নামে নামযুক্ত একাধিক টেবিলগুলিতে লিখেছেন | তৈরি করে ** তারপরে প্রতিটি অ্যাপের ডেটা ফায়ারবেস অ্যাপ্লিকেশন ( bar ) এর জন্য আইডেন্টিফায়ার সেট নামে নামকরণ করা একটি একক টেবিলে লেখেন | বিকল্পগুলির কোনওটিই কার্যকর করা যায় না। আপনি এখনও অ্যাপ্লিকেশনটির |
* যদি আপনার অ্যাপের বাইনারি সনাক্তকারীটি ফায়ারবেস অ্যাপের জন্য সেট করা সনাক্তকারীগুলির মধ্যে একটির সাথে মেলে, তবে নতুন রফতানি অবকাঠামো সেই শনাক্তকারীর জন্য একটি নতুন টেবিল তৈরি করবে না। পরিবর্তে, এটি সেই নির্দিষ্ট অ্যাপ্লিকেশনটির জন্য ডেটা লেখা চালিয়ে যাবে। অন্যান্য সমস্ত অ্যাপ্লিকেশন নতুন টেবিলগুলিতে লেখা হবে।
** If one of the identifiers in your app's binary matched the identifier set for the Firebase App, then the new export infrastructure won't create a new table. Instead, it will maintain that table and start writing data for all apps to it.
Options to avoid disruption
To avoid any disruptions, follow the instructions for one of the options described below before you manually upgrade or before September 15, 2025.
বিকল্প 1 :
Use the new table created by the new export infrastructure. You'll copy data from your existing table to the new table.In the Firebase console, upgrade to the new export infrastructure by turning export off and then on again for the linked app.
This action creates a new batch table with a name that's based on the bundle ID or package name set for your registered Firebase App in your Firebase project .
In the Google Cloud console, copy all the data from your legacy table to the new table that was just created.
If you have any downstream dependencies that depend on your batch table, change them to use the new table.
বিকল্প 2 :
Continue writing to your existing table. You'll override some defaults in a BigQuery config to achieve this.In the Firebase console, find and take note of the Firebase App ID (for example,
1:1234567890:ios:321abc456def7890
) of the app with the mismatched batch table name and identifier:
Go to your Project settings , then scroll to the Your apps card to see all your Firebase Apps and their information.In the Firebase console, upgrade to the new export infrastructure by turning export off and then on again for the linked app.
This action does two things:
Creates a new batch table with a name that's based on the bundle ID or package name set for your registered Firebase App in your Firebase project . (You'll eventually delete this table, but do not delete it yet.)
Creates a BigQuery "data transfer config" with the source
Firebase Crashlytics with Multi-Region Support
.
In the Google Cloud console, change the new "data transfer config" so that data will continue to write to your existing table:
Go to BigQuery > Data transfers to view your "data transfer config".
Select the config that has the source
Firebase Crashlytics with Multi-Region Support
.Click Edit in the top-right corner.
In the Data source details section, find a list for gmp_app_id and a list for client_namespace .
In BigQuery , the Firebase App ID is called the
gmp_app_id
. By default, theclient_namespace
value in BigQuery is the corresponding unique bundle ID / package name of the app, but you'll be overriding this default configuration.BigQuery uses the
client_namespace
value for the name of the batch table that each linked Firebase App writes to.Find the gmp_app_id of the Firebase App for which you want to override default settings. Change its client_namespace value to the name of the table you want the Firebase App to write to instead (usually this is the name of the legacy table the app was writing to with the legacy export infrastructure).
Save the config change.
Schedule a backfill for the days that your existing table is missing data.
Once the backfill is done, delete the new table that was automatically created by the new export infrastructure.