Puoi esportare i dati Performance Monitoring dalle app Apple e Android in BigQuery per ulteriori analisi. BigQuery ti consente di analizzare i dati utilizzando BigQuery SQL, esportarli in un altro fornitore di servizi cloud e persino utilizzare i dati per i tuoi modelli di machine learning personalizzati.
Attivare l'esportazione BigQuery
Vai alla pagina Integrazioni nella console Firebase, quindi fai clic su Collega nella scheda BigQuery.
Segui le istruzioni sullo schermo per attivare BigQuery.
Quando attivi l'esportazione BigQuery per Performance Monitoring, si verifica quanto segue:
Firebase esporta una copia dei dati esistenti in BigQuery. La propagazione iniziale dei dati per l'esportazione potrebbe richiedere fino a 48 ore.
- Puoi pianificare manualmente i backfill dei dati fino agli ultimi 30 giorni o alla data più recente in cui hai attivato l'BigQuery esportazione (a seconda di quale è più recente).
Dopo la creazione del set di dati, la località non può essere modificata, ma puoi copiare il set di dati in un'altra località oppure spostare (ricreare) manualmente il set di dati in un'altra località. Per saperne di più, consulta Modificare la località del set di dati.
Firebase configura sincronizzazioni regolari dei dati dal progetto Firebase a BigQuery. Queste operazioni di esportazione giornaliere di solito vengono completate entro 24 ore dalla pianificazione.
Per impostazione predefinita, tutte le app del progetto sono collegate a BigQuery. Qualsiasi app che aggiungi in seguito al progetto viene collegata automaticamente a BigQuery. Puoi gestire le app che inviano dati.
Per disattivare l'esportazione BigQuery, scollega il progetto nella console Firebase.
Quali dati vengono esportati in BigQuery?
Per ogni app del progetto, l'esportazione crea una tabella che include tutti gli eventi relativi alle prestazioni acquisiti. Ogni riga della tabella è un singolo evento relativo alle prestazioni che può essere uno dei seguenti:
Traccia di durata : tracce che raccolgono, per impostazione predefinita, la metrica "durata", che include l'avvio dell'app, l'app in primo piano e l'app in background, nonché eventuali tracce di codice personalizzato strumentate dallo sviluppatore
event_typeèDURATION_TRACEevent_nameè uguale al nome della traccia
Metrica della traccia : metriche personalizzate associate a tracce di codice personalizzato strumentate dallo sviluppatore
event_typeèTRACE_METRICevent_nameè il nome della metricaparent_trace_nameè il nome della traccia che contiene questa metrica
Traccia della schermata: tracce che coprono la durata di una schermata (tracce di rendering della schermata)
event_typeèSCREEN_TRACEevent_nameè il prefisso_st_più il nome effettivo della schermata
Richiesta di rete : tracce che coprono la durata di una richiesta di rete (tracce di richieste di rete HTTP)
event_typeèNETWORK_REQUESTevent_nameè il pattern categorizzato dell'URL della richiesta di rete
Ogni evento relativo alle prestazioni contiene attributi dell'evento (ad esempio il paese e l'operatore del dispositivo client), nonché informazioni specifiche dell'evento:
- Le tracce di durata, le metriche delle tracce e le tracce delle schermate contengono
trace_info - Le metriche delle tracce contengono
trace_info.metric_info - Le tracce delle schermate contengono
trace_info.screen_info - Le tracce di rete contengono
network_info
Schema dei dati dettagliato
| Nome campo | Tipo | Descrizione |
|---|---|---|
| event_timestamp | timestamp | Timestamp dall'epoca in cui l'evento è iniziato sul dispositivo client (inizio della traccia, inizio della rete e così via) |
| app_display_version | stringa | Versione di visualizzazione dell'applicazione (ad esempio "4.1.7")
|
| app_build_version | stringa | Versione build dell'applicazione (ad esempio "1523456")
|
| os_version | stringa | Versione del sistema operativo del dispositivo client
|
| device_name | stringa | Nome del dispositivo client (ad esempio "Google Pixel") |
| country | stringa | Codice paese a due lettere del paese da cui si è svolto l'evento (ad esempio "US" o "ZZ" per paese sconosciuto) |
| carrier | stringa | Operatore del dispositivo client |
| radio_type | stringa | Tipo di radio attivo quando si è verificato l'evento (ad esempio "WIFI") |
| custom_attributes | ARRAY<RECORD> | Tutti gli attributi personalizzati collegati a questo evento |
| custom_attributes.key | stringa | Chiave dell'attributo personalizzato |
| custom_attributes.value | stringa | Valore dell'attributo personalizzato |
| event_type | stringa | Tipo di evento; valori possibili:
|
| event_name | stringa | Nome dell'evento
|
| parent_trace_name | stringa | Nome della traccia principale che contiene la metrica della traccia Presente solo per TRACE_METRIC |
| trace_info | RECORD | Presente solo per DURATION_TRACE,
SCREEN_TRACE, e TRACE_METRIC |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | RECORD | Presente solo per SCREEN_TRACE |
| trace_info.screen_info.slow_frame_ratio | float64 | Rapporto di frame lenti per questa traccia della schermata, compreso tra 0 e 1 (ad esempio, un valore di 0,05 significa che il 5% dei frame per questa istanza della schermata ha richiesto più di 16 ms per il rendering) |
| trace_info.screen_info.frozen_frame_ratio | float64 | Rapporto di frame bloccati per questa traccia della schermata, compreso tra 0 e 1 (ad esempio, un valore di 0,05 significa che il 5% dei frame per questa istanza della schermata ha richiesto più di 700 ms per il rendering) |
| trace_info.metric_info | RECORD | Presente solo per TRACE_METRIC |
| trace_info.metric_info.metric_value | int64 | Valore della metrica della traccia |
| network_info | RECORD | Presente solo per NETWORK_REQUEST |
| network_info.response_code | int64 | Codice di risposta HTTP per la risposta di rete (ad esempio 200, 404) |
| network_info.response_mime_type | stringa | Tipo MIME della risposta di rete (ad esempio "text/html") |
| network_info.request_http_method | stringa | Metodo HTTP della richiesta di rete (ad esempio "GET" o "POST") |
| network_info.request_payload_bytes | int64 | Dimensioni del payload della richiesta di rete Unità: byte |
| network_info.response_payload_bytes | int64 | Dimensioni del payload della risposta di rete Unità: byte |
| network_info.request_completed_time_us | int64 | Microsecondi dopo event_timestamp al completamento dell'invio della richiesta di reteUnità: microsecondo |
| network_info.response_initiated_time_us | int64 | Microsecondi dopo event_timestamp all'avvio della risposta di rete
Unità: microsecondo |
| network_info.response_completed_time_us | int64 | Microsecondi dopo event_timestamp al completamento della risposta di rete
Unità: microsecondo |
Che cosa puoi fare con i dati esportati?
Le sezioni seguenti offrono esempi di query che puoi eseguire in BigQuery sui dati Performance Monitoring esportati.
Corrispondenza dei dati visualizzati nella console
La dashboard di Firebase aggrega i dati giornalieri nel fuso orario America/Los_Angeles.
Per far corrispondere i dati visualizzati nella console, le funzioni data devono impostare esplicitamente
America/Los_Angeles come fuso orario, altrimenti la funzione data
utilizzerà per impostazione predefinita il fuso orario 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;
Visualizzare la suddivisione della latenza media di avvio dell'app per paese
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;
Controllare il rapporto tra frame bloccati e varie condizioni
Ad esempio, puoi controllare il rapporto tra frame bloccati e la quantità di tempo che gli utenti trascorrono su ogni schermata dell'app quando utilizzano diversi tipi di radio (Wi-Fi, 4G e così via).
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;
Calcolare la percentuale di successo della cache per il caricamento di determinati tipi di file dal disco
Questa analisi presuppone che tu abbia strumentato una traccia di codice personalizzato per il caricamento dal disco con un attributo personalizzato denominato file-extension e una metrica personalizzata (una TRACE_METRIC) denominata cache-hit impostata su 1 in caso di successo della cache e su 0 in caso di fallimento della cache.
Ad esempio, puoi calcolare il successo della cache per il caricamento di file PNG dal disco:
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);
Controllare l'ora del giorno in cui gli utenti inviano richieste di rete
Ad esempio, puoi controllare a quale ora del giorno gli utenti degli Stati Uniti inviano richieste di rete dalla tua app:
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;
Portare i dati Performance Monitoring ovunque
A volte vuoi accedere ai dati Performance Monitoring lato server o inviarli a un'altra soluzione di terze parti. Al momento non è previsto alcun costo per l'esportazione dei dati.
Puoi esportare i dati:
Utilizzando l'interfaccia utente webBigQuery
Eseguendo il comando CLI
bq extractInviando un job di estrazione tramite l'API o le librerie client.
Prezzi
Non è previsto alcun costo per l'esportazione dei dati da Performance Monitoring e BigQuery offre limiti di utilizzo senza costi generosi. Per informazioni dettagliate, consulta i BigQuery prezzi o la BigQuery sandbox.