Sie können Performance Monitoring Daten aus Apple- und Android-Apps zur weiteren Analyse nach BigQuery exportieren. BigQuery ermöglicht Ihnen die Analyse der Daten mit BigQuery SQL, den Export zu einem anderen Cloud-Anbieter und sogar die Verwendung der Daten für Ihre benutzerdefinierten ML-Modelle.
BigQuery-Export aktivieren
Rufen Sie in der Firebase Konsole die Integrationen Seite auf und klicken Sie auf der Karte **BigQuery** auf **Verknüpfen**.
Folgen Sie der Anleitung auf dem Bildschirm, um BigQuery zu aktivieren.
Wenn Sie den BigQuery Export für Performance Monitoring aktivieren, geschieht Folgendes:
Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery. Die erste Übertragung der Daten für den Export kann bis zu 48 Stunden dauern.
- Sie können Daten-Backfills manuell planen für die letzten 30 Tage oder für das letzte Datum, an dem Sie den BigQuery Export aktiviert haben (je nachdem, was später liegt).
Nachdem das Dataset erstellt wurde, kann der Standort nicht mehr geändert werden. Sie können aber das Dataset an einen anderen Standort kopieren oder es manuell verschieben, d. h. an einem anderen Standort neu erstellen. Weitere Informationen finden Sie unter Dataset-Standort ändern.
Firebase richtet regelmäßige Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt nach BigQuery ein. Diese täglichen Exportvorgänge sind in der Regel innerhalb von 24 Stunden nach der Planung abgeschlossen.
Standardmäßig werden alle Apps in Ihrem Projekt mit BigQuery verknüpft. Alle Apps, die Sie dem Projekt später hinzufügen, werden ebenfalls automatisch mit BigQuery verknüpft. Sie können festlegen, welche Apps Daten senden.
Wenn Sie den BigQuery Export deaktivieren möchten, heben Sie die Verknüpfung Ihres Projekts auf in der Firebase Konsole.
Welche Daten werden nach BigQuery exportiert?
Für jede App im Projekt wird beim Export eine Tabelle erstellt, die alle erfassten Leistungsereignisse enthält. Jede Zeile in der Tabelle ist ein einzelnes Leistungsereignis, das eines der folgenden sein kann:
Dauer-Trace : Traces, die standardmäßig den Messwert „Dauer“ erfassen, einschließlich App-Start, App im Vordergrund und App im Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces
event_typeistDURATION_TRACEevent_nameist dasselbe wie der Trace-Name
Trace-Messwert : Benutzerdefinierte Messwerte, die mit vom Entwickler instrumentierten benutzerdefinierten Code-Traces verknüpft sind
event_typeistTRACE_METRICevent_nameist der Name des Messwertsparent_trace_nameist der Trace-Name, der diesen Messwert enthält
Bildschirm-Trace : Traces, die die Lebensdauer eines Bildschirms umfassen (Bildschirm-Rendering-Traces)
event_typeistSCREEN_TRACEevent_nameist das Präfix_st_plus der tatsächliche Bildschirmname
Netzwerkanfrage : Traces, die die Lebensdauer einer Netzwerkanfrage umfassen (HTTP-Netzwerkanfrage-Traces)
event_typeistNETWORK_REQUESTevent_nameist das kategorisierte Muster der Netzwerkanfrage-URL
Jedes Leistungsereignis enthält Attribute des Ereignisses (z. B. Land und Mobilfunkanbieter des Clientgeräts) sowie ereignisspezifische Informationen:
- Dauer-Traces, Trace-Messwerte und Bildschirm-Traces enthalten
trace_info. - Trace-Messwerte enthalten
trace_info.metric_info. - Bildschirm-Traces enthalten
trace_info.screen_info. - Netzwerk-Traces enthalten
network_info.
Detailliertes Datenschema
| Feldname | Typ | Beschreibung |
|---|---|---|
| event_timestamp | timestamp | Zeitstempel seit der Epoche, als das Ereignis auf dem Clientgerät gestartet wurde (Trace-Start, Netzwerkstart usw.) |
| app_display_version | string | Anzeigeversion der Anwendung (z. B. „4.1.7“)
|
| app_build_version | string | Build-Version der Anwendung (z. B. „1523456“)
|
| os_version | string | Betriebssystemversion des Clientgeräts
|
| device_name | string | Name des Clientgeräts (z. B. „Google Pixel“) |
| country | string | Ländercode aus zwei Buchstaben des Landes, aus dem das Ereignis stammt (z. B. „US“ oder „ZZ“ für unbekanntes Land) |
| carrier | string | Mobilfunkanbieter des Clientgeräts |
| radio_type | string | Aktiver Funktyp, als das Ereignis stattgefunden hat (z. B. „WLAN“) |
| custom_attributes | ARRAY<RECORD> | Alle benutzerdefinierten Attribute, die an dieses Ereignis angehängt sind |
| custom_attributes.key | string | Schlüssel des benutzerdefinierten Attributs |
| custom_attributes.value | string | Wert des benutzerdefinierten Attributs |
| event_type | string | Typ des Ereignisses; mögliche Werte:
|
| event_name | string | Name des Ereignisses
|
| parent_trace_name | string | Name des übergeordneten Traces, der den Trace-Messwert enthält Nur für TRACE_METRIC vorhanden |
| trace_info | RECORD | Nur für DURATION_TRACE,
SCREEN_TRACE, und TRACE_METRIC vorhanden |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | RECORD | Nur für SCREEN_TRACE vorhanden |
| trace_info.screen_info.slow_frame_ratio | float64 | Verhältnis der langsamen Frames für diesen Bildschirm-Trace zwischen 0 und 1 (Ein Wert von 0, 05 bedeutet beispielsweise, dass das Rendering von 5% der Frames für diese Bildschirminstanz länger als 16 ms gedauert hat) |
| trace_info.screen_info.frozen_frame_ratio | float64 | Verhältnis der eingefrorenen Frames für diesen Bildschirm-Trace zwischen 0 und 1 (Ein Wert von 0, 05 bedeutet beispielsweise, dass das Rendering von 5% der Frames für diese Bildschirminstanz länger als 700 ms gedauert hat) |
| trace_info.metric_info | RECORD | Nur für TRACE_METRIC vorhanden |
| trace_info.metric_info.metric_value | int64 | Wert des Trace-Messwerts |
| network_info | RECORD | Nur für NETWORK_REQUEST vorhanden |
| network_info.response_code | int64 | HTTP-Antwortcode für die Netzwerkantwort (z. B. 200, 404) |
| network_info.response_mime_type | string | MIME-Typ der Netzwerkantwort (z. B. „text/html“) |
| network_info.request_http_method | string | HTTP-Methode der Netzwerkanfrage (z. B. „GET“ oder „POST“) |
| network_info.request_payload_bytes | int64 | Größe der Nutzlast der Netzwerkanfrage Einheit: Byte |
| network_info.response_payload_bytes | int64 | Größe der Nutzlast der Netzwerkantwort Einheit: Byte |
| network_info.request_completed_time_us | int64 | Mikrosekunden nach event_timestamp, wenn das Senden der Netzwerkanfrage abgeschlossen istEinheit: Mikrosekunde |
| network_info.response_initiated_time_us | int64 | Mikrosekunden nach event_timestamp, wenn die Netzwerkantwort
initiiert wird Einheit: Mikrosekunde |
| network_info.response_completed_time_us | int64 | Mikrosekunden nach event_timestamp, wenn die Netzwerkantwort
abgeschlossen istEinheit: Mikrosekunde |
Was können Sie mit den exportierten Daten tun?
In den folgenden Abschnitten finden Sie Beispiele für Abfragen, die Sie in BigQuery für Ihre exportierten Performance Monitoring Daten ausführen können.
Daten in der Konsole abgleichen
Im Firebase-Dashboard werden die Tagesdaten in der Zeitzone America/Los_Angeles zusammengefasst.
Damit die Daten mit denen in der Konsole übereinstimmen, muss in den Datumsfunktionen explizit
America/Los_Angeles als Zeitzone festgelegt werden. Andernfalls wird die Datumsfunktion
standardmäßig UTC verwenden.
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;
Durchschnittliche App-Startlatenz nach Land aufschlüsseln
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;
Verhältnis der eingefrorenen Frames unter verschiedenen Bedingungen prüfen
Sie können beispielsweise das Verhältnis der eingefrorenen Frames zusammen mit der Zeit prüfen, die Nutzer auf den einzelnen Bildschirmen Ihrer App verbringen, wenn sie verschiedene Funktypen verwenden (WLAN, 4G usw.).
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;
Cache-Trefferrate für das Laden bestimmter Dateitypen von der Festplatte berechnen
Bei dieser Analyse wird davon ausgegangen, dass Sie einen benutzerdefinierten Code-Trace für das Laden von der Festplatte mit einem benutzerdefinierten Attribut namens file-extension und einem benutzerdefinierten Messwert (TRACE_METRIC) namens cache-hit instrumentiert haben, der auf 1 gesetzt ist, wenn ein Cache-Treffer vorliegt, und auf 0, wenn kein Cache-Fehler vorliegt.
Sie können beispielsweise die Cache-Trefferrate für das Laden von PNG-Dateien von der Festplatte berechnen:
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);
Uhrzeit prüfen, zu der Nutzer Netzwerkanfragen senden
Sie können beispielsweise prüfen, zu welcher Uhrzeit Nutzer aus Deutschland Netzwerkanfragen aus Ihrer App senden:
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 Daten überall verwenden
Manchmal möchten Sie serverseitig auf Ihre Performance Monitoring Daten zugreifen oder sie an eine andere Drittanbieterlösung senden. Der Export von Daten ist derzeit kostenlos.
Sie können Ihre Daten auf folgende Weise exportieren:
Über die BigQuery Web-UI
Durch Ausführen des CLI-Befehls
bq extractDurch Senden eines Extraktionsjobs über die API oder die Clientbibliotheken
Preise
Der Export von Daten aus Performance Monitoring ist kostenlos und BigQuery bietet großzügige kostenlose Nutzungslimits. Weitere Informationen finden Sie unter BigQuery Preise oder der BigQuery Sandbox.