Bạn có thể xuất dữ liệu Performance Monitoring từ ứng dụng Apple và Android sang BigQuery để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng BigQuery SQL, xuất dữ liệu sang một nhà cung cấp dịch vụ đám mây khác, thậm chí sử dụng dữ liệu cho các mô hình học máy tuỳ chỉnh.
Bật tính năng xuất sang BigQuery
Chuyển đến trang Tích hợp trong bảng điều khiển Firebase, sau đó nhấp vào Liên kết trong thẻ BigQuery.
Làm theo hướng dẫn trên màn hình để bật BigQuery.
Khi bạn bật tính năng xuất BigQuery cho Performance Monitoring, những điều sau sẽ xảy ra:
Firebase xuất một bản sao dữ liệu hiện có của bạn sang BigQuery. Quá trình truyền dữ liệu ban đầu để xuất có thể mất đến 48 giờ để hoàn tất.
- Bạn có thể lên lịch lấp đầy dữ liệu theo cách thủ công trong tối đa 30 ngày qua hoặc cho ngày gần đây nhất khi bạn bật tính năng BigQuery xuất (tuỳ thuộc vào ngày nào gần đây nhất).
Sau khi tạo tập dữ liệu, bạn sẽ không thể thay đổi vị trí này nữa. Tuy nhiên, bạn có thể sao chép tập dữ liệu sang một vị trí khác hoặc tự di chuyển (tạo lại) tập dữ liệu ở một vị trí khác. Để tìm hiểu thêm, hãy xem bài viết Thay đổi vị trí tập dữ liệu.
Firebase thiết lập các lần đồng bộ hoá dữ liệu thường xuyên từ dự án Firebase sang BigQuery. Các thao tác xuất hằng ngày này thường hoàn tất trong vòng 24 giờ sau khi được lên lịch.
Theo mặc định, mọi ứng dụng trong dự án của bạn đều sẽ liên kết với BigQuery. Mọi ứng dụng mà bạn thêm vào dự án sau thời điểm liên kết cũng sẽ tự động liên kết với BigQuery. Bạn có thể quản lý những ứng dụng gửi dữ liệu.
Để huỷ kích hoạt tính năng xuất BigQuery, hãy huỷ liên kết dự án của bạn trong bảng điều khiển Firebase.
Dữ liệu nào được xuất sang BigQuery?
Đối với mỗi ứng dụng trong dự án, quá trình xuất sẽ tạo một bảng bao gồm tất cả các sự kiện hiệu suất được ghi lại. Mỗi hàng trong bảng là một sự kiện hiệu suất duy nhất có thể là một trong những sự kiện sau:
Theo dõi thời lượng – các lượt theo dõi thu thập (theo mặc định) chỉ số "thời lượng", bao gồm thời gian bắt đầu ứng dụng, ứng dụng ở nền trước và ứng dụng ở nền sau, cũng như mọi lượt theo dõi mã tuỳ chỉnh do nhà phát triển đo lường
event_typelàDURATION_TRACEevent_namegiống với tên lượt theo dõi
Chỉ số theo dõi – các chỉ số tuỳ chỉnh được liên kết với các lượt theo dõi mã tuỳ chỉnh do nhà phát triển đo lường
event_typelàTRACE_METRICevent_namelà tên của chỉ sốparent_trace_namelà tên lượt theo dõi chứa chỉ số này
Theo dõi màn hình – các lượt theo dõi kéo dài trong suốt vòng đời của một màn hình (lượt theo dõi kết xuất màn hình)
event_typelàSCREEN_TRACEevent_namelà tiền tố_st_cộng với tên màn hình thực tế
Yêu cầu kết nối mạng – các lượt theo dõi kéo dài trong suốt vòng đời của một yêu cầu kết nối mạng (lượt theo dõi yêu cầu kết nối mạng HTTP)
event_typelàNETWORK_REQUESTevent_namelà mẫu được phân loại của URL yêu cầu mạng
Mỗi sự kiện hiệu suất chứa các thuộc tính của sự kiện (chẳng hạn như quốc gia và nhà mạng của thiết bị ứng dụng), cũng như thông tin dành riêng cho sự kiện:
- Các lượt theo dõi thời lượng, chỉ số theo dõi và lượt theo dõi màn hình chứa
trace_info - Chỉ số theo dõi chứa
trace_info.metric_info - Dấu vết màn hình chứa
trace_info.screen_info - Lượt theo dõi mạng chứa
network_info
Lược đồ dữ liệu chi tiết
| Tên trường | Loại | Nội dung mô tả |
|---|---|---|
| event_timestamp | timestamp | Dấu thời gian kể từ Thời gian bắt đầu của hệ thống khi sự kiện bắt đầu trên thiết bị ứng dụng (bắt đầu theo dõi, bắt đầu kết nối mạng, v.v.) |
| app_display_version | chuỗi | Phiên bản hiển thị của ứng dụng (ví dụ: "4.1.7")
|
| app_build_version | chuỗi | Phiên bản bản dựng của ứng dụng (ví dụ: "1523456")
|
| os_version | chuỗi | Phiên bản hệ điều hành của thiết bị ứng dụng
|
| device_name | chuỗi | Tên của thiết bị ứng dụng (ví dụ: "Google Pixel") |
| country | chuỗi | Mã quốc gia gồm 2 chữ cái của quốc gia nơi diễn ra sự kiện (ví dụ: "US" hoặc "ZZ" cho quốc gia không xác định) |
| carrier | chuỗi | Nhà mạng của thiết bị ứng dụng |
| radio_type | chuỗi | Loại sóng vô tuyến đang hoạt động khi sự kiện diễn ra (ví dụ: "Wi-Fi") |
| custom_attributes | ARRAY<RECORD> | Tất cả các thuộc tính tuỳ chỉnh được đính kèm với sự kiện này |
| custom_attributes.key | chuỗi | Khoá của thuộc tính tuỳ chỉnh |
| custom_attributes.value | chuỗi | Giá trị của thuộc tính tuỳ chỉnh |
| event_type | chuỗi | Loại sự kiện; các giá trị có thể là:
|
| event_name | chuỗi | Tên của sự kiện
|
| parent_trace_name | chuỗi | Tên của lượt theo dõi mẹ mang chỉ số theo dõi Chỉ xuất hiện đối với TRACE_METRIC |
| trace_info | RECORD | Chỉ xuất hiện đối với DURATION_TRACE,
SCREEN_TRACE, và TRACE_METRIC |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | RECORD | Chỉ xuất hiện đối với SCREEN_TRACE |
| trace_info.screen_info.slow_frame_ratio | float64 | Tỷ lệ khung hình chậm cho lượt theo dõi màn hình này, từ 0 đến 1 (ví dụ: giá trị 0, 05 có nghĩa là 5% số khung hình cho thực thể màn hình này mất hơn 16 mili giây để kết xuất) |
| trace_info.screen_info.frozen_frame_ratio | float64 | Tỷ lệ khung hình bị treo cho lượt theo dõi màn hình này, từ 0 đến 1 (ví dụ: giá trị 0, 05 có nghĩa là 5% số khung hình cho thực thể màn hình này mất hơn 700 mili giây để kết xuất) |
| trace_info.metric_info | RECORD | Chỉ xuất hiện đối với TRACE_METRIC |
| trace_info.metric_info.metric_value | int64 | Giá trị của chỉ số theo dõi |
| network_info | RECORD | Chỉ xuất hiện đối với NETWORK_REQUEST |
| network_info.response_code | int64 | Mã phản hồi HTTP cho phản hồi kết nối mạng (ví dụ: 200, 404) |
| network_info.response_mime_type | chuỗi | Loại MIME của phản hồi kết nối mạng (ví dụ: "text/html") |
| network_info.request_http_method | chuỗi | Phương thức HTTP của yêu cầu kết nối mạng (ví dụ: "GET" hoặc "POST") |
| network_info.request_payload_bytes | int64 | Kích thước của tải trọng yêu cầu kết nối mạng Đơn vị: byte |
| network_info.response_payload_bytes | int64 | Kích thước của tải trọng phản hồi kết nối mạng Đơn vị: byte |
| network_info.request_completed_time_us | int64 | Số micrô giây sau event_timestamp khi quá trình gửi yêu cầu kết nối mạng hoàn tấtĐơn vị: micrô giây |
| network_info.response_initiated_time_us | int64 | Số micrô giây sau event_timestamp khi phản hồi kết nối mạng
được bắt đầuĐơn vị: micrô giây |
| network_info.response_completed_time_us | int64 | Số micrô giây sau event_timestamp khi phản hồi kết nối mạng
hoàn tấtĐơn vị: micrô giây |
Bạn có thể làm gì với dữ liệu đã xuất?
Các phần sau đây đưa ra ví dụ về những truy vấn mà bạn có thể chạy trong BigQuery đối với dữ liệu Performance Monitoring đã xuất.
Khớp dữ liệu xuất hiện trên bảng điều khiển
Bảng điều khiển Firebase tổng hợp dữ liệu hằng ngày theo múi giờ America/Los_Angeles.
Để khớp với dữ liệu xuất hiện trên bảng điều khiển, các hàm ngày phải đặt
America/Los_Angeles một cách rõ ràng làm múi giờ, nếu không, hàm ngày sẽ
mặc định sử dụng 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;
Xem mức độ phân tích độ trễ trung bình khi bắt đầu ứng dụng theo quốc gia
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;
Kiểm tra tỷ lệ khung hình bị treo theo nhiều điều kiện
Ví dụ: bạn có thể kiểm tra tỷ lệ khung hình bị treo cùng với khoảng thời gian người dùng dành cho mỗi màn hình của ứng dụng khi sử dụng các loại sóng vô tuyến khác nhau (Wi-Fi, 4G, v.v.).
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;
Tính toán tỷ lệ kết quả tìm kiếm trong bộ nhớ cache để tải một số loại tệp từ đĩa
Bản phân tích này giả định rằng bạn đã đo lường một lượt theo dõi mã tuỳ chỉnh để tải từ ổ đĩa bằng một thuộc tính tùy chỉnh có tên là file-extension và một chỉ số tùy chỉnh (một TRACE_METRIC) có tên là cache-hit được đặt thành 1 nếu kết quả tìm kiếm trong bộ nhớ cache và 0 nếu thiếu bộ nhớ đệm.
Ví dụ: bạn có thể tính toán tỷ lệ kết quả tìm kiếm trong bộ nhớ cache để tải tệp PNG từ ổ đĩa:
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);
Kiểm tra thời gian trong ngày mà người dùng đưa ra yêu cầu kết nối mạng
Ví dụ: bạn có thể kiểm tra giờ trong ngày mà người dùng ở Hoa Kỳ đưa ra yêu cầu kết nối mạng từ ứng dụng của bạn:
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;
Mang dữ liệu Performance Monitoring của bạn đến bất cứ đâu
Đôi khi, bạn muốn truy cập vào dữ liệu Performance Monitoring phía máy chủ hoặc đẩy dữ liệu đó sang một giải pháp khác của bên thứ ba. Hiện không có phí xuất dữ liệu.
Bạn có thể xuất dữ liệu của mình bằng cách:
Sử dụng giao diện người dùng web BigQuery
Chạy lệnh CLI
bq extractGửi một công việc trích xuất thông qua API hoặc thư viện ứng dụng.
Giá
Bạn không bị tính phí khi xuất dữ liệu từ Performance Monitoring và BigQuery cung cấp hạn mức sử dụng miễn phí hào phóng. Để biết thông tin chi tiết, hãy tham khảo BigQuery giá hoặc BigQuery hộp cát.