আপনি Apple ও Android অ্যাপ থেকে Performance Monitoring ডেটা BigQuery-এ এক্সপোর্ট করতে পারবেন, যাতে আরও বিশ্লেষণ করা যায়। BigQuery আপনাকে SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড পরিষেবা প্রদানকারীর কাছে এক্সপোর্ট করতে এবং এমনকি আপনার কাস্টম ML মডেলের জন্য ডেটা ব্যবহার করতে দেয়।BigQuery
BigQuery এক্সপোর্ট চালু করুন
Firebase কনসোলের ইন্টিগ্রেশন পৃষ্ঠায় যান, তারপর BigQuery কার্ডে লিঙ্ক করুন বিকল্পে ক্লিক করুন।
BigQuery চালু করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।
Performance Monitoring-এর জন্য BigQuery এক্সপোর্ট চালু করলে, নিম্নলিখিত ঘটনা ঘটে:
Firebase আপনার আগে থেকে থাকা ডেটার একটি কপি BigQuery-এ এক্সপোর্ট করে। এক্সপোর্ট করার জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে ৪৮ ঘণ্টা পর্যন্ত সময় লাগতে পারে।
- আপনি ম্যানুয়ালি ডেটা ব্যাকফিল শিডিউল করতে পারবেন, যা গত ৩০ দিন পর্যন্ত বা আপনি যখন BigQuery এক্সপোর্ট চালু করেছেন সেই সাম্প্রতিকতম তারিখ পর্যন্ত (যেটি সবচেয়ে সাম্প্রতিক) হতে পারে।
ডেটাসেট তৈরি করার পরে, লোকেশন পরিবর্তন করা যাবে না, তবে আপনি অন্য লোকেশনে ডেটাসেট কপি করতে অথবা অন্য লোকেশনে ম্যানুয়ালি ডেটাসেট সরাতে (আবার তৈরি করতে) পারবেন। আরও জানতে, ডেটাসেটের লোকেশন পরিবর্তন করুন বিকল্প দেখুন।
Firebase আপনার Firebase প্রোজেক্ট থেকে BigQuery-এ আপনার ডেটার নিয়মিত সিঙ্ক সেট-আপ করে। এইসব দৈনিক এক্সপোর্ট অপারেশন সাধারণত শিডিউল করার ২৪ ঘণ্টার মধ্যে শেষ হয়ে যায়।
ডিফল্ট হিসেবে, আপনার প্রোজেক্টের সব অ্যাপ BigQuery-এর সাথে লিঙ্ক করা থাকে। আপনি পরে প্রোজেক্টে যেসব অ্যাপ যোগ করবেন, সেগুলি অটোমেটিক BigQuery-এর সাথে লিঙ্ক হয়ে যাবে। আপনি কোন অ্যাপ ডেটা পাঠাবে তা ম্যানেজ করতে পারবেন।
BigQuery এক্সপোর্ট ডিঅ্যাক্টিভেট করতে, Firebase কনসোলে আপনার প্রোজেক্ট আনলিঙ্ক করুন।
BigQuery-এ কোন ডেটা এক্সপোর্ট করা হয়?
প্রোজেক্টের প্রতিটি অ্যাপের জন্য, এক্সপোর্ট একটি টেবিল তৈরি করে যাতে ক্যাপচার করা সমস্ত পারফর্ম্যান্স ইভেন্ট অন্তর্ভুক্ত থাকে। টেবিলের প্রতিটি সারি হল একটি পারফর্ম্যান্স ইভেন্ট যা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
সময়কাল ট্রেস — ডিফল্ট হিসেবে, "সময়কাল" মেট্রিক সংগ্রহ করে এমন ট্রেস, যার মধ্যে অ্যাপ শুরু, অ্যাপ-ইন-ফোরগ্রাউন্ড এবং অ্যাপ-ইন-ব্যাকগ্রাউন্ড, সেইসাথে যেকোনও ডেভেলপার-ইনস্ট্রুমেন্টেড কাস্টম কোড ট্রেস অন্তর্ভুক্ত থাকে
event_typeহলDURATION_TRACEevent_nameট্রেসের নামের মতোই
ট্রেস মেট্রিক — কাস্টম মেট্রিক যা ডেভেলপার-ইনস্ট্রুমেন্টেড কাস্টম কোড ট্রেসের সাথে যুক্ত থাকে
event_typeহলTRACE_METRICevent_nameহল মেট্রিকের নামparent_trace_nameহল ট্রেসের নাম যাতে এই মেট্রিক আছে
স্ক্রিন ট্রেস — স্ক্রিনের লাইফটাইম জুড়ে ট্রেস (স্ক্রিন রেন্ডারিং ট্রেস)
event_typeহলSCREEN_TRACEevent_nameহল প্রিফিক্স_st_এবং আসল স্ক্রিনের নাম
নেটওয়ার্ক রিকোয়েস্ট — নেটওয়ার্ক রিকোয়েস্টের লাইফটাইম জুড়ে ট্রেস (HTTP নেটওয়ার্ক রিকোয়েস্ট ট্রেস)
event_typeহলNETWORK_REQUESTevent_nameহল নেটওয়ার্ক অনুরোধ URL-এর ক্যাটেগরি অনুযায়ী প্যাটার্ন
প্রতিটি পারফর্ম্যান্স ইভেন্টে ইভেন্টের অ্যাট্রিবিউট (যেমন ক্লায়েন্ট ডিভাইসের দেশ ও পরিষেবা প্রদানকারী) এবং ইভেন্ট-নির্দিষ্ট তথ্য থাকে:
- সময়সীমা ট্রেস, ট্রেস মেট্রিক ও স্ক্রিন ট্রেসে
trace_infoথাকে - ট্রেস মেট্রিক্সে
trace_info.metric_infoআছে - স্ক্রিন ট্রেসে
trace_info.screen_infoআছে - নেটওয়ার্ক ট্রেসে
network_infoআছে
বিস্তারিত ডেটা স্কিমা
| ফিল্ডের নাম | Type | বিবরণ |
|---|---|---|
| event_timestamp | টাইমস্ট্যাম্প | ক্লায়েন্ট ডিভাইসে ইভেন্ট শুরু হওয়ার সময় থেকে Epoch-এর টাইমস্ট্যাম্প (ট্রেস শুরু, নেটওয়ার্ক শুরু ইত্যাদি) |
| app_display_version | স্ট্রিং | অ্যাপ্লিকেশনের ডিসপ্লে ভার্সন (যেমন, "4.1.7")
|
| app_build_version | স্ট্রিং | অ্যাপ্লিকেশনের বিল্ড ভার্সন (যেমন, "১৫২৩৪৫৬")
|
| os_version | স্ট্রিং | ক্লায়েন্ট ডিভাইসের OS ভার্সন
|
| device_name | স্ট্রিং | ক্লায়েন্ট ডিভাইসের নাম (যেমন, "Google Pixel") |
| দেশ | স্ট্রিং | যে দেশে ইভেন্টটি ঘটেছে সেই দেশের দুই-অক্ষরের কোড (যেমন, "US" বা অজানা দেশের জন্য "ZZ") |
| পরিষেবা প্রদানকারী | স্ট্রিং | ক্লায়েন্ট ডিভাইসের ক্যারিয়ার |
| radio_type | স্ট্রিং | ইভেন্টটি ঘটার সময় অ্যাক্টিভ রেডিওর ধরন (যেমন, "WIFI") |
| custom_attributes | ARRAY<RECORD> | এই ইভেন্টের সাথে অ্যাটাচ করা সব কাস্টম অ্যাট্রিবিউট |
| custom_attributes.key | স্ট্রিং | কাস্টম অ্যাট্রিবিউটের কী |
| custom_attributes.value | স্ট্রিং | কাস্টম অ্যাট্রিবিউটের ভ্যালু |
| event_type | স্ট্রিং | ইভেন্টের ধরন; সম্ভাব্য ভ্যালু:
|
| event_name | স্ট্রিং | ইভেন্টের নাম
|
| parent_trace_name | স্ট্রিং | ট্রেস মেট্রিক বহনকারী পেরেন্ট ট্রেসের নাম শুধুমাত্র TRACE_METRIC-এর জন্য উপলভ্য |
| trace_info | রেকর্ড | শুধুমাত্র DURATION_TRACE,
SCREEN_TRACE ও TRACE_METRIC-এর জন্য উপলভ্য |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | রেকর্ড | শুধুমাত্র SCREEN_TRACE-এর জন্য উপলভ্য |
| trace_info.screen_info.slow_frame_ratio | float64 | এই স্ক্রিন ট্রেসের জন্য স্লো ফ্রেমের অনুপাত, ০ থেকে ১-এর মধ্যে (যেমন, ০.০৫ মানের অর্থ হল এই স্ক্রিন ইনস্ট্যান্সের জন্য ৫% ফ্রেম রেন্ডার করতে ১৬ মিলিসেকেন্ডের বেশি সময় লেগেছে) |
| trace_info.screen_info.frozen_frame_ratio | float64 | এই স্ক্রিন ট্রেসের জন্য ফ্রোজেন ফ্রেমের অনুপাত, ০ থেকে ১-এর মধ্যে (যেমন, ০.০৫ মানের অর্থ হল এই স্ক্রিন ইনস্ট্যান্সের জন্য ৫% ফ্রেম রেন্ডার করতে ৭০০ মিলিসেকেন্ডের বেশি সময় লেগেছে) |
| trace_info.metric_info | রেকর্ড | শুধুমাত্র TRACE_METRIC-এর জন্য উপলভ্য |
| trace_info.metric_info.metric_value | int64 | ট্রেস মেট্রিকের ভ্যালু |
| network_info | রেকর্ড | শুধুমাত্র NETWORK_REQUEST-এর জন্য উপলভ্য |
| network_info.response_code | int64 | নেটওয়ার্ক রেসপন্সের জন্য HTTP রেসপন্স কোড (যেমন, ২০০, ৪০৪) |
| network_info.response_mime_type | স্ট্রিং | নেটওয়ার্ক রেসপন্সের MIME-এর ধরন (যেমন, "text/html") |
| network_info.request_http_method | স্ট্রিং | নেটওয়ার্ক অনুরোধের HTTP পদ্ধতি (যেমন, "GET" বা "POST") |
| network_info.request_payload_bytes | int64 | নেটওয়ার্ক রিকোয়েস্ট পেলোডের সাইজ ইউনিট: বাইট |
| network_info.response_payload_bytes | int64 | নেটওয়ার্ক রেসপন্স পেলোডের সাইজ ইউনিট: বাইট |
| network_info.request_completed_time_us | int64 | event_timestamp-এর পরে মাইক্রোসেকেন্ড যখন নেটওয়ার্ক অনুরোধ
পাঠানো সম্পূর্ণ হয়ইউনিট: মাইক্রোসেকেন্ড |
| network_info.response_initiated_time_us | int64 | event_timestamp-এর পরে মাইক্রোসেকেন্ড যখন নেটওয়ার্ক রেসপন্স
শুরু হয়ইউনিট: মাইক্রোসেকেন্ড |
| network_info.response_completed_time_us | int64 | event_timestamp-এর পরে মাইক্রোসেকেন্ড যখন নেটওয়ার্ক রেসপন্স
সম্পূর্ণ হয়ইউনিট: মাইক্রোসেকেন্ড |
এক্সপোর্ট করা ডেটা দিয়ে আপনি কী করতে পারবেন?
নিম্নলিখিত বিভাগে এমন কোয়েরির উদাহরণ দেওয়া হয়েছে যা আপনি BigQuery-এ আপনার এক্সপোর্ট করা Performance Monitoring ডেটার উপর চালাতে পারবেন।
কনসোলে দেখা ডেটার সাথে মিলিয়ে নিন
Firebase ড্যাশবোর্ড America/Los_Angeles টাইমজোনে দৈনিক ডেটা এগ্রিগেট করে।
কনসোলে যা দেখা গেছে তার সাথে ম্যাচ করতে, তারিখ ফাংশন স্পষ্টভাবে টাইমজোন হিসেবে
America/Los_Angeles সেট করা উচিত, অন্যথায় তারিখ ফাংশন
ডিফল্ট হিসেবে UTC ব্যবহার করবে।
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
দেশ অনুযায়ী অ্যাপ চালু হওয়ার গড় লেটেন্সি ব্রেক-ডাউন দেখুন
SELECT AVG(trace_info.duration_us), country FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "DURATION_TRACE" AND event_name = "_app_start" GROUP BY 2;
বিভিন্ন পরিস্থিতির সাপেক্ষে ফ্রোজেন ফ্রেমের অনুপাত চেক করুন
যেমন, বিভিন্ন রেডিও টাইপ (ওয়াই-ফাই, 4G ইত্যাদি) ব্যবহার করার সময় আপনার অ্যাপের প্রতিটি স্ক্রিনে ব্যবহারকারীরা কতটা সময় কাটান তার পাশাপাশি ফ্রোজেন ফ্রেমের অনুপাতও আপনি চেক করতে পারবেন।
SELECT AVG(trace_info.duration_us / 1000000) AS seconds_on_screen, AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio, event_name, radio_type FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "SCREEN_TRACE" GROUP BY event_name, radio_type ORDER BY event_name, radio_type;
ডিস্ক থেকে নির্দিষ্ট ধরনের ফাইল লোড করার জন্য ক্যাশে হিট রেট গণনা করুন
এই বিশ্লেষণ ধরে নেয় যে আপনি ডিস্ক থেকে লোড করার জন্য একটি কাস্টম কোড ট্রেস ইন্সট্রুমেন্ট করেছেন, যার মধ্যে file-extension নামের একটি কাস্টম অ্যাট্রিবিউট এবং cache-hit নামের একটি কাস্টম মেট্রিক (একটি TRACE_METRIC) রয়েছে। এই মেট্রিকটি ক্যাশে হিট হলে 1 এবং ক্যাশে মিস হলে 0-এ সেট করা হয়।
যেমন, ডিস্ক থেকে PNG ফাইল লোড করার জন্য আপনি ক্যাশে হিট রেট গণনা করতে পারেন:
SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "TRACE_METRIC" AND event_name = "cache-hit" AND parent_trace_name = "loadFromDisk" AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);
ব্যবহারকারীরা দিনের কোন সময়ে নেটওয়ার্ক রিকোয়েস্ট করেন তা চেক করুন
যেমন, মার্কিন যুক্তরাষ্ট্রের ব্যবহারকারীরা দিনের কোন সময়ে আপনার অ্যাপ থেকে নেটওয়ার্ক রিকোয়েস্ট ইস্যু করেন তা আপনি চেক করতে পারবেন:
SELECT count(1) AS hourly_count, EXTRACT(HOUR FROM event_timestamp) AS hour_of_day FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "NETWORK_REQUEST" AND country = "US" GROUP BY 2 ORDER BY 2;
আপনার Performance Monitoring ডেটা যেকোনও জায়গায় নিয়ে যান
কখনও কখনও আপনি সার্ভার-সাইডে আপনার Performance Monitoring ডেটা অ্যাক্সেস করতে চান বা অন্য কোনও থার্ড-পার্টি সমাধানে এটি পুশ করতে চান। ডেটা এক্সপোর্ট করার জন্য বর্তমানে কোনও চার্জ নেওয়া হয় না।
আপনি এইভাবে ডেটা এক্সপোর্ট করতে পারবেন:
BigQuery ওয়েব UI ব্যবহার করা
CLI কমান্ড রান করা
bq extractAPI বা ক্লায়েন্ট লাইব্রেরির মাধ্যমে এক্সট্র্যাক্ট জব জমা দেওয়া।
মূল্য
Performance Monitoring থেকে ডেটা এক্সপোর্ট করার জন্য কোনও চার্জ লাগে না এবং BigQuery কোনও খরচ ছাড়াই ব্যবহারের জন্য যথেষ্ট সীমা প্রদান করে। বিস্তারিত তথ্যের জন্য, BigQuery-এর দাম অথবা BigQuery স্যান্ডবক্স দেখুন।