BigQuery-এ পারফরম্যান্স মনিটরিং ডেটা এক্সপোর্ট করুন

আরও বিশ্লেষণের জন্য আপনি অ্যাপল এবং অ্যান্ড্রয়েড অ্যাপ থেকে Performance Monitoring ডেটা BigQuery তে রপ্তানি করতে পারেন। BigQuery আপনাকে BigQuery SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড প্রদানকারীতে রপ্তানি করতে এবং এমনকি আপনার কাস্টম ML মডেলের জন্য ডেটা ব্যবহার করতে দেয়।

BigQuery এক্সপোর্ট সক্ষম করুন

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

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

    যখন আপনি Performance Monitoring জন্য BigQuery এক্সপোর্ট সক্ষম করেন, তখন নিম্নলিখিতগুলি ঘটে:

    • Firebase আপনার বিদ্যমান ডেটার একটি কপি BigQuery তে রপ্তানি করে। রপ্তানির জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে ৪৮ ঘন্টা পর্যন্ত সময় লাগতে পারে।

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

    • Firebase আপনার Firebase প্রকল্প থেকে BigQuery তে আপনার ডেটার নিয়মিত সিঙ্ক সেট আপ করে। এই দৈনিক এক্সপোর্ট অপারেশনগুলি সাধারণত নির্ধারিত হওয়ার 24 ঘন্টা পরে শেষ হয়।

    • ডিফল্টরূপে, আপনার প্রোজেক্টের সমস্ত অ্যাপ 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")
  • অ্যান্ড্রয়েডের জন্য — VersionName
  • iOS এর জন্য — CFBundleShortVersionString
অ্যাপ_বিল্ড_সংস্করণ স্ট্রিং অ্যাপ্লিকেশনটির বিল্ড সংস্করণ (উদাহরণস্বরূপ, "1523456")
  • অ্যান্ড্রয়েডের জন্য — VersionCode
  • iOS এর জন্য — CFBundleVersion
ওএস_ভার্সন স্ট্রিং ক্লায়েন্ট ডিভাইসের OS সংস্করণ
  • অ্যান্ড্রয়েডের জন্য — অ্যান্ড্রয়েড এপিআই লেভেল (উদাহরণস্বরূপ "২৬")
  • iOS এর জন্য — iOS সংস্করণ (উদাহরণস্বরূপ "11.4")
ডিভাইসের নাম স্ট্রিং ক্লায়েন্ট ডিভাইসের নাম (যেমন, "গুগল পিক্সেল")
দেশ স্ট্রিং যে দেশ থেকে ঘটনাটি ঘটেছে সেই দেশের দুই অক্ষরের দেশের কোড (উদাহরণস্বরূপ, "US", অথবা অজানা দেশের জন্য "ZZ")
বাহক স্ট্রিং ক্লায়েন্ট ডিভাইসের বাহক
রেডিও_টাইপ স্ট্রিং ইভেন্টটি সংঘটিত হওয়ার সময় সক্রিয় রেডিও টাইপ (উদাহরণস্বরূপ, "WIFI")
কাস্টম_অ্যাট্রিবিউটস অ্যারে<রেকর্ড> এই ইভেন্টের সাথে সংযুক্ত সমস্ত কাস্টম বৈশিষ্ট্য
কাস্টম_অ্যাট্রিবিউটস.কি স্ট্রিং কাস্টম অ্যাট্রিবিউটের কী
কাস্টম_অ্যাট্রিবিউটস.মান স্ট্রিং কাস্টম অ্যাট্রিবিউটের মান
ইভেন্ট_টাইপ স্ট্রিং ইভেন্টের ধরণ; সম্ভাব্য মান:
  • DURATION_TRACE — ট্রেস যা ডিফল্টরূপে "সময়কাল" এর মেট্রিক সংগ্রহ করে, যার মধ্যে রয়েছে অ্যাপ স্টার্ট, অ্যাপ-ইন-ফোরগ্রাউন্ড এবং অ্যাপ-ইন-ব্যাকগ্রাউন্ড, সেইসাথে যেকোনো ডেভেলপার-ইনস্ট্রুমেন্টেড কাস্টম কোড ট্রেস।
  • SCREEN_TRACE — একটি স্ক্রিনের জীবনকাল জুড়ে বিস্তৃত ট্রেস (স্ক্রিন রেন্ডারিং ট্রেস)
  • TRACE_METRIC — কাস্টম মেট্রিক্স যা ডেভেলপার-ইনস্ট্রুমেন্টেড কাস্টম কোড ট্রেসের সাথে সম্পর্কিত
  • NETWORK_REQUEST — একটি নেটওয়ার্ক অনুরোধের জীবনকাল জুড়ে ট্রেস (HTTP নেটওয়ার্ক অনুরোধ ট্রেস)
ইভেন্ট_নাম স্ট্রিং অনুষ্ঠানের নাম
  • DURATION_TRACE এর জন্য — ট্রেস নাম
  • TRACE_METRIC এর জন্য — কাস্টম মেট্রিক নাম
  • SCREEN_TRACE এর জন্য — _st_ এর পরে ট্রেস নাম
  • NETWORK_REQUEST — নেটওয়ার্ক অনুরোধ URL প্যাটার্নের জন্য
প্যারেন্ট_ট্রেস_নাম স্ট্রিং ট্রেস মেট্রিক বহনকারী প্যারেন্ট ট্রেসের নাম
শুধুমাত্র TRACE_METRIC এর জন্য উপস্থিত
ট্রেস_ইনফো রেকর্ড শুধুমাত্র DURATION_TRACE , SCREEN_TRACE , এবং TRACE_METRIC এর জন্য উপলব্ধ
ট্রেস_ইনফো.ড্যুরেশন_আমাদের int64 সম্পর্কে
  • DURATION_TRACE এবং SCREEN_TRACE এর জন্য — ট্রেসের শুরু থেকে শেষ পর্যন্ত সময়ের দৈর্ঘ্য ("সময়কাল")
  • TRACE_METRIC এর জন্য — প্যারেন্ট ট্রেসের শুরু থেকে শেষ পর্যন্ত সময়ের দৈর্ঘ্য ("সময়কাল")
একক: মাইক্রোসেকেন্ড
ট্রেস_ইনফো.স্ক্রিন_ইনফো রেকর্ড শুধুমাত্র SCREEN_TRACE এর জন্য উপস্থিত
ট্রেস_ইনফো.স্ক্রিন_ইনফো.স্লো_ফ্রেম_রেশিও float64 সম্পর্কে এই স্ক্রিন ট্রেসের জন্য ধীর ফ্রেমের অনুপাত 0 এবং 1 এর মধ্যে (উদাহরণস্বরূপ, 0.05 এর মান মানে এই স্ক্রিন ইনস্ট্যান্সের জন্য 5% ফ্রেম রেন্ডার করতে 16 মিলিসেকেন্ডের বেশি সময় নিয়েছে)
ট্রেস_ইনফো.স্ক্রিন_ইনফো.ফ্রোজেন_ফ্রেম_রেশিও float64 সম্পর্কে এই স্ক্রিন ট্রেসের জন্য হিমায়িত ফ্রেমের অনুপাত, 0 এবং 1 এর মধ্যে (উদাহরণস্বরূপ, 0.05 এর মান মানে এই স্ক্রিন ইনস্ট্যান্সের জন্য 5% ফ্রেম রেন্ডার করতে 700 মিলিসেকেন্ডের বেশি সময় নিয়েছে)
ট্রেস_ইনফো.মেট্রিক_ইনফো রেকর্ড শুধুমাত্র TRACE_METRIC এর জন্য উপস্থিত
ট্রেস_ইনফো.মেট্রিক_ইনফো.মেট্রিক_মান int64 সম্পর্কে ট্রেস মেট্রিকের মান
নেটওয়ার্ক_তথ্য রেকর্ড শুধুমাত্র NETWORK_REQUEST এর জন্য উপস্থিত
নেটওয়ার্ক_ইনফো.রেসপন্স_কোড int64 সম্পর্কে নেটওয়ার্ক প্রতিক্রিয়ার জন্য HTTP প্রতিক্রিয়া কোড (উদাহরণস্বরূপ, 200, 404)
নেটওয়ার্ক_ইনফো.রেসপন্স_মাইম_টাইপ স্ট্রিং নেটওয়ার্ক প্রতিক্রিয়ার MIME প্রকার (উদাহরণস্বরূপ, "text/html")
নেটওয়ার্ক_তথ্য.অনুরোধ_http_পদ্ধতি স্ট্রিং নেটওয়ার্ক অনুরোধের HTTP পদ্ধতি (উদাহরণস্বরূপ, "GET" বা "POST")
নেটওয়ার্ক_তথ্য.অনুরোধ_পেলোড_বাইটস int64 সম্পর্কে নেটওয়ার্ক অনুরোধ পেলোডের আকার
ইউনিট: বাইট
নেটওয়ার্ক_ইনফো.রেসপন্স_পেলোড_বাইটস int64 সম্পর্কে নেটওয়ার্ক রেসপন্স পেলোডের আকার
ইউনিট: বাইট
নেটওয়ার্ক_তথ্য.অনুরোধ_সম্পূর্ণ_সময়_আমাদের int64 সম্পর্কে নেটওয়ার্ক অনুরোধ পাঠানো সম্পূর্ণ হলে event_timestamp পরে মাইক্রোসেকেন্ড
একক: মাইক্রোসেকেন্ড
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_শুরু_সময়_আমাদের int64 সম্পর্কে নেটওয়ার্ক প্রতিক্রিয়া শুরু হওয়ার সময় event_timestamp পরে মাইক্রোসেকেন্ড
একক: মাইক্রোসেকেন্ড
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_সম্পূর্ণ_সময়_আমাদের int64 সম্পর্কে নেটওয়ার্ক প্রতিক্রিয়া সম্পন্ন হওয়ার পরে event_timestamp পরে মাইক্রোসেকেন্ড
একক: মাইক্রোসেকেন্ড

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

নিম্নলিখিত বিভাগগুলিতে আপনার রপ্তানি করা Performance Monitoring ডেটার বিপরীতে BigQuery তে চালানো যেতে পারে এমন প্রশ্নের উদাহরণ দেওয়া হয়েছে।

কনসোলে দেখা ডেটা মেলান

Firebase ড্যাশবোর্ড America/Los_Angeles টাইমজোনের দৈনিক ডেটা একত্রিত করে। কনসোলে যা দেখা গেছে তার সাথে মিল করার জন্য, date ফাংশনগুলিকে স্পষ্টভাবে America/Los_Angeles কে টাইমজোন হিসেবে সেট করতে হবে অন্যথায় date ফাংশনটি 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 এবং একটি কাস্টম মেট্রিক (একটি TRACE_METRIC ) যার নাম cache-hit , যা cache hit হলে 1 এবং cache miss হলে 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 চালানো

  • API অথবা ক্লায়েন্ট লাইব্রেরির মাধ্যমে একটি এক্সট্র্যাক্ট কাজ জমা দেওয়া।

মূল্য নির্ধারণ

Performance Monitoring থেকে ডেটা এক্সপোর্ট করার জন্য কোনও চার্জ নেই এবং BigQuery বিনামূল্যে ব্যবহারের উদার সীমা প্রদান করে। বিস্তারিত তথ্যের জন্য, BigQuery মূল্য নির্ধারণ বা BigQuery স্যান্ডবক্স দেখুন।