將 Performance Monitoring 資料匯出至 BigQuery

你可以將 Apple 和 Android 應用程式中的「Performance Monitoring」資料匯出至 BigQuery進階知識 以便查詢及分析BigQuery 可讓您使用 BigQuery SQL、匯出至其他雲端服務供應商,甚至是 以便儲存自訂機器學習模型的資料

啟用 BigQuery 匯出功能

  1. 前往 Firebase 控制台的「整合」頁面,然後在「BigQuery」資訊卡中按一下「連結」

  2. 按照畫面上的指示啟用 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」)
  • Android 裝置:VersionName
  • iOS 裝置:CFBundleShortVersionString
app_build_version 字串 應用程式的版本 (例如「1523456」)
  • Android 裝置:VersionCode
  • iOS 裝置:CFBundleVersion
os_version 字串 用戶端裝置的 OS 版本
  • Android - Android API 級別 (例如「26」)
  • 適用於 iOS - iOS 版本 (例如「11.4」)
device_name 字串 用戶端裝置的名稱 (例如「Google Pixel」)
國家/地區 字串 事件發生國家/地區的雙字母國家/地區代碼 (例如「US」或「ZZ」,代表不明國家/地區)
貨運公司 字串 用戶端裝置的電信業者
Radio_type 字串 事件發生時的有效無線電類型 (例如「WIFI」)
自訂屬性 ARRAY<RECORD> 附加至這個活動的所有自訂屬性
custom_attributes.key 字串 自訂屬性的鍵
custom_attributes.value 字串 自訂屬性的值
event_type 字串 事件類型;可能的值:
  • DURATION_TRACE - 收集的追蹤記錄: 預設的「時間長度」指標,其中包含應用程式啟動次數 也就是在前景運作、在背景中執行 開發人員檢測的自訂程式碼追蹤記錄
  • SCREEN_TRACE - 橫跨下列生命週期的追蹤記錄 畫面 (畫面轉譯追蹤記錄)
  • TRACE_METRIC:自訂指標 與開發人員檢測的自訂程式碼追蹤記錄相關聯
  • NETWORK_REQUEST - 橫跨生命週期的追蹤記錄 網路要求 (HTTP 網路要求追蹤記錄)
event_name 字串 事件名稱
  • 適用於 DURATION_TRACE - 追蹤記錄名稱
  • TRACE_METRIC」:自訂指標名稱
  • SCREEN_TRACE_st_ 後面接著追蹤記錄名稱
  • 針對 NETWORK_REQUEST:網路要求網址模式
parent_trace_name 字串 包含追蹤指標
的父追蹤記錄名稱 僅適用於 TRACE_METRIC
追蹤記錄資訊 RECORD 只顯示:DURATION_TRACE, 「SCREEN_TRACE」和「TRACE_METRIC
trace_info.duration_us int64
  • 適用於 DURATION_TRACESCREEN_TRACE — 從開始到結束的時間長度 (「時間長度」) 追蹤記錄
  • TRACE_METRIC:時間長度 (「時間長度」) 父項追蹤記錄的結尾
,瞭解如何調查及移除這項存取權。 單位:微秒
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敬上

  • 提交 透過 API 或用戶端程式庫

定價

Performance MonitoringBigQuery 匯出資料不必付費 提供大量的免費用量限制如需詳細資訊,請參閱 BigQuery 定價BigQuery 沙箱