میتوانید دادههای Performance Monitoring را از برنامههای Apple و Android به BigQuery صادر کنید تا تحلیل بیشتری انجام دهید. BigQuery به شما امکان میدهد دادهها را بااستفاده از BigQuery SQL تجزیهوتحلیل کنید، آنها را به ارائهدهنده ابری دیگری صادر کنید، و حتی از دادهها برای مدلهای یادگیری ماشین سفارشیتان استفاده کنید.
فعال کردن صادر کردن BigQuery
به صفحه ادغامها در کنسول Firebase بروید، سپس روی پیوند در کارت BigQuery کلیک کنید.
برای فعال کردن BigQuery، دستورالعملهای روی صفحه را دنبال کنید.
وقتی صادر کردن BigQuery را برای Performance Monitoring فعال میکنید، موارد زیر اتفاق میافتد:
Firebase نسخهای از دادههای موجود شما را به BigQuery صادر میکند. انتشار اولیه دادهها برای صادر کردن ممکن است تا ۴۸ ساعت طول بکشد.
- میتوانید دادههای گذشته را بهصورت دستی زمانبندی کنید تا ۳۰ روز گذشته یا برای جدیدترین تاریخی که BigQuery صادر کردن را فعال کردهاید (هرکدام که جدیدتر باشد).
پساز ایجاد مجموعه داده، مکان قابلتغییر نیست، اما میتوانید مجموعه داده را در مکان دیگری کپی کنید یا مجموعه داده را بهصورت دستی در مکان دیگری منتقل (بازآفرینی) کنید. برای کسب اطلاعات بیشتر، به تغییر مکان مجموعه داده مراجعه کنید.
Firebase همگامسازیهای منظمی را برای دادههایتان از پروژه Firebase به BigQuery راهاندازی میکند. این عملیات صادر کردن روزانه معمولاً ۲۴ ساعت پساز زمانبندی شدن تکمیل میشود.
بهطور پیشفرض، همه برنامههای پروژهتان به BigQuery پیوند شدهاند. هر برنامهای که بعداً به پروژه اضافه کنید بهطور خودکار به BigQuery پیوند داده میشود. میتوانید مدیریت کنید کدام برنامهها داده ارسال کنند.
برای غیرفعال کردن صادر کردن BigQuery، پیوند پروژهتان را در کنسول Firebase لغو کنید.
چه دادههایی به BigQuery صادر میشود؟
برای هر برنامه در پروژه، برونبرد جدولی ایجاد میکند که شامل همه رویدادهای عملکرد ضبطشده است. هر ردیف در جدول یک رویداد عملکردی واحد است که میتواند یکی از موارد زیر باشد:
ردگیری مدت — ردگیریهایی که بهطور پیشفرض سنجه «مدت» را جمعآوری میکنند، که شامل شروع برنامه، برنامه در پیشنما، و برنامه در پسزمینه، و همچنین هرگونه ردگیری کد سفارشی ابزارسازیشده توسط توسعهدهنده میشود
event_typeDURATION_TRACEاستevent_nameبا نام ردیابی یکسان است
سنجه ردیابی — سنجههای سفارشی که با ردیابیهای کد سفارشی ابزارسازیشده توسط توسعهدهنده مرتبط هستند
event_typeTRACE_METRICاستevent_nameنام سنجه است-
parent_trace_nameنام ردیابی است که این سنجه را دربرمیگیرد
ردگیری صفحه — ردگیریهایی که طول عمر صفحه را پوشش میدهند (ردگیریهای پردازش صفحه)
event_typeSCREEN_TRACEاستevent_nameپیشوند_st_بهعلاوه نام واقعی صفحه است
درخواست شبکه — ردپاهایی که طول عمر درخواست شبکه را پوشش میدهند (ردپاهای درخواست شبکه HTTP)
event_typeNETWORK_REQUESTاستevent_nameالگوی دستهبندیشده نشانی وب درخواست شبکه است
هر رویداد عملکرد شامل ویژگیهای رویداد (مانند کشور و شرکت مخابراتی دستگاه کارخواه) و همچنین اطلاعات خاص رویداد است:
- ردیابیهای مدت، سنجههای ردیابی، و ردیابیهای صفحه حاوی
trace_infoاست - سنجههای ردیابی حاوی
trace_info.metric_infoاست - ردیابیهای صفحهنمایش حاوی
trace_info.screen_infoاست - ردیابیهای شبکه حاوی
network_infoاست
طرحواره دادههای دقیق
| نام فیلد | تایپ کنید | شرح |
|---|---|---|
| event_timestamp | مُهر زمان | مُهر زمان از Epoch وقتی رویداد در دستگاه کارخواه شروع شد (شروع ردیابی، شروع شبکه، و غیره) |
| app_display_version | رشته | نسخه نمایشی برنامه (برای مثال، «4.1.7»)
|
| app_build_version | رشته | نسخه ساخت برنامه (برای مثال، «۱۵۲۳۴۵۶»)
|
| os_version | رشته | نسخه سیستمعامل دستگاه کارخواه
|
| 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 | RECORD | فقط برای DURATION_TRACE،
SCREEN_TRACE، و TRACE_METRIC وجود دارد |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | RECORD | فقط برای SCREEN_TRACE ارائه میشود |
| trace_info.screen_info.slow_frame_ratio | float64 | نسبت قابهای آهسته برای این ردگیری صفحه، بین ۰ و ۱ (برای مثال، مقدار ۰٫۰۵ یعنی پرداز ۵٪ از قابهای این نمونه صفحه بیشتر از ۱۶ میلیثانیه طول کشیده است) |
| trace_info.screen_info.frozen_frame_ratio | float64 | نسبت قابهای ثابت برای این ردگیری صفحه، بین ۰ و ۱ (برای مثال، مقدار ۰٫۰۵ یعنی پرداز ۵٪ از قابها برای این نمونه صفحه بیشتر از ۷۰۰ میلیثانیه طول کشیده است) |
| trace_info.metric_info | RECORD | فقط برای TRACE_METRIC ارائه میشود |
| trace_info.metric_info.metric_value | int64 | مقدار سنجه ردیابی |
| network_info | RECORD | فقط برای 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;
بررسی نسبت قابهای ثابت در شرایط مختلف
برای مثال، میتوانید نسبت فریمهای ثابت را در کنار مدت زمانی که کاربران در هر صفحه از برنامهتان هنگام استفاده از انواع مختلف رادیو (Wi-Fi، 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 ابزارگذاری کردهاید که درصورت برخورد حافظه پنهان روی 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
اجرای فرمان CLI
bq extractارسال کار استخراج ازطریق API یا کتابخانههای کارخواه.
قیمتگذاری
صادر کردن داده از Performance Monitoring هزینهای ندارد و BigQuery محدودیتهای استفاده بدون هزینه سخاوتمندانهای ارائه میدهد. برای اطلاعات دقیق، به قیمتگذاری BigQuery یا جعبه شنی BigQuery مراجعه کنید.