你可以將 Apple 和 Android 應用程式中的「Performance Monitoring」資料匯出至 BigQuery進階知識 以便查詢及分析BigQuery 可讓您使用 BigQuery SQL、匯出至其他雲端服務供應商,甚至是 以便儲存自訂機器學習模型的資料
啟用 BigQuery 匯出功能
前往 Firebase 控制台的「整合」頁面,然後在「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 紀元時間算起) (追蹤開始、網路開始等) |
應用程式顯示版本 | 字串 | 顯示應用程式版本 (例如「4.1.7」)
|
app_build_version | 字串 | 應用程式的版本 (例如「1523456」)
|
os_version | 字串 | 用戶端裝置的 OS 版本
|
device_name | 字串 | 用戶端裝置的名稱 (例如「Google Pixel」) |
國家/地區 | 字串 | 事件發生國家/地區的雙字母國家/地區代碼 (例如「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 | float64 | 此畫面追蹤記錄的凍結畫面比率,介於 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 | 網路要求酬載大小 Unit:位元組 |
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 後微秒
已完成單位:微秒 |
匯出的資料可做什麼用途?
以下各節提供查詢範例,方便您在當中執行 對匯出的Performance Monitoring資料BigQuery。
依國家/地區查看平均應用程式啟動延遲時間的詳細資料
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
敬上
定價
從 Performance Monitoring 和 BigQuery 匯出資料不必付費 提供大量的免費用量限制如需詳細資訊,請參閱 BigQuery 定價 或 BigQuery 沙箱。