Sie können Performance Monitoring-Daten aus Apple- und Android-Apps zur weiteren Analyse in BigQuery exportieren. Mit BigQuery können Sie die Daten mit BigQuery SQL analysieren, sie zu einem anderen Cloud-Anbieter exportieren und sogar für Ihre benutzerdefinierten ML-Modelle verwenden.
BigQuery-Export aktivieren
Rufen Sie in der Firebase-Konsole die Seite Integrationen auf und klicken Sie dann 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 zu BigQuery. Die Erstübertragung der Daten für den Export kann bis zu 48 Stunden dauern.
- Sie können Daten-Backfills manuell planen, und zwar maximal bis zu 30 Tage oder für das jüngste Datum, wenn Sie den Export aus BigQuery aktiviert haben (je nachdem, welches Datum das letzte ist).
Nachdem das Dataset erstellt wurde, kann der Speicherort nicht mehr geändert werden. Sie können das Dataset aber an einen anderen Speicherort kopieren oder es manuell verschieben, d. h. an einem anderen Speicherort neu erstellen. Weitere Informationen finden Sie unter Dataset-Speicherort ändern.
Firebase richtet regelmäßige Synchronisierungen Ihrer Daten aus Ihrem Firebase-Projekt mit BigQuery ein. Diese täglichen Exportvorgänge sind in der Regel innerhalb von 24 Stunden nach der Planung abgeschlossen.
Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft. Alle Anwendungen, die Sie dem Projekt später hinzufügen, werden 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 in der Firebase-Konsole auf.
Welche Daten werden nach BigQuery exportiert?
Für jede App im Projekt wird beim Export eine Tabelle mit allen erfassten Leistungsereignissen erstellt. Jede Zeile in der Tabelle entspricht einem einzelnen Leistungsereignis. Dabei kann es sich um eines der folgenden Ereignisse handeln:
Dauer-Trace: Traces, in denen standardmäßig der Messwert „Dauer“ erfasst wird. Dazu gehören App-Start, App im Vordergrund und App im Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces.
event_type
istDURATION_TRACE
event_name
ist mit dem Namen der Trace-Datei identisch.
Trace-Messwert: Benutzerdefinierte Messwerte, die mit von Entwicklern instrumentierten benutzerdefinierten Code-Traces verknüpft sind
event_type
istTRACE_METRIC
event_name
ist der Name des Messwerts.parent_trace_name
ist der Trace-Name, der diesen Messwert enthält.
Bildschirm-Trace: Traces, die die gesamte Lebensdauer eines Bildschirms umfassen (Bildschirm-Rendering-Traces)
event_type
istSCREEN_TRACE
event_name
ist das Präfix_st_
gefolgt vom tatsächlichen Bildschirmnamen.
Netzwerkanfrage: Traces, die die Lebensdauer einer Netzwerkanfrage umfassen (HTTP-Netzwerkanfrage-Traces)
event_type
istNETWORK_REQUEST
event_name
ist 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-, 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
Schema für detaillierte Daten
Feldname | Typ | Beschreibung |
---|---|---|
event_timestamp | timestamp | Zeitstempel seit der Epoche, zu dem das Ereignis auf dem Clientgerät gestartet wurde (z. B. Trace-Start, Netzwerkstart) |
app_display_version | String | Version der Anwendung anzeigen (z. B. „4.1.7“)
|
app_build_version | String | Buildversion 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 | Zweistelliger Ländercode des Landes, in dem das Ereignis stattfand (z. B. „US“ oder „ZZ“ für ein unbekanntes Land) |
Transportunternehmen | String | Mobilfunkanbieter des Clientgeräts |
radio_type | String | Aktiver Funktyp, als das Ereignis eingetreten ist (z. B. „WLAN“) |
custom_attributes | ARRAY<RECORD> | Alle benutzerdefinierten Attribute, die mit diesem Ereignis verknüpft sind |
custom_attributes.key | String | Schlüssel des benutzerdefinierten Attributs |
custom_attributes.value | String | Wert des benutzerdefinierten Attributs |
Ereignistyp | String | Typ des Ereignisses; mögliche Werte:
|
event_name | String | Name des Ereignisses
|
Übergeordneter_Trace-Name | String | Name des übergeordneten Tracings, das den Trace-Messwert enthält Nur für TRACE_METRIC vorhanden |
Trace-Info | DATENSATZ | Nur vorhanden für DURATION_TRACE , SCREEN_TRACE und TRACE_METRIC |
Trace_info.duration_us | int64 |
|
trace_info.screen_info | DATENSATZ | Nur für SCREEN_TRACE vorhanden |
Trace_info.screen_info.slow_frame_ratio | Gleitkommazahl64 | Verhältnis der langsamen Frames für diesen Bildschirmaufruf 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 (z. B. bedeutet ein Wert von 0,05, dass 5% der Frames für diese Bildschirminstanz mehr als 700 ms gerendert haben) |
Trace_info.metric_info | DATENSATZ | Nur für TRACE_METRIC vorhanden |
trace_info.metric_info.metric_value | int64 | Wert des Trace-Messwerts |
netzwerk_info | DATENSATZ | 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 Netzwerkanfragenutzlast Einheit: Byte |
network_info.response_payload_bytes | int64 | Größe der Netzwerkantwortnutzlast 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 gestartet wirdEinheit: 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 Console abgleichen
Im Firebase-Dashboard werden tägliche Daten in der Zeitzone America/Los_Angeles
zusammengefasst.
Um dem zu entsprechen, was in der Konsole angezeigt wurde, sollten Datumsfunktionen America/Los_Angeles
explizit als Zeitzone festlegen. Andernfalls verwendet die Datumsfunktion standardmäßig 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;
Durchschnittliche Latenz beim App-Start 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 von eingefrorenen Frames unter verschiedenen Bedingungen prüfen
Sie können beispielsweise das Verhältnis von eingefrorenen Frames und der Zeit prüfen, die Nutzer auf jedem Bildschirm 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-Trefferquote zum Laden bestimmter Dateitypen von der Festplatte berechnen
Bei dieser Analyse wird davon ausgegangen, dass Sie einen benutzerdefinierten Code-Trace zum Laden aus dem Laufwerk mit einem benutzerdefinierten Attribut namens file-extension
und einem benutzerdefinierten Messwert (ein TRACE_METRIC
) namens cache-hit
instrumentiert haben, der bei Cache-Treffern auf 1
und bei Cache-Fehlern auf 0
gesetzt ist.
So können Sie beispielsweise die Cache-Trefferrate für das Laden von PNG-Dateien vom Laufwerk 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);
Prüfen, zu welcher Tageszeit Nutzer Netzwerkanfragen stellen
So können Sie beispielsweise prüfen, zu welcher Tageszeit Nutzer aus den USA Netzwerkanfragen über Ihre App stellen:
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 überallhin mitnehmen
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:
BigQuery-Web-UI verwenden
Befehl
bq extract
in der Befehlszeile ausführenDurch Senden eines Extrahierungsjobs über die API oder die Clientbibliotheken
Preise
Der Export von Daten aus Performance Monitoring ist kostenlos und BigQuery bietet großzügige kostenlose Nutzungslimits. Ausführliche Informationen finden Sie in den BigQuery-Preisen oder in der BigQuery-Sandbox.