Apple アプリと Android アプリから Performance Monitoring データを BigQuery にエクスポートして、さらに分析できます。BigQuery では、BigQuery SQL を使用してデータを分析できるほか、別のクラウド プロバイダにデータをエクスポートしたり、データをカスタム ML モデルで使用したりできます。
BigQuery エクスポートを有効にする
Firebase コンソールの [統合] ページに移動し、[BigQuery] カードの [リンク] をクリックします。
画面上の指示に従って BigQuery を有効にします。
Performance Monitoring の BigQuery エクスポートを有効にすると、次のようになります。
Firebase は BigQuery に既存データのコピーをエクスポートします。エクスポートするデータの初回の読み込みには、最長で 48 時間かかる場合があります。
- BigQuery Export を有効にした場合、過去 30 日間または最新の日付まで(どちらか最新のほう)、データ バックフィルを手動でスケジュールできます。
データセットの作成後はロケーションを変更できませんが、データセットを別のロケーションにコピーするか、データセットを別のロケーションに手動で移動(再作成)することはできます。詳細については、データセットのロケーションの変更をご覧ください。
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
はネットワーク リクエストの URL の分類済みパターンです
各パフォーマンス イベントには、イベントの属性(クライアント デバイスの国や通信会社など)とイベント固有の情報が含まれています。
- 所要時間トレース、トレース指標、画面トレースには
trace_info
が含まれています - トレース指標には
trace_info.metric_info
が含まれています - 画面トレースには
trace_info.screen_info
が含まれています - ネットワーク トレースには
network_info
が含まれています
詳細なデータスキーマ
フィールド名 | 型 | 説明 |
---|---|---|
event_timestamp | timestamp | クライアント デバイスでイベント(トレース開始、ネットワーク開始など)が開始されたエポックを起点とするタイムスタンプ |
app_display_version | 文字列 | アプリケーションの表示バージョン(4.1.7 など)
|
app_build_version | 文字列 | アプリケーションのビルド バージョン(1523456 など)
|
os_version | 文字列 | クライアント デバイスの OS バージョン
|
device_name | 文字列 | クライアント デバイスの名前(「Google Pixel」など) |
国 | 文字列 | イベントが発生した国の 2 文字の国コード(たとえば「US」など。不明な国の場合は「ZZ」) |
携帯通信会社 | 文字列 | クライアント デバイスの通信会社 |
radio_type | 文字列 | イベントが発生したときの有効な無線通信のタイプ(「WIFI」など) |
custom_attributes | ARRAY<RECORD> | このイベントに関連付けられているすべてのカスタム属性 |
custom_attributes.key | 文字列 | カスタム属性のキー |
custom_attributes.value | 文字列 | カスタム属性の値 |
event_type | 文字列 | イベントのタイプ。取りうる値:
|
event_name | 文字列 | イベント名
|
parent_trace_name | 文字列 | トレース指標を保持する親トレースの名前TRACE_METRIC の場合のみ存在 |
trace_info | 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 | float64 | 0~1 の範囲の値で、画面トレースにおける低速フレームの割合を示す(たとえば、値が 0.05 である場合は、この画面インスタンスのフレームの 5% が、レンダリングに 16 ms を超える時間を要したことを示しています) |
trace_info.screen_info.frozen_frame_ratio | float64 | 0~1 の範囲の値で、画面トレースにおいてフリーズしたフレームの割合を示す(たとえば値が 0.05 である場合は、この画面インスタンスのフレームの 5% が、レンダリングに 700 ms を超える時間を要したことを示しています) |
trace_info.metric_info | RECORD | TRACE_METRIC の場合のみ表示される |
trace_info.metric_info.metric_value | int64 | トレース指標の値 |
network_info | 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 以後の経過時間単位: マイクロ秒 |
エクスポートされたデータで可能な操作
以下のセクションでは、エクスポートされた Performance Monitoring データに対して BigQuery で実行できるクエリの例を示します。
コンソールに表示されるデータと一致させる
Firebase ダッシュボードでは、America/Los_Angeles
タイムゾーンで 1 日分のデータを集計します。
コンソールに表示された内容と一致させるには、日付関数でタイムゾーンとして America/Los_Angeles
を明示的に設定する必要があります。設定しない場合、日付関数はデフォルトで UTC を使用します。
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
平均アプリ起動レイテンシの国別表示
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-Fii、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 データにアクセスしたり、サードパーティ ソリューションにそのデータを push したりできます。現時点では、データのエクスポートは無料です。
データをエクスポートする方法は次のとおりです。
BigQuery ウェブ UI を使用する
CLI コマンド
bq extract
を実行するAPI またはクライアント ライブラリを介して抽出ジョブを送信する
料金
Performance Monitoring からのデータのエクスポートには料金がかかりません。BigQuery には料金なしで使用できる十分な上限枠があります。詳細については、BigQuery の料金または BigQuery のサンドボックスをご覧ください。