將 Performance Monitoring 資料匯出至 BigQuery

您可以將 Performance Monitoring 的資料從 Apple 和 Android 應用程式匯出至 BigQuery,以便進一步分析。BigQuery 可讓您使用 BigQuery SQL 分析資料、將資料匯出至其他雲端服務供應商,甚至是將這些資料用於自訂機器學習模型。

啟用 BigQuery Export

  1. 前往 Firebase 控制台的「Integrations」(整合)頁面,然後按一下「BigQuery」資訊卡中的「Link」

  2. 按照畫面上的指示啟用 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」)
  • 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」)
country 字串 活動發生地點的雙字母國家/地區代碼 (例如「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_TRACESCREEN_TRACETRACE_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 網路要求酬載大小
單位:位元組
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)。10

舉例來說,您可以計算從磁碟載入 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 沙箱