您可以將 Apple 和 Android 應用程式的 Performance Monitoring 資料匯出至 BigQuery,以供進一步分析。BigQuery 讓您使用 BigQuery SQL 分析資料、將資料匯出至其他雲端供應商,甚至將資料用於自訂 ML 模型。
啟用 BigQuery 匯出功能
按照畫面上的指示啟用 BigQuery。
為 Performance Monitoring 啟用 BigQuery 匯出功能後,會發生下列情況:
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
是網路要求網址的分類模式
- 「
每個效能事件都包含事件的屬性 (例如用戶端裝置的國家/地區和電信業者),以及事件專屬資訊:
- 時間長度追蹤記錄、追蹤記錄指標和畫面追蹤記錄包含
trace_info
- 追蹤記錄指標包含
trace_info.metric_info
- 螢幕追蹤記錄包含
trace_info.screen_info
- 網路追蹤記錄包含
network_info
詳細資料結構定義
欄位名稱 | 類型 | 說明 |
---|---|---|
event_timestamp | 時間戳記 | 用戶端裝置上事件開始時的時間戳記 (以 Epoch 紀元時間為準),例如追蹤開始時間、網路開始時間等。 |
app_display_version | 字串 | 顯示應用程式版本 (例如「4.1.7」)
|
app_build_version | 字串 | 應用程式的建構版本 (例如「1523456」)
|
os_version | 字串 | 用戶端裝置的 OS 版本
|
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 | 這個畫面追蹤記錄的緩慢頁框比率,介於 0 到 1 之間 (舉例來說,值為 0.05 表示這個畫面例項有 5% 的頁框顯示時間超過 16 毫秒) |
trace_info.screen_info.frozen_frame_ratio | float64 | 這個畫面追蹤記錄的凍結影格比率,介於 0 和 1 之間 (舉例來說,值為 0.05 表示這個畫面例項有 5% 的影格顯示時間超過 700 毫秒) |
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 回應代碼 (例如 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
設為時區,否則日期函式會預設使用世界標準時間。
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
的自訂屬性,以及名為 cache-hit
的自訂指標 (TRACE_METRIC
),如果快取命中,則設為 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 網頁版 UI
執行 CLI 指令
bq extract
透過 API 或用戶端程式庫提交擷取工作。
定價
從 Performance Monitoring 匯出資料不需付費,且 BigQuery 提供相當寬裕的免費使用限制。如需詳細資訊,請參閱BigQuery定價或BigQuery沙箱。