Apple および Android アプリからパフォーマンス モニタリング データをBigQueryにエクスポートして、さらに分析することができます。 BigQuery では、BigQuery SQL を使用してデータを分析し、別のクラウド プロバイダにエクスポートして、カスタム ML モデルにデータを使用することもできます。
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
は、ネットワーク リクエスト URL の分類されたパターンです。
-
各パフォーマンス イベントには、イベントの属性 (クライアント デバイスの国やキャリアなど) と、イベント固有の情報が含まれています。
- 期間トレース、トレース メトリック、およびスクリーン トレースには
trace_info
が含まれます - トレース メトリックには
trace_info.metric_info
が含まれます - 画面トレースには
trace_info.screen_info
が含まれます - ネットワーク トレースに
network_info
が含まれている
詳細なデータ スキーマ
フィールド名 | タイプ | 説明 |
---|---|---|
event_timestamp | タイムスタンプ | クライアント デバイスでイベントが開始されたときのエポック以降のタイムスタンプ (トレース開始、ネットワーク開始など) |
app_display_version | ストリング | アプリのバージョン表示(例:「4.1.7」)
|
app_build_version | ストリング | アプリケーションのビルド バージョン (例: "1523456")
|
os_version | ストリング | クライアント デバイスの OS バージョン
|
装置名 | ストリング | クライアント デバイスの名前 (「Google Pixel」など) |
国 | ストリング | イベントが行われた国の 2 文字の国コード (たとえば、"US"、または不明な国を表す "ZZ") |
キャリア | ストリング | クライアント デバイスのキャリア |
radio_type | ストリング | イベントが発生したときにアクティブだった無線の種類 (「WIFI」など) |
カスタム属性 | ARRAY<RECORD> | このイベントに関連付けられたすべてのカスタム属性 |
custom_attributes.key | ストリング | カスタム属性のキー |
custom_attributes.value | ストリング | カスタム属性の値 |
イベントタイプ | ストリング | イベントのタイプ。可能な値:
|
イベント名 | ストリング | イベント名
|
親トレース名 | ストリング | トレース メトリックを運ぶ親トレースの名前TRACE_METRIC にのみ存在 |
trace_info | 記録 | DURATION_TRACE 、 SCREEN_TRACE 、およびTRACE_METRIC にのみ存在 |
trace_info.duration_us | int64 |
|
trace_info.screen_info | 記録 | SCREEN_TRACE にのみ存在 |
trace_info.screen_info.slow_frame_ratio | float64 | このスクリーン トレースの遅いフレームの比率 (0 ~ 1) (たとえば、値 0.05 は、このスクリーン インスタンスのフレームの 5% がレンダリングに 16 ミリ秒以上かかったということを意味します) |
trace_info.screen_info.frozen_frame_ratio | float64 | このスクリーン トレースのフリーズ フレームの比率 (0 ~ 1) (たとえば、値 0.05 は、このスクリーン インスタンスのフレームの 5% がレンダリングに 700 ミリ秒以上かかったということを意味します) |
trace_info.metric_info | 記録 | TRACE_METRIC にのみ存在 |
trace_info.metric_info.metric_value | int64 | トレース メトリックの値 |
ネットワーク情報 | 記録 | 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 で実行できるクエリの例を示します。
国別の平均アプリ起動レイテンシの内訳を表示する
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
という名前のカスタム属性と、キャッシュ ヒットの場合は1
に、キャッシュ ミスの場合は0
に設定されるcache-hit
という名前のカスタム メトリック ( TRACE_METRIC
) を使用して、ディスクからロードするためのカスタム コード トレースをインストルメント化したと想定しています。
たとえば、ディスクから 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 サンドボックスをご覧ください。