আরও বিশ্লেষণের জন্য আপনি অ্যাপল এবং অ্যান্ড্রয়েড অ্যাপ থেকে Performance Monitoring ডেটা BigQuery তে এক্সপোর্ট করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য কোনো ক্লাউড প্রোভাইডারে এক্সপোর্ট করতে এবং এমনকি আপনার নিজস্ব ML মডেলের জন্যও সেই ডেটা ব্যবহার করার সুযোগ দেয়।
BigQuery এক্সপোর্ট সক্ষম করুন
Firebase কনসোলের Integrations পৃষ্ঠায় যান, তারপর BigQuery কার্ডে থাকা Link- এ ক্লিক করুন।
BigQuery সক্রিয় করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
আপনি যখন Performance Monitoring জন্য BigQuery এক্সপোর্ট সক্রিয় করেন, তখন নিম্নলিখিত ঘটনা ঘটে:
Firebase আপনার বিদ্যমান ডেটার একটি অনুলিপি BigQuery তে রপ্তানি করে। রপ্তানির জন্য ডেটার প্রাথমিক প্রসারণ সম্পূর্ণ হতে ৪৮ ঘণ্টা পর্যন্ত সময় লাগতে পারে।
- আপনি ম্যানুয়ালি বিগত ৩০ দিন পর্যন্ত অথবা BigQuery এক্সপোর্ট চালু করার সর্বশেষ তারিখ পর্যন্ত (দুটির মধ্যে যেটি সর্বশেষ) ডেটা ব্যাকফিল করার সময়সূচী নির্ধারণ করতে পারেন।
ডেটাসেট তৈরি করার পরে এর অবস্থান পরিবর্তন করা যায় না, তবে আপনি ডেটাসেটটি অন্য কোনো স্থানে কপি করতে পারেন অথবা ম্যানুয়ালি অন্য কোনো স্থানে সরিয়ে (পুনরায় তৈরি) করতে পারেন। আরও জানতে, ডেটাসেটের অবস্থান পরিবর্তন দেখুন।
Firebase আপনার Firebase প্রজেক্ট থেকে BigQuery তে নিয়মিত ডেটা সিঙ্ক করার ব্যবস্থা করে। এই দৈনিক এক্সপোর্ট অপারেশনগুলো সাধারণত নির্ধারিত হওয়ার ২৪ ঘণ্টার মধ্যে শেষ হয়ে যায়।
ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ BigQuery এর সাথে লিঙ্ক করা থাকে। আপনি পরবর্তীতে প্রোজেক্টে যে অ্যাপগুলো যোগ করবেন, সেগুলোও স্বয়ংক্রিয়ভাবে BigQuery এর সাথে লিঙ্ক হয়ে যাবে। কোন কোন অ্যাপ ডেটা পাঠাবে, তা আপনি নিয়ন্ত্রণ করতে পারেন।
BigQuery এক্সপোর্ট নিষ্ক্রিয় করতে, Firebase কনসোলে আপনার প্রজেক্টটি আনলিঙ্ক করুন ।
BigQuery তে কোন ডেটা এক্সপোর্ট করা হয়?
প্রজেক্টের প্রতিটি অ্যাপের জন্য, এক্সপোর্টটি একটি টেবিল তৈরি করে যাতে ক্যাপচার করা সমস্ত পারফরম্যান্স ইভেন্ট অন্তর্ভুক্ত থাকে। টেবিলের প্রতিটি সারি হলো একটি একক পারফরম্যান্স ইভেন্ট যা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:
ডিউরেশন ট্রেস — যে ট্রেসগুলো ডিফল্টরূপে 'ডিউরেশন' মেট্রিকটি সংগ্রহ করে, যার মধ্যে অ্যাপ স্টার্ট, অ্যাপ-ইন-ফোরগ্রাউন্ড, এবং অ্যাপ-ইন-ব্যাকগ্রাউন্ড অন্তর্ভুক্ত, সেইসাথে ডেভেলপার দ্বারা ইনস্ট্রুমেন্টেড যেকোনো কাস্টম কোড ট্রেসও রয়েছে।
-
event_typeহলDURATION_TRACE -
event_nameট্রেসের নামের সমান।
-
ট্রেস মেট্রিক — ডেভেলপার-পরিচালিত কাস্টম কোড ট্রেসের সাথে সংশ্লিষ্ট কাস্টম মেট্রিকসমূহ
-
event_typeহলTRACE_METRIC -
event_nameহলো মেট্রিকের নাম -
parent_trace_nameহলো সেই ট্রেসের নাম যাতে এই মেট্রিকটি রয়েছে।
-
স্ক্রিন ট্রেস — একটি স্ক্রিনের জীবনকাল জুড়ে থাকা চিহ্নসমূহ (স্ক্রিন রেন্ডারিং ট্রেস)
-
event_typeহলSCREEN_TRACE -
event_nameহলো_st_প্রিফিক্স এবং প্রকৃত স্ক্রিন নামের যোগফল।
-
নেটওয়ার্ক অনুরোধ — একটি নেটওয়ার্ক অনুরোধের জীবনকাল জুড়ে থাকা ট্রেস (HTTP নেটওয়ার্ক অনুরোধ ট্রেস)
-
event_typeহলোNETWORK_REQUEST -
event_nameহলো নেটওয়ার্ক অনুরোধ URL-এর শ্রেণীবদ্ধ প্যাটার্ন।
-
প্রতিটি পারফরম্যান্স ইভেন্টে ইভেন্টের বৈশিষ্ট্য (যেমন ক্লায়েন্ট ডিভাইসের দেশ এবং ক্যারিয়ার) এবং ইভেন্ট-নির্দিষ্ট তথ্য অন্তর্ভুক্ত থাকে:
- সময়কাল ট্রেস, ট্রেস মেট্রিক্স এবং স্ক্রিন ট্রেসে
trace_infoথাকে। - ট্রেস মেট্রিক্সে
trace_info.metric_infoথাকে। - স্ক্রিন ট্রেসে
trace_info.screen_infoথাকে। - নেটওয়ার্ক ট্রেসে
network_infoথাকে
বিস্তারিত ডেটা স্কিমা
| ক্ষেত্রের নাম | প্রকার | বর্ণনা |
|---|---|---|
| ইভেন্টের সময়স্ট্যাম্প | টাইমস্ট্যাম্প | ক্লায়েন্ট ডিভাইসে ইভেন্ট শুরু হওয়ার সময়কার (ট্রেস শুরু, নেটওয়ার্ক শুরু, ইত্যাদি) ইপক থেকে টাইমস্ট্যাম্প। |
| অ্যাপ_ডিসপ্লে_সংস্করণ | স্ট্রিং | অ্যাপ্লিকেশনটির সংস্করণ প্রদর্শন করুন (উদাহরণস্বরূপ, "4.1.7")
|
| অ্যাপ_বিল্ড_সংস্করণ | স্ট্রিং | অ্যাপ্লিকেশনটির বিল্ড সংস্করণ (উদাহরণস্বরূপ, "1523456")
|
| ওএস_সংস্করণ | স্ট্রিং | ক্লায়েন্ট ডিভাইসের ওএস সংস্করণ
|
| ডিভাইসের নাম | স্ট্রিং | ক্লায়েন্ট ডিভাইসের নাম (উদাহরণস্বরূপ, "গুগল পিক্সেল") |
| দেশ | স্ট্রিং | যে দেশে ঘটনাটি ঘটেছে, সেই দেশের দুই অক্ষরের কোড (উদাহরণস্বরূপ, "US", অথবা অজানা দেশের জন্য "ZZ")। |
| বাহক | স্ট্রিং | ক্লায়েন্ট ডিভাইসের বাহক |
| রেডিও_টাইপ | স্ট্রিং | ইভেন্টটি ঘটার সময় সক্রিয় রেডিও টাইপ (উদাহরণস্বরূপ, "ওয়াইফাই") |
| কাস্টম_অ্যাট্রিবিউটস | অ্যারে<রেকর্ড> | এই ইভেন্টের সাথে সংযুক্ত সমস্ত কাস্টম অ্যাট্রিবিউট |
| কাস্টম_অ্যাট্রিবিউটস.কী | স্ট্রিং | কাস্টম অ্যাট্রিবিউটের চাবি |
| কাস্টম_অ্যাট্রিবিউটস.ভ্যালু | স্ট্রিং | কাস্টম অ্যাট্রিবিউটের মান |
| ইভেন্টের ধরণ | স্ট্রিং | ঘটনার ধরণ; সম্ভাব্য মানসমূহ:
|
| ইভেন্টের নাম | স্ট্রিং | অনুষ্ঠানের নাম
|
| প্যারেন্ট_ট্রেস_নাম | স্ট্রিং | মূল ট্রেসের নাম যা ট্রেস মেট্রিক বহন করে শুধুমাত্র TRACE_METRIC জন্য উপস্থিত |
| ট্রেস_ইনফো | রেকর্ড | শুধুমাত্র DURATION_TRACE , SCREEN_TRACE এবং TRACE_METRIC জন্য উপস্থিত। |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | রেকর্ড | শুধুমাত্র SCREEN_TRACE জন্য উপস্থিত |
| trace_info.screen_info.slow_frame_ratio | ফ্লোট৬৪ | এই স্ক্রিন ট্রেসের জন্য ধীরগতির ফ্রেমের অনুপাত, যার মান ০ থেকে ১-এর মধ্যে (উদাহরণস্বরূপ, ০.০৫ মানের অর্থ হলো এই স্ক্রিন ইনস্ট্যান্সের ৫% ফ্রেম রেন্ডার হতে ১৬ মিলিসেকেন্ডের বেশি সময় নিয়েছে)। |
| trace_info.screen_info.frozen_frame_ratio | ফ্লোট৬৪ | এই স্ক্রিন ট্রেসের জন্য স্থির হয়ে থাকা ফ্রেমের অনুপাত, যার মান ০ থেকে ১-এর মধ্যে (উদাহরণস্বরূপ, ০.০৫ মানের অর্থ হলো এই স্ক্রিন ইনস্ট্যান্সের ৫% ফ্রেম রেন্ডার হতে ৭০০ মিলিসেকেন্ডের বেশি সময় নিয়েছে)। |
| ট্রেস_ইনফো.মেট্রিক_ইনফো | রেকর্ড | শুধুমাত্র TRACE_METRIC জন্য উপস্থিত |
| ট্রেস_ইনফো.মেট্রিক_ইনফো.মেট্রিক_ভ্যালু | int64 | ট্রেস মেট্রিকের মান |
| নেটওয়ার্ক_তথ্য | রেকর্ড | শুধুমাত্র NETWORK_REQUEST এর জন্য উপস্থিত |
| নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_কোড | int64 | নেটওয়ার্ক প্রতিক্রিয়ার জন্য HTTP প্রতিক্রিয়া কোড (উদাহরণস্বরূপ, 200, 404) |
| নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_মাইম_টাইপ | স্ট্রিং | নেটওয়ার্ক প্রতিক্রিয়ার MIME টাইপ (উদাহরণস্বরূপ, "text/html") |
| নেটওয়ার্ক_ইনফো.রিকোয়েস্ট_এইচটিটিপি_মেথড | স্ট্রিং | নেটওয়ার্ক অনুরোধের HTTP পদ্ধতি (উদাহরণস্বরূপ, "GET" বা "POST") |
| নেটওয়ার্ক_তথ্য.অনুরোধ_পেলোড_বাইট | int64 | নেটওয়ার্ক অনুরোধ পেলোডের আকার একক: বাইট |
| নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_পেলোড_বাইট | int64 | নেটওয়ার্ক প্রতিক্রিয়া পেলোডের আকার একক: বাইট |
| network_info.request_completed_time_us | int64 | event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক অনুরোধ পাঠানো সম্পূর্ণ হয়একক: মাইক্রোসেকেন্ড |
| নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_শুরু_করার_সময়_ইউএস | int64 | event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক প্রতিক্রিয়া শুরু হয়একক: মাইক্রোসেকেন্ড |
| network_info.response_completed_time_us | int64 | event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক প্রতিক্রিয়া সম্পন্ন হয়একক: মাইক্রোসেকেন্ড |
রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?
নিম্নলিখিত বিভাগগুলিতে এমন কিছু কোয়েরির উদাহরণ দেওয়া হয়েছে যা আপনি আপনার এক্সপোর্ট করা Performance Monitoring ডেটার উপর BigQuery তে চালাতে পারেন।
কনসোলে প্রদর্শিত ডেটার সাথে মেলান।
ফায়ারবেস ড্যাশবোর্ড দৈনিক ডেটা 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;
বিভিন্ন অবস্থার সাপেক্ষে স্থির ফ্রেমের অনুপাত যাচাই করুন।
উদাহরণস্বরূপ, আপনি বিভিন্ন রেডিও টাইপে (ওয়াইফাই, ৪জি, ইত্যাদি) থাকাকালীন ব্যবহারকারীরা আপনার অ্যাপের প্রতিটি স্ক্রিনে কতক্ষণ সময় ব্যয় করছেন, তার পাশাপাশি ফ্রোজেন ফ্রেমের অনুপাতও পরীক্ষা করতে পারেন।
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 extractচালানো হচ্ছেএপিআই বা ক্লায়েন্ট লাইব্রেরির মাধ্যমে একটি এক্সট্র্যাক্ট জব জমা দেওয়া।
মূল্য নির্ধারণ
Performance Monitoring থেকে ডেটা এক্সপোর্ট করার জন্য কোনো চার্জ নেই এবং BigQuery বিনামূল্যে ব্যবহারের জন্য যথেষ্ট সীমা প্রদান করে। বিস্তারিত তথ্যের জন্য, BigQuery প্রাইসিং অথবা BigQuery স্যান্ডবক্স দেখুন।