Du kannst Performance Monitoring-Daten aus Apple- und Android-Apps exportieren in Unter BigQuery Analyse. Mit BigQuery können Sie die Daten mithilfe von BigQuery, exportieren Sie sie zu einem anderen Cloud-Anbieter und verwenden Sie sogar Daten für Ihre benutzerdefinierten ML-Modelle.
BigQuery-Export aktivieren
Gehen Sie zur Integrationen Seite in der Firebase-Konsole auf und klicken Sie dann in der BigQuery-Konsole auf Verknüpfen .
Folgen Sie der Anleitung auf dem Bildschirm, um BigQuery zu aktivieren.
Wenn Sie den Export von BigQuery für Performance Monitoring aktivieren, geschieht Folgendes: tritt auf:
Firebase exportiert eine Kopie Ihrer vorhandenen Daten nach BigQuery Die Erstübertragung der Daten für den Export kann bis zu 48 Stunden dauern.
- Sie können Daten-Backfill manuell planen bis zu den letzten 30 Tagen oder bis zum aktuellsten Datum, wenn Sie BigQuery aktiviert haben Export (je nachdem, was aktuell 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 Weitere Informationen finden Sie unter Dataset-Speicherort ändern.
Firebase richtet regelmäßige Synchronisierungen der Daten aus Ihrem Firebase-Projekt mit BigQuery Diese täglichen Exportvorgänge sind in der Regel innerhalb von 24 Stunden abgeschlossen nachdem sie geplant wurden.
Standardmäßig sind alle Apps in Ihrem Projekt mit BigQuery verknüpft. Beliebig Apps, die Sie dem Projekt später hinzufügen, werden automatisch mit BigQuery 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 Anwendung im Projekt wird beim Export eine Tabelle erstellt, die alle Performance-Ereignisse erfasst. Jede Zeile in der Tabelle steht für ein einzelnes Leistungsereignis Folgende Werte sind möglich:
Dauer-Trace: Traces, die standardmäßig den Messwert der „Dauer“, die App-Start, App-Vordergrund und App-Hintergrund sowie alle vom Entwickler instrumentierten benutzerdefinierten Code-Traces
event_type
istDURATION_TRACE
event_name
ist mit dem Trace-Namen 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 über die Lebensdauer eines Bildschirms (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 Performance-Ereignis enthält Attribute des Ereignisses (wie Land und Netzbetreiber 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 Epoche, als das Ereignis auf dem Clientgerät gestartet wurde (Trace-Start, Netzwerkstart usw.) |
App-Displayversion | String | Version der Anwendung anzeigen (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 | Der zweistellige Ländercode des Landes, aus dem das Ereignis stammt stattfand (z. B. „US“ oder „ZZ“ für unbekanntes Land) |
Transportunternehmen | String | Mobilfunkanbieter des Clientgeräts |
Radiotyp | String | Aktiver Funktyp, als das Ereignis eingetreten ist (z. B. „WLAN“) |
Benutzerdefinierte Attribute | ARRAY<DATENSATZ> | Alle benutzerdefinierten Attribute, die diesem Ereignis zugeordnet sind |
custom_attributes.key | String | Schlüssel des benutzerdefinierten Attributs |
custom_attributes.value [Benutzerdefinierter_Attribut.Wert] | String | Wert des benutzerdefinierten Attributs |
Ereignistyp | String | Art 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 | RECORD | Nur vorhanden für DURATION_TRACE ,
SCREEN_TRACE und TRACE_METRIC |
Trace_info.duration_us | int64 |
|
Trace_info.screen_info | RECORD | Nur für SCREEN_TRACE vorhanden |
Trace_info.screen_info.slow_frame_ratio | Gleitkommazahl64 | Verhältnis der langsamen Frames für diesen Bildschirm-Trace, zwischen 0 und 1 Ein Wert von 0,05 bedeutet beispielsweise, dass 5% der Frames für diesen Bildschirm für das Rendering der Instanz mehr als 16 ms benötigt) |
Trace_info.screen_info.frozen_frame_ratio | float64 | Verhältnis von eingefrorenen Frames für diesen Bildschirm-Trace (zwischen 0 und 1) (Beispiel: Ein Wert von 0, 05 bedeutet 5% der Frames für diesen Bildschirm). zum Rendern der Instanz mehr als 700 ms benötigt) |
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 (Netzwerkinfo.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“) |
netzwerk_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 bei Netzwerkanfrage
Senden abgeschlossenEinheit: 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 bei Netzwerkantwort
ist abgeschlossenEinheit: Mikrosekunde |
Was können Sie mit den exportierten Daten tun?
In den folgenden Abschnitten finden Sie Beispiele für Abfragen, die Sie in BigQuery gegen Ihre exportierten Performance Monitoring-Daten.
Aufschlüsselung der durchschnittlichen Latenz beim Starten von Apps nach Land ansehen
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 der eingefrorenen Frames zur Menge der wie viel Zeit Nutzer auf den einzelnen Bildschirmen Ihrer App verbringen, wenn sie verschiedene Funkschnittstellen verwenden, z. B. 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
Laufwerk mit dem benutzerdefinierten Attribut file-extension
und einem benutzerdefinierten Messwert (ein
TRACE_METRIC
) mit dem Namen cache-hit
. Dieser Wert ist bei Cache-Treffer auf 1
gesetzt und bei Cache-Treffern auf 0
.
Cache-Fehlers.
Beispielsweise können Sie die Cache-Trefferquote für das Laden von PNG-Dateien berechnen. Von Datenträger:
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);
Tageszeit ermitteln, zu der Nutzer Netzwerkanfragen senden
Sie können z. B. sehen, zu welcher Tageszeit Nutzer aus den USA Netzwerkanfragen von 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 überallhin mitnehmen
Manchmal möchten Sie auf Ihre Performance Monitoring-Daten serverseitig zugreifen oder sie per Push-Funktion übertragen eine andere Drittanbieterlösung. Der Export von Daten ist derzeit kostenlos.
Sie haben folgende Möglichkeiten, Ihre Daten zu exportieren:
BigQuery-Web-UI verwenden
Befehl
bq extract
in der Befehlszeile ausführenEinreichen eines Extrahierungsjob über die API oder die Clientbibliotheken.
Preise
Für den Export von Daten aus Performance Monitoring und BigQuery fallen keine Kosten an bietet großzügige kostenlose Nutzungslimits. Detaillierte Informationen finden Sie unter BigQuery-Preise oder die BigQuery-Sandbox.