將 Performance Monitoring 資料匯出至 BigQuery

你可以將 Apple 和 Android 應用程式的效能監控資料匯出至 BigQuery 以便查詢及分析BigQuery 能讓您使用 BigQuery SQL、匯出至其他雲端服務供應商, 以便儲存自訂機器學習模型的資料

啟用 BigQuery Export

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

  2. 按照畫面上的指示啟用 BigQuery。

    為 Performance Monitoring 啟用 BigQuery Export 功能後,您將執行以下操作 發生:

    • Firebase 會將現有資料的副本匯出到 BigQuery。首次匯出資料時,系統最多可能需要 大約 48 小時就能完成。

    • 建立資料集後,位置 無法變更,但可將資料集複製到其他位置 或在其他位置手動移動 (重新建立) 資料集。學習 詳情請參閱變更資料集位置

    • Firebase 會定期同步處理 Firebase 專案中的 BigQuery。這些每日匯出作業通常會在 24 小時內完成 排入排程後

    • 根據預設,專案中的所有應用程式都會連結至 BigQuery。不限 您稍後加入專案的應用程式會自動連結至 BigQuery。你可以 管理該傳送資料的應用程式

如要停用 BigQuery Export 取消連結專案

哪些資料會匯出至 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」)
  • 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 浮點值 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 網路要求酬載大小
Unit:位元組
network_info.response_payload_bytes int64 網路回應酬載的大小
Unit:位元組
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 的自訂屬性和自訂指標 ( TRACE_METRIC) 名為 cache-hit,如果快取成功,則設為 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 沙箱