Puedes exportar datos de Performance Monitoring desde apps para Apple y Android a BigQuery para realizar un análisis más detallado. BigQuery te permite analizar los datos con BigQuery SQL, exportarlos a otro proveedor de servicios en la nube o usarlos en tus modelos de AA personalizados.
Habilita la exportación de BigQuery
Ve a la página Integraciones de Firebase console y haz clic en Vincular en la tarjeta BigQuery.
Sigue las instrucciones que aparecen en la pantalla para habilitar BigQuery.
Cuando habilitas la exportación de BigQuery para Performance Monitoring, ocurre lo siguiente:
Firebase exporta una copia de tus datos existentes a BigQuery. La propagación inicial de los datos que se van a exportar puede demorar hasta 48 horas en completarse.
- Puedes programar de forma manual el reabastecimiento de datos hasta los últimos 30 días o la fecha más reciente en la que habilitaste BigQuery Export (la opción que sea más reciente).
Después de crear el conjunto de datos, no se puede cambiar la ubicación, pero puedes copiar el conjunto de datos en una ubicación diferente o moverlo manualmente (volver a crearlo) a otra ubicación. Para obtener más información, consulta Cambia la ubicación del conjunto de datos.
Firebase configura sincronizaciones frecuentes de los datos del proyecto de Firebase con BigQuery. Por lo general, estas operaciones de exportación diaria finalizan 24 horas después de su programación.
De forma predeterminada, todas las apps de tu proyecto están vinculadas a BigQuery. Todas las apps que agregues al proyecto se vincularán automáticamente a BigQuery. Puedes administrar qué apps envían datos.
Para desactivar la exportación a BigQuery, desvincula el proyecto en Firebase console.
¿Qué datos se exportan a BigQuery?
La exportación crea una tabla en cada app del proyecto que incluye todos los eventos de rendimiento captados. Cada fila de la tabla es un evento de rendimiento único que puede ser alguno de los que se presentan a continuación:
Seguimiento de duración: Seguimiento que recopila, de forma predeterminada, la métrica “duración”, que incluye el inicio de la app, el de inicio de la app y el uso de la app en segundo plano como seguimientos de código personalizado instrumentados del desarrollador
event_type
esDURATION_TRACE
event_name
es el mismo que el nombre del seguimiento
Métrica de seguimiento: Métricas personalizadas asociadas con seguimientos de código personalizado instrumentados por el desarrollador.
event_type
esTRACE_METRIC
event_name
es el nombre de la métricaparent_trace_name
es el nombre del seguimiento que contiene esta métrica
Seguimiento de pantalla: Seguimientos que abarcan la duración de una pantalla (seguimiento de procesamiento de pantalla)
event_type
esSCREEN_TRACE
event_name
es el prefijo_st_
junto con el nombre real de la pantalla
Solicitud de red: Seguimientos que abarcan la vida útil de una solicitud de red (seguimientos de solicitudes de red HTTP).
event_type
esNETWORK_REQUEST
event_name
es el patrón clasificado de la URL de la solicitud de red.
Cada evento de rendimiento contiene atributos como el país y el proveedor del dispositivo del cliente, así como información específica del evento, como se muestra a continuación:
- Los seguimientos de duración, las métricas de seguimiento y los seguimientos de pantalla contienen
trace_info
. - Las métricas de seguimiento contienen
trace_info.metric_info
- Los seguimientos de la pantalla contienen
trace_info.screen_info
- Los seguimientos de la red contienen
network_info
Esquema detallado de datos
Nombre del campo | Tipo | Descripción |
---|---|---|
event_timestamp | timestamp | Marca de tiempo desde el punto de inicio cuando comenzó el evento en el dispositivo del cliente (inicio del seguimiento, inicio de red, etcétera.) |
app_display_version | string | La versión de la pantalla de la aplicación (por ejemplo, “4.1.7”)
|
app_build_version | string | La versión compilada de la aplicación (por ejemplo, “1523456”)
|
os_version | string | La versión del SO del dispositivo del cliente
|
device_name | string | Nombre del dispositivo del cliente (por ejemplo, “Google Pixel”) |
País | string | Código de país de dos letras del lugar donde ocurrió el evento (por ejemplo, “US”, o “ZZ” para un país desconocido) |
proveedor | string | Proveedor del dispositivo del cliente |
radio_type | string | Tipo de radio activa cuando ocurrió el evento (por ejemplo, “Wi-Fi”) |
custom_attributes | ARREGLO<RECORD> | Todos los atributos personalizados adjuntados a este evento |
custom_attributes.key | string | Clave del atributo personalizado |
custom_attributes.value | string | Valor del atributo personalizado |
event_type | string | Valores posibles según el tipo de evento:
|
event_name | string | Nombre del evento
|
parent_trace_name | string | Nombre del seguimiento superior que lleva la métrica de seguimiento Presente únicamente para TRACE_METRIC |
trace_info | RECORD | Presente únicamente para DURATION_TRACE , SCREEN_TRACE y TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | Presente únicamente para SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | La proporción de fotogramas lentos para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0.05 significa que el 5% de los fotogramas de esta instancia de pantalla tomaron más de 16 ms en procesarse). |
trace_info.screen_info.frozen_frame_ratio | float64 | La proporción de los fotogramas congelados para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0.05 significa que el 5% de los fotogramas de esta instancia de pantalla tomaron más de 700 ms en procesarse). |
trace_info.metric_info | RECORD | Presente únicamente para TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Valor de la métrica de seguimiento |
network_info | RECORD | Presente únicamente para NETWORK_REQUEST |
network_info.response_code | int64 | Código de respuesta HTTP para la respuesta de red (por ejemplo, 200, 404) |
network_info.response_mime_type | string | Tipo de respuesta de red MIME (por ejemplo, “text/html”) |
network_info.request_http_method | string | Método HTTP de la solicitud de red (por ejemplo, “GET” o “POST”) |
network_info.request_payload_bytes | int64 | Tamaño de la carga útil de la solicitud de red Unidad: byte |
network_info.response_payload_bytes | int64 | Tamaño de la carga útil de la respuesta de red Unidad: byte |
network_info.request_completed_time_us | int64 | Microsegundos luego de la event_timestamp cuando se completa el envío de la solicitud de redUnidad: microsegundo |
network_info.response_initiated_time_us | int64 | Microsegundos luego de la event_timestamp cuando se completa la respuesta de redUnidad: microsegundo |
network_info.response_completed_time_us | int64 | Microsegundos luego de event_timestamp cuando se completa la respuesta de redUnidad: microsegundo |
¿Qué puedes hacer con los datos exportados?
En las siguientes secciones, se ofrecen ejemplos de consultas que puedes ejecutar en BigQuery con tus datos de Performance Monitoring exportados.
Haz coincidir los datos que se ven en la consola
El panel de Firebase agrega datos diarios en la zona horaria de America/Los_Angeles
.
Para que coincida con lo que se vio en la consola, las funciones de fecha deben configurar America/Los_Angeles
de forma explícita
como la zona horaria; de lo contrario, la función de fecha
usará UTC de forma predeterminada.
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;
Mira el desglose de la latencia de inicio promedio de la app por país
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;
Comprueba la proporción de los marcos congelados en relación con varios estados
Por ejemplo, puedes comprobar la proporción de los marcos congelados junto con el tiempo que los usuarios pasan en cada pantalla de tu app cuando están en diferentes tipos de radio (Wi-Fi, 4G, etc.) de la siguiente forma:
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;
Calcula la tasa de aciertos de caché para la descarga de algunos tipos de archivos desde el disco
En este análisis, se da por sentado que instrumentaste un seguimiento de código personalizado para cargar desde
el disco con un atributo personalizado llamado file-extension
y una métrica personalizada (una
TRACE_METRIC
) llamada cache-hit
configurada como 1
si el acierto de caché y 0
si
es un error de caché.
Por ejemplo, puedes calcular la tasa de aciertos de caché para descargar archivos PNG desde el disco de la siguiente forma:
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);
Comprueba el momento del día en que los usuarios envían solicitudes de red
Por ejemplo, puedes comprobar el momento del día en que los usuarios de Estados Unidos envían solicitudes de red desde tu 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;
Lleva tus datos de Performance Monitoring a cualquier lugar
Se recomienda usar esta opción cuando quieras acceder a tus datos de Performance Monitoring en el servidor o cuando quieras enviarlos a otra solución de terceros. Actualmente, no se aplican cargos por exportar datos.
Puedes usar estos métodos para exportar los datos:
Usar la IU web de BigQuery
Ejecutar el comando
bq extract
de la CLIEnviar un trabajo extract a través de la API o las bibliotecas cliente
Precios
No se aplican cargos por exportar datos de Performance Monitoring, y BigQuery ofrece límites de uso generosos sin costo. Para obtener información detallada, consulta los precios de BigQuery o la zona de pruebas de BigQuery.