Ir a la consola

Exporta los datos de Performance Monitoring a BigQuery

Puedes exportar tus datos de Performance Monitoring a BigQuery para realizar un análisis más detallado. Esta herramienta te permite analizar los datos con BigQuery SQL, exportarlos a otro proveedor de servicios en la nube o incluso usarlos en tus modelos de AA personalizados.

Habilita la exportación a BigQuery

  1. Para comenzar, usa una de estas opciones:

  2. Sigue las instrucciones que aparecen en la pantalla para habilitar BigQuery.

Esto es lo que ocurre cuando vinculas el proyecto a BigQuery:

  • Firebase exporta una copia de tus datos existentes a BigQuery.

    • En la vinculación inicial, Firebase programa tus tablas de BigQuery automáticamente para reabastecer datos de los últimos 7 días, a fin de que puedas comenzar a experimentar de inmediato. Espera unas horas para que los datos iniciales estén disponibles en BigQuery.

    • También puedes programar de forma manual el reabastecimiento de datos hasta de los últimos 30 días.

  • Firebase configura sincronizaciones frecuentes de los datos del proyecto de Firebase con BigQuery.

  • Según la configuración predeterminada, todas las apps de tu proyecto se vinculan a BigQuery, y cualquier app que agregues al proyecto también se vinculará automáticamente. Puedes administrar cuáles apps envían datos.

Para inhabilitar 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 en la tabla es un evento de rendimiento único que puede ser alguno de los que se presentan a continuación:

  • Seguimiento de duración: Incluye el seguimiento de inicio de la app, el de primero y segundo plano, y todos los seguimientos instrumentados del desarrollador.

    • event_type es DURATION_TRACE
    • event_name es el mismo que el nombre del seguimiento
  • Métrica de seguimiento: Métricas que instrumenta el desarrollador asociadas con seguimientos, conocidos anteriormente como contadores.

    • event_type es TRACE_METRIC
    • event_name es el nombre de la métrica.
    • parent_trace_name es el nombre del seguimiento que contiene esta métrica.
  • Seguimiento de la pantalla: Se trata de seguimientos que abarcan la duración de una pantalla.

    • event_type es SCREEN_TRACE
    • event_name es el prefijo _st_ junto con el nombre real de la pantalla.
  • Solicitud de red

    • event_type es NETWORK_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 pantalla contienen trace_info.screen_info.
  • Las solicitudes de red contienen network_info.

Esquema detallado de datos

Nombre del campo Tipo Descripción
event_timestamp marca de tiempo 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”)
  • Para Android: VersionName
  • Para iOS: CFBundleShortVersionString
app_build_version string La versión compilada de la aplicación (por ejemplo, "1523456")
  • Para Android: VersionCode
  • Para iOS: CFBundleVersion
os_version string La versión SO del dispositivo del cliente
  • Para Android: El nivel API del cliente (por ejemplo, “26”)
  • Para iOS: La versión iOS (por ejemplo, “11.4”)
device_name string Nombre del dispositivo del cliente (por ejemplo, “Google Pixel”)
country 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)
carrier 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:
  • DURATION_TRACE: Incluye el seguimiento de inicio de la app, el de primero y segundo plano, y todos los seguimientos instrumentados del desarrollador.
  • SCREEN_TRACE: Se trata de seguimientos que abarcan la duración de una pantalla.
  • TRACE_METRIC: Métricas que instrumenta el desarrollador asociadas con seguimientos, conocidos anteriormente como contadores.
  • NETWORK_REQUEST
event_name string Nombre del evento
  • Para DURATION_TRACE: el nombre del seguimiento
  • Para SCREEN_TRACE: _st_ después del nombre del seguimiento
  • Para NETWORK_REQUEST: el patrón de URL de la solicitud de red
  • Para TRACE_METRIC: el nombre de la métrica
parent_trace_name string Nombre del seguimiento superior que lleva la métrica de seguimiento
Presente únicamente para TRACE_METRIC
trace_info REGISTRO Presente únicamente para DURATION_TRACE, SCREEN_TRACE y TRACE_METRIC
trace_info.duration_us int64
  • Para DURATION_TRACE y SCREEN_TRACE: lo que dure este seguimiento
  • Para TRACE_METRIC: lo que dure el seguimiento superior
Unidad: microsegundo
trace_info.screen_info REGISTRO Presente únicamente para SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 La proporción de marcos lentos para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0.05 significa que el 5% de los marcos de esta instancia de pantalla tomaron más de 16 µs en procesarse).
trace_info.screen_info.frozen_frame_ratio float64 La proporción de los marcos congelados para este seguimiento de pantalla, entre 0 y 1 (por ejemplo, un valor de 0.05 significa que el 5% de los marcos de esta instancia de pantalla tomaron más de 700 µs en procesarse)
trace_info.metric_info REGISTRO Presente únicamente para TRACE_METRIC
trace_info.metric_info.metric_value int64 Valor de la métrica de seguimiento
network_info REGISTRO 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 red
Unidad: microsegundo
network_info.response_initiated_time_us int64 Microsegundos luego de la event_timestamp cuando inicia la respuesta de red
Unidad: microsegundo
network_info.response_completed_time_us int64 Microsegundos luego de la event_timestamp cuando se completa la respuesta de red
Unidad: microsegundo

¿Qué puedes hacer con los datos exportados?

A continuación, se ofrecen ejemplos de consultas que puedes ejecutar en BigQuery en relación con tus datos exportados de Performance Monitoring.

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

Este análisis supone que hayas configurado previamente un seguimiento personalizado para la descarga desde el disco con un atributo personalizado llamado file-extension, así como una métrica de seguimiento llamada cache-hit, configurada en 1 si es un acierto de caché y en 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 de la siguiente forma:

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:

  • Usa la IU web de BigQuery.
  • Ejecuta el comando bq extract de la CLI.
  • Envía un trabajo extract a través de la API o las bibliotecas cliente.

Precios

No se aplican cargos por exportar datos desde Performance Monitoring, y BigQuery ofrece límites generosos de uso gratuito. Consulta los precios o la zona de pruebas de BigQuery para obtener información detallada.