Bạn có thể xuất dữ liệu Performance Monitoring từ các ứng dụng Apple và Android vào BigQuery để phân tích thêm. BigQuery cho phép bạn phân tích dữ liệu bằng cách sử dụng SQL BigQuery, xuất dữ liệu sang một nhà cung cấp dịch vụ đám mây khác và thậm chí sử dụng dữ liệu cho các mô hình học máy tuỳ chỉnh của bạn.
Bật tính năng xuất 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, điều sau sẽ xảy ra:
Firebase xuấ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 tự động điền 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 xuất BigQuery (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 phần Thay đổi vị trí của tập dữ liệu.
Firebase thiết lập tính năng đồng bộ hoá thường xuyên dữ liệu của bạ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, tất cả ứng dụng trong dự án của bạn đều được 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, tính năng xuất sẽ tạo một bảng bao gồm tất cả các sự kiện hiệu suất đã ghi lại. Mỗi hàng trong bảng là một sự kiện hiệu suất có thể là một trong những sự kiện sau:
Dấu vết thời lượng – theo mặc định, các dấu vết này thu thập chỉ số "thời lượng", bao gồm cả thời gian khởi động ứng dụng, thời gian ứng dụng chạy ở nền trước và thời gian ứng dụng chạy ở nền sau, cũng như mọi dấu vết mã tuỳ chỉnh do nhà phát triển đo lường
event_type
làDURATION_TRACE
event_name
giống với tên dấu vết
Chỉ số theo dõi – các chỉ số tuỳ chỉnh được liên kết với dấu vết mã tuỳ chỉnh do nhà phát triển đo lường
event_type
làTRACE_METRIC
event_name
là tên của chỉ sốparent_trace_name
là tên dấu vết chứa chỉ số này
Dấu vết màn hình – dấu vết trải dài trong suốt vòng đời của màn hình (dấu vết kết xuất màn hình)
event_type
làSCREEN_TRACE
event_name
là tiền tố_st_
cộng với tên người dùng thực tế
Yêu cầu mạng – dấu vết trải dài trong suốt thời gian của một yêu cầu mạng (dấu vết yêu cầu mạng HTTP)
event_type
làNETWORK_REQUEST
event_name
là 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ị khách), cũng như thông tin dành riêng cho sự kiện:
- Dấu vết thời lượng, chỉ số theo dõi và dấu vết 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
- Dấu vết mạng chứa
network_info
Giản đồ dữ liệu chi tiết
Tên trường | Loại | Nội dung mô tả |
---|---|---|
event_timestamp | dấu thời gian | 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ị khách (bắt đầu theo dõi, bắt đầu mạng, v.v.) |
app_display_version | chuỗi | Hiển thị phiên bản 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ị khách
|
device_name | chuỗi | Tên thiết bị khách (ví dụ: "Google Pixel") |
country | chuỗi | Mã quốc gia gồm hai chữ cái của quốc gia nơi diễn ra sự kiện (ví dụ: "US" hoặc "ZZ" đối với quốc gia không xác định) |
hãng vận tải | chuỗi | Nhà mạng của thiết bị khách |
radio_type | chuỗi | Loại mạng không dây đang hoạt động khi sự kiện diễn ra (ví dụ: "WIFI") |
custom_attributes | ARRAY<RECORD> | Tất cả thuộc tính tuỳ chỉnh được đính kèm vào 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ể có:
|
event_name | chuỗi | Tên sự kiện
|
parent_trace_name | chuỗi | Tên của dấu vết mẹ chứa 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ỉ có trong SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Tỷ lệ khung hình chậm cho dấu vết màn hình này, trong khoảng từ 0 đến 1 (ví dụ: giá trị 0, 05 có nghĩa là 5% 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 dấu vết màn hình này, trong khoảng 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ỉ có trong TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Giá trị của chỉ số theo dõi |
network_info | RECORD | Chỉ có trong NETWORK_REQUEST |
network_info.response_code | int64 | Mã phản hồi HTTP cho phản hồi mạng (ví dụ: 200, 404) |
network_info.response_mime_type | chuỗi | Loại MIME của phản hồ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 mạng (ví dụ: "GET" hoặc "POST") |
network_info.request_payload_bytes | int64 | Kích thước tải trọng yêu cầu mạng Đơn vị: byte |
network_info.response_payload_bytes | int64 | Kích thước tải trọng phản hồi mạng Đơn vị: byte |
network_info.request_completed_time_us | int64 | Micro giây sau event_timestamp khi quá trình gửi yêu cầu mạng hoàn tấtĐơn vị: micro giây |
network_info.response_initiated_time_us | int64 | Micro giây sau event_timestamp khi phản hồi mạng được bắt đầuĐơn vị: micro giây |
network_info.response_completed_time_us | int64 | Micro giây sau event_timestamp khi phản hồi mạng hoàn tấtĐơn vị: micro 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ề các truy vấn mà bạn có thể chạy trong BigQuery dựa trên dữ liệu Performance Monitoring đã xuất.
So khớp dữ liệu trên bảng điều khiển
Trang tổng quan Firebase tổng hợp dữ liệu hằng ngày theo múi giờ America/Los_Angeles
.
Để khớp với nội dung trên bảng điều khiển, các hàm ngày phải đặt rõ ràng America/Los_Angeles
làm múi giờ, nếu không hàm ngày sẽ mặc định sử dụng múi giờ 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 bảng chi tiết về độ trễ trung bình khi khởi động ứ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 khác nhau (WiFi, 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ệ truy cập bộ nhớ đệm để tải một số loại tệp nhất định từ ổ đĩa
Phân tích này giả định rằng bạn đã đo lường dấu vết mã tuỳ chỉnh để tải từ
ổ đĩa bằng một thuộc tính tuỳ chỉnh có tên là file-extension
và một chỉ số tuỳ chỉnh (TRACE_METRIC
) có tên là cache-hit
được đặt thành 1
nếu trúng bộ nhớ đệm và 0
nếu
trượt bộ nhớ đệm.
Ví dụ: bạn có thể tính tỷ lệ truy cập bộ nhớ đệm để 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 mạng
Ví dụ: bạn có thể kiểm tra xem người dùng ở Hoa Kỳ gửi yêu cầu mạng từ ứng dụng của bạn vào lúc nào trong ngày:
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 theo bạn mọi lúc mọi nơi
Đô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 đó đến một giải pháp bên thứ ba khác. Hiện tại, bạn không phải trả 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 extract
Gửi công việc trích xuất thông qua API hoặc thư viện ứng dụng.
Giá
Bạn sẽ 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í rất hào phóng. Để biết thông tin chi tiết, hãy tham khảo mức giá BigQuery hoặc hộp cát BigQuery.