您可以將 Performance Monitoring 的資料從 Apple 和 Android 應用程式匯出至 BigQuery,以便進一步分析。BigQuery 可讓您使用 BigQuery SQL 分析資料、將資料匯出至其他雲端服務供應商,甚至是將這些資料用於自訂機器學習模型。
啟用 BigQuery Export
前往 Firebase 控制台的「Integrations」(整合)頁面,然後按一下「BigQuery」資訊卡中的「Link」。
按照畫面上的指示啟用 BigQuery。
啟用 Performance Monitoring 的 BigQuery Export 功能後,會發生以下情況:
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
是包含這項指標的追蹤記錄名稱
Screen trace - 跨螢幕生命週期的追蹤記錄 (畫面轉譯追蹤記錄)
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 紀元時間起算,在用戶端裝置上開始事件時起算的時間戳記 (追蹤記錄開始、網路開始等) |
應用程式顯示版本 | 字串 | 應用程式的顯示版本 (例如「4.1.7」)
|
app_build_version | 字串 | 應用程式版本 (例如「1523456」)
|
os_version | 字串 | 用戶端裝置的 OS 版本
|
device_name | 字串 | 用戶端裝置的名稱 (例如「Google Pixel」) |
country | 字串 | 活動發生地點的雙字母國家/地區代碼 (例如「US」或「ZZ」代表不明國家/地區) |
貨運公司 | 字串 | 用戶端裝置的電信業者 |
Radio_type | 字串 | 事件發生時啟用的無線電類型 (例如「WIFI」) |
自訂屬性 | ARRAY<RECORD> | 附加至這個活動的所有自訂屬性 |
custom_attributes.key | 字串 | 自訂屬性的鍵 |
custom_attributes.value | 字串 | 自訂屬性的值 |
event_type | 字串 | 事件類型;可能的值:
|
event_name | 字串 | 事件名稱
|
parent_trace_name | 字串 | 含有追蹤指標的父項追蹤記錄名稱 僅適用於 TRACE_METRIC |
追蹤記錄資訊 | 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 | 浮點值 64 | 此螢幕追蹤記錄的緩慢影格比率,介於 0 到 1 之間 (舉例來說,0.05 值表示 5% 的影格轉譯時間超過 16 毫秒) |
trace_info.screen_info.frozen_Frame_ratio | 浮點值 64 | 這個畫面追蹤記錄的凍結影格比率,介於 0 到 1 之間 (舉例來說,0.05 值表示這個畫面執行個體顯示 5% 影格的轉譯時間超過 700 毫秒) |
trace_info.metric_info | RECORD | 只顯示:TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | 追蹤指標的值 |
網路資訊 | 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 資料執行查詢的範例。
依國家/地區查看平均應用程式啟動延遲時間的詳細資料
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
的自訂屬性和名為 cache-hit
的自訂指標 (TRACE_METRIC
),在快取中找到了所需資料,而在快取中找不到所需資料的情況下,設計了用於從磁碟載入的自訂程式碼追蹤記錄 (名為 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 沙箱。