Xuất dữ liệu của giải pháp Theo dõi hiệu suất sang BigQuery

Bạn có thể xuất dữ liệu Performance Monitoring từ các ứ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, và thậm chí sử dụng dữ liệu cho các mô hình ML tuỳ chỉnh.

Bật tính năng xuất dữ liệu BigQuery

  1. 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.

  2. 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 dữ liệu sang 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.

    • 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 của bạn 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.

Để ngừng kích hoạt tính năng xuất dữ liệu 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 đã thu thập. 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 – theo dõi thu thập, theo mặc định, chỉ số "thời lượng", bao gồm thời gian khởi động ứng dụng, ứng dụng ở nền trước và ứng dụng ở 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_typeDURATION_TRACE
    • event_name giống với tên theo dõi
  • Chỉ số theo dõi – các chỉ số tuỳ chỉnh được liên kết với các dấu vết mã tuỳ chỉnh do nhà phát triển đo lường

    • event_typeTRACE_METRIC
    • event_name là tên của chỉ số
    • parent_trace_name là tên theo dõi chứa chỉ số này
  • Theo dõi màn hình – theo dõi trong suốt vòng đời của một màn hình (theo dõi kết xuất màn hình)

    • event_typeSCREEN_TRACE
    • event_name là tiền tố _st_ cộng với tên màn hình thực tế
  • Yêu cầu mạng – theo dõi trong suốt vòng đời của một yêu cầu mạng (theo dõi yêu cầu mạng HTTP)

    • event_typeNETWORK_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à cung cấp dịch vụ của thiết bị ứng dụng), cũng như thông tin cụ thể về sự kiện:

  • Theo dõi thời lượng, chỉ số theo dõi và theo dõi màn hình chứa trace_info
  • Chỉ số theo dõi chứa trace_info.metric_info
  • Theo dõi màn hình chứa trace_info.screen_info
  • 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 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")
  • Đối với Android – VersionName
  • Đối với iOS – CFBundleShortVersionString
app_build_version chuỗi Phiên bản bản dựng của ứng dụng (ví dụ: "1523456")
  • Đối với Android – VersionCode
  • Đối với iOS – CFBundleVersion
os_version chuỗi Phiên bản hệ điều hành của thiết bị ứng dụng
  • Đối với Android – Cấp độ API Android (ví dụ: "26")
  • Đối với iOS – Phiên bản iOS (ví dụ: "11.4")
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 hai chữ cái của quốc gia nơi sự kiện diễn ra (ví dụ: "US" hoặc "ZZ" cho quốc gia không xác định)
carrier chuỗi Nhà cung cấp dịch vụ 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ụ: "WIFI")
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ể có:
  • DURATION_TRACE – theo dõi thu thập, theo mặc định, chỉ số "thời lượng", bao gồm thời gian khởi động ứng dụng, ứng dụng ở nền trước và ứng dụng ở 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
  • SCREEN_TRACE – theo dõi trong suốt vòng đời của một màn hình (theo dõi kết xuất màn hình)
  • TRACE_METRIC – các chỉ số tuỳ chỉnh được liên kết với các dấu vết mã tuỳ chỉnh do nhà phát triển đo lường
  • NETWORK_REQUEST – theo dõi trong suốt vòng đời của một yêu cầu mạng (theo dõi yêu cầu mạng HTTP)
event_name chuỗi Tên của sự kiện
  • Đối với DURATION_TRACE – tên theo dõi
  • Đối với TRACE_METRIC – tên chỉ số tuỳ chỉnh
  • Đối với SCREEN_TRACE_st_ theo sau là tên theo dõi
  • Đối với NETWORK_REQUEST – mẫu URL yêu cầu mạng
parent_trace_name chuỗi Tên của dấu vết mẹ mang chỉ số theo dõi
Chỉ có trong TRACE_METRIC
trace_info RECORD Chỉ có trong DURATION_TRACE, SCREEN_TRACE, và TRACE_METRIC
trace_info.duration_us int64
  • Đối với DURATION_TRACESCREEN_TRACE — Khoảng thời gian ("thời lượng") từ đầu đến cuối dấu vết
  • Đối với TRACE_METRIC – khoảng thời gian ("thời lượng") từ đầu đến cuối dấu vết mẹ
Đơn vị: micrô giây
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, 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 có thời gian kết xuất vượt quá 16 mili giây)
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, 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 có thời gian kết xuất vượt quá 700 mili giây)
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 của tải trọng yêu cầu 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 mạng
Đơn vị: byte
network_info.request_completed_time_us int64 Micrô giây sau event_timestamp khi quá trình gửi yêu cầu mạng hoàn tất
Đơn vị: micrô giây
network_info.response_initiated_time_us int64 Micrô giây sau event_timestamp khi phản hồi mạng được khởi tạo
Đơn vị: micrô giây
network_info.response_completed_time_us int64 Micrô giây sau event_timestamp khi phản hồ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ề các 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 những gì xuất hiện 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 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ễ khởi động ứng dụng trung bình 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 (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 từ đĩa

Bản phân tích này giả định rằng bạn đã đo lường một 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 (một TRACE_METRIC) có tên là cache-hit được đặt thành 1 nếu truy cập bộ nhớ đệm và 0 nếu không truy cập 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 mạng

Ví dụ: bạn có thể kiểm tra thời gian trong ngày mà người dùng ở Hoa Kỳ đưa ra yêu cầu 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 đi 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 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 bằng cách:

Giá

Bạn không phải trả phí để xuất dữ liệu từ Performance Monitoring, và BigQuery cung cấp các 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 sandbox.