Puoi esportare i dati di Performance Monitoring dalle app per Apple e Android in BigQuery per ulteriori analisi. BigQuery ti consente di analizzare i dati utilizzando SQL di BigQuery, esportarli in un altro provider cloud e persino utilizzarli per i tuoi modelli di ML personalizzati.
Attiva l'esportazione di 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 abiliti l'esportazione di BigQuery per Performance Monitoring, si verifica quanto segue:
Firebase esporta una copia dei tuoi dati esistenti in BigQuery. La propagazione iniziale dei dati per l'esportazione può richiedere fino a 48 ore.
- Puoi pianificare manualmente i backfill dei dati fino agli ultimi 30 giorni o per la data più recente in cui hai attivato l'esportazione di BigQuery (a seconda di quale sia la più recente).
Dopo la creazione del set di dati, la località non può essere modificata, ma puoi copiarlo in un'altra posizione o spostarlo (ricrearlo) manualmente in un'altra posizione. Per saperne di più, consulta Modificare la posizione del set di dati.
Firebase configura sincronizzazioni regolari dei dati dal progetto Firebase a BigQuery. Queste operazioni di esportazione giornaliere di solito terminano 24 ore dopo la pianificazione.
Per impostazione predefinita, tutte le app del progetto sono collegate a BigQuery. Eventuali app aggiunte in un secondo momento al progetto vengono collegate automaticamente a BigQuery. Puoi gestire le app che inviano dati.
Per disattivare l'esportazione di 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 di rendimento che può essere uno dei seguenti:
Traccia della 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 personalizzate fornite dallo sviluppatore.
event_type
èDURATION_TRACE
event_name
è uguale al nome della traccia
Metrica traccia: metriche personalizzate associate alle tracce di codice personalizzato instrumentate dallo sviluppatore
event_type
èTRACE_METRIC
event_name
è il nome della metricaparent_trace_name
è il nome della traccia che contiene questa metrica
Traccia schermo: tracce che coprono l'intera vita di una schermata (tracce di rendering della schermata).
event_type
èSCREEN_TRACE
event_name
è il prefisso_st_
e il nome effettivo della schermata
Richiesta di rete: tracce per l'intera durata di una richiesta di rete (tracce delle richieste di rete HTTP)
event_type
èNETWORK_REQUEST
event_name
è il pattern classificato dell'URL della richiesta di rete
Ogni evento di rendimento contiene gli attributi dell'evento (ad esempio il paese e l'operatore del dispositivo client), nonché informazioni specifiche dell'evento:
- Le tracce della durata, le metriche delle tracce e le tracce dello schermo contengono
trace_info
- Le metriche delle tracce contengono
trace_info.metric_info
- Le tracce dello schermo contengono
trace_info.screen_info
- Le tracce di rete contengono
network_info
Schema dei dati dettagliati
Nome campo | Tipo | Descrizione |
---|---|---|
event_timestamp | timestamp | Timestamp dall'epoca di inizio dell'evento sul dispositivo client (inizio traccia, inizio rete e così via) |
app_display_version | stringa | Versione dell'applicazione visualizzata (ad esempio "4.1.7")
|
app_build_version | stringa | Versione di compilazione 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 di due lettere del paese da cui si è verificato l'evento (ad esempio "US" o "ZZ" per paese sconosciuto) |
corriere | stringa | Operatore del dispositivo client |
radio_type | stringa | Tipo di radio attivo quando si è verificato l'evento (ad es. "WIFI") |
attributi_personalizzati | ARRAY<RECORD> | Tutti gli attributi personalizzati associati a questo evento |
custom_attributes.key | stringa | Chiave dell'attributo personalizzato |
attributi_personalizzati.valore | 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 tra frame lenti per questa traccia dello schermo, compreso tra 0 e 1 (ad esempio, un valore di 0,05 indica che il 5% dei frame per questa istanza dello schermo ha richiesto più di 16 ms per il rendering) |
trace_info.screen_info.frozen_frame_ratio | float64 | Rapporto tra frame bloccati per questa traccia dello schermo, compreso tra 0 e 1 (ad esempio, un valore di 0,05 indica che il 5% dei frame per questa istanza dello schermo 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 di 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à di misura: 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 termine dell'invio della richiesta di reteUnità: microsecondo |
network_info.response_initiated_time_us | int64 | Microsecondi dopo event_timestamp quando viene avviata la risposta della reteUnità: microsecondo |
network_info.response_completed_time_us | int64 | Microsecondi dopo event_timestamp al termine della risposta della reteUnità: microsecondo |
Che cosa puoi fare con i dati esportati?
Le sezioni seguenti forniscono esempi di query che puoi eseguire in BigQuery sui dati di Performance Monitoring esportati.
Corrispondenza con i dati visualizzati nella console
La dashboard di Firebase aggrega i dati giornalieri nel fuso orario America/Los_Angeles
.
Per ottenere lo stesso risultato visualizzato nella console, le funzioni di data devono impostare esplicitamenteAmerica/Los_Angeles
come fuso orario, altrimenti la funzione di data utilizzeràper impostazione predefinita 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;
Visualizza 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 di frame bloccati e la quantità di tempo che gli utenti trascorrono su ogni schermata dell'app quando utilizzano tipi di segnali radio diversi (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;
Percentuale di successi della cache di computing per il caricamento di determinati tipi di file dal disco
Questa analisi presuppone che tu abbia eseguito l'instrumentazione di una traccia di codice personalizzata per il caricamento dal
disco con un attributo personalizzato denominato file-extension
e una metrica personalizzata (TRACE_METRIC
) denominata cache-hit
impostata su 1
in caso di hit della cache e su 0
in caso di mancata corrispondenza della cache.
Ad esempio, puoi calcolare il tasso di hit 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);
Controlla l'ora del giorno in cui gli utenti inviano richieste di rete
Ad esempio, puoi controllare a che 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;
Porta i tuoi dati di Performance Monitoring ovunque
A volte potresti voler accedere ai tuoi 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.
Per esportare i tuoi dati:
Utilizzo dell'interfaccia utente web di BigQuery
Eseguire il comando dell'interfaccia a riga di comando
bq extract
Invio di un job di estrazione tramite l'API o le librerie client.
Prezzi
L'esportazione dei dati da Performance Monitoring non prevede costi e BigQuery offre generosi limiti di utilizzo senza costi. Per informazioni dettagliate, consulta i prezzi di BigQuery o la sandbox BigQuery.