برای تجزیه و تحلیل بیشتر می توانید داده های Performance Monitoring از برنامه های اپل و اندروید به BigQuery صادر کنید. BigQuery به شما امکان می دهد داده ها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آن را به یک ارائه دهنده ابر دیگر صادر کنید، و حتی از داده ها برای مدل های ML سفارشی خود استفاده کنید.
صادرات BigQuery را فعال کنید
به صفحه Integrations در کنسول Firebase بروید، سپس روی پیوند در کارت BigQuery کلیک کنید.
دستورالعمل های روی صفحه را دنبال کنید تا BigQuery فعال کنید.
هنگامی که صادرات BigQuery برای Performance Monitoring فعال می کنید، موارد زیر رخ می دهد:
Firebase یک کپی از داده های موجود شما را به BigQuery صادر می کند. انتشار اولیه داده برای صادرات ممکن است تا 48 ساعت طول بکشد.
- میتوانید بهصورت دستی پر کردن دادهها را تا 30 روز گذشته یا برای آخرین تاریخی که صادر کردن 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
است
طرح داده های تفصیلی
نام فیلد | تایپ کنید | توضیحات |
---|---|---|
event_timestamp | مهر زمانی | مهر زمانی از زمان شروع رویداد در دستگاه مشتری (شروع ردیابی، شروع شبکه و غیره) |
app_display_version | رشته | نمایش نسخه برنامه (به عنوان مثال، "4.1.7")
|
app_build_version | رشته | نسخه ساخت برنامه (به عنوان مثال، "1523456")
|
os_version | رشته | نسخه سیستم عامل دستگاه مشتری
|
نام_دستگاه | رشته | نام دستگاه مشتری (به عنوان مثال، "Google Pixel") |
کشور | رشته | کد کشور دو حرفی کشوری که رویداد از آنجا رخ داده است (به عنوان مثال، "US"، یا "ZZ" برای کشور ناشناخته) |
حامل | رشته | حامل دستگاه مشتری |
نوع_رادیویی | رشته | نوع رادیوی فعال هنگام وقوع رویداد (به عنوان مثال، "WIFI") |
صفات_سفارشی | ARRAY<RECORD> | همه ویژگیهای سفارشی متصل به این رویداد |
custom_attributes.key | رشته | کلید ویژگی سفارشی |
custom_attributes.value | رشته | مقدار ویژگی سفارشی |
رویداد_نوع | رشته | نوع رویداد؛ مقادیر ممکن:
|
رویداد_نام | رشته | نام رویداد
|
والدین_ردیابی_نام | رشته | نام ردیابی والد که حامل معیار ردیابی است فقط برای 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 | نسبت فریم های آهسته برای این ردیابی صفحه، بین 0 و 1 (به عنوان مثال، مقدار 0.05 به این معنی است که 5٪ از فریم ها برای این نمونه صفحه نمایش بیش از 16 میلی ثانیه طول کشیده است) |
trace_info.screen_info.frozen_frame_ratio | float64 | نسبت فریم های ثابت برای این ردیابی صفحه، بین 0 و 1 (به عنوان مثال، مقدار 0.05 به این معنی است که 5٪ از فریم ها برای این نمونه صفحه نمایش بیش از 700 میلی ثانیه طول کشیده است) |
trace_info.metric_info | ضبط | فقط برای TRACE_METRIC موجود است |
trace_info.metric_info.metric_value | int64 | مقدار متریک ردیابی |
network_info | ضبط | فقط برای NETWORK_REQUEST وجود دارد |
network_info.response_code | int64 | کد پاسخ HTTP برای پاسخ شبکه (به عنوان مثال، 200، 404) |
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;
نسبت فریم های یخ زده را در برابر شرایط مختلف بررسی کنید
به عنوان مثال، میتوانید نسبت فریمهای ثابت را در کنار مدت زمانی که کاربران در هر صفحه از برنامهتان صرف میکنند، هنگام استفاده از انواع مختلف رادیو (WiFi، 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 مراجعه کنید.