Exportar datos de Firebase Crashlytics a BigQuery

Puede exportar sus datos de Crashlytics a BigQuery para su posterior análisis. BigQuery le permite analizar los datos usando BigQuery SQL, exportarlos a otro proveedor de la nube y usarlos para visualización y paneles personalizados con Google Data Studio.

Habilitar la exportación de BigQuery

  1. Vaya a la página Integraciones en Firebase console.
  2. En la tarjeta de BigQuery , haz clic en Enlace .
  3. Siga las instrucciones que aparecen en pantalla para habilitar BigQuery.

Cuando vinculas tu proyecto a BigQuery:

  • Firebase configura sincronizaciones diarias de tus datos desde tu proyecto de Firebase con BigQuery.
  • De forma predeterminada, todas las aplicaciones de tu proyecto están vinculadas a BigQuery y cualquier aplicación que agregues posteriormente al proyecto se vincula automáticamente a BigQuery. Puedes administrar qué aplicaciones envían datos .
  • Firebase exporta una copia de tus datos existentes a BigQuery. Para cada aplicación vinculada, esto incluye una tabla por lotes que contiene los datos de la sincronización diaria.
  • Si habilita la exportación de streaming de Crashlytics BigQuery, todas las aplicaciones vinculadas también tendrán una tabla en tiempo real que contiene datos que se actualizan constantemente.

Para desactivar la exportación de BigQuery, desvincula tu proyecto en Firebase console.

¿Qué datos se exportan a BigQuery?

Los datos de Firebase Crashlytics se exportan a un conjunto de datos de BigQuery denominado firebase_crashlytics . De forma predeterminada, se crearán tablas individuales dentro del conjunto de datos de Crashlytics para cada aplicación de su proyecto. Firebase nombra las tablas según el identificador del paquete de la aplicación, con puntos convertidos en guiones bajos y un nombre de plataforma agregado al final.

Por ejemplo, los datos de una aplicación con el ID com.google.test estarían en una tabla denominada com_google_test_ANDROID . Esta tabla de lotes se actualiza una vez al día. Si habilitas la exportación de streaming de Crashlytics BigQuery, los datos de Firebase Crashlytics también se transmitirán en tiempo real a com_google_test_ANDROID_REALTIME .

Cada fila de una tabla representa un evento que ocurrió en la aplicación, incluidos bloqueos, errores no fatales y ANR.

Habilitar la exportación de streaming de Crashlytics BigQuery

Puedes transmitir tus datos de Crashlytics en tiempo real con BigQueryStreaming . Puede usarlo para cualquier propósito que requiera datos en vivo, como presentar información en un panel en vivo, ver una implementación en vivo o monitorear problemas de aplicaciones que activan alertas y flujos de trabajo personalizados.

La exportación de streaming de Crashlytics BigQuery no está disponible para el entorno aislado de BigQuery.

Cuando habilitas la exportación de streaming de Crashlytics BigQuery, además de la tabla por lotes, tendrás una tabla en tiempo real. Estas son las diferencias que debe tener en cuenta entre las tablas:

Tabla de lotes Tabla en tiempo real
  • Datos exportados una vez al día
  • Eventos almacenados de forma duradera antes de la escritura por lotes en BigQuery
  • Se puede reponer hasta 90 días antes
  • Datos exportados en tiempo real.
  • No hay relleno disponible

La tabla de lotes es ideal para análisis a largo plazo e identificación de tendencias a lo largo del tiempo porque almacenamos eventos de forma duradera antes de escribirlos y se pueden rellenar en la tabla hasta por 90 días. Cuando escribimos datos en su tabla en tiempo real, los escribimos inmediatamente en BigQuery, por lo que es ideal para paneles en vivo y alertas personalizadas. Estas dos tablas se pueden combinar con una consulta de unión para obtener los beneficios de ambas. Consulte el ejemplo de consulta 9 a continuación.

De forma predeterminada, la tabla en tiempo real tiene un tiempo de vencimiento de partición de 30 días. Para saber cómo modificar esto, consulte Actualización de la caducidad de la partición .

Habilitar la transmisión de Crashlytics BigQuery

Para habilitar la transmisión, navegue hasta la sección Crashlytics de la página de integraciones de BigQuery y seleccione la casilla Incluir transmisión .

Plantilla de estudio de datos

Para habilitar datos en tiempo real en su plantilla de Data Studio, siga las instrucciones en Visualización de datos exportados de Crashlytics con Data Studio .

Puntos de vista

Puedes convertir las consultas de ejemplo siguientes en vistas mediante la interfaz de usuario de BigQuery. Consulte Crear vistas para obtener instrucciones detalladas.

¿Qué puedes hacer con los datos exportados?

Las exportaciones de BigQuery contienen datos de fallas sin procesar, incluido el tipo de dispositivo, el sistema operativo, excepciones (aplicaciones de Android) o errores (aplicaciones de Apple) y registros de Crashlytics, así como otros datos.

Trabajar con datos de Firebase Crashlytics en BigQuery

Los siguientes ejemplos demuestran consultas que puede ejecutar en sus datos de Crashlytics. Estas consultas generan informes que no están disponibles en el panel de Crashlytics.

Ejemplos de consultas de Crashlytics

Los siguientes ejemplos demuestran cómo generar informes que agregan datos de eventos de accidentes en resúmenes más fáciles de entender.

Ejemplo 1: accidentes por día

Después de trabajar para corregir tantos errores como sea posible, un desarrollador líder cree que su equipo finalmente está listo para lanzar su nueva aplicación para compartir fotos. Antes de hacerlo, quieren verificar la cantidad de fallas por día durante el último mes, para asegurarse de que su bug-bash hizo que la aplicación sea más estable con el tiempo:

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `projectId.firebase_crashlytics.package_name_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

Ejemplo 2: encontrar los fallos más generalizados

Para priorizar adecuadamente los planes de producción, un director de proyecto reflexiona sobre cómo señalar los 10 fallos más generalizados de su producto. Producen una consulta que proporciona los puntos de datos pertinentes:

SELECT
  DISTINCT issue_id,
  COUNT(DISTINCT event_id) AS number_of_crashes,
  COUNT(DISTINCT installation_uuid) AS number_of_impacted_user,
  blame_frame.file,
  blame_frame.line
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  issue_id,
  blame_frame.file,
  blame_frame.line
ORDER BY
  number_of_crashes DESC
LIMIT 10;

Ejemplo 3: Los 10 principales dispositivos que fallan

¡El otoño es la nueva temporada telefónica! Un desarrollador sabe que eso también significa que es temporada de nuevos problemas específicos de dispositivos. Para adelantarse a los problemas de compatibilidad que se avecinan, elaboraron una consulta que identifica los 10 dispositivos que experimentaron la mayor cantidad de fallas la semana pasada:

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR)
  AND event_timestamp < CURRENT_TIMESTAMP()
GROUP BY
  device.model
ORDER BY
  number_of_crashes DESC
LIMIT 10;

Ejemplo 4: Filtrar por clave personalizada

Un desarrollador de juegos quiere saber qué nivel de su juego experimenta más fallas. Para ayudarles a realizar un seguimiento de esa estadística, establecen una clave de Crashlytics personalizada current_level y la actualizan cada vez que el usuario alcanza un nuevo nivel.

C objetivo

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Rápido

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Java

Crashlytics.setInt("current_level", 3);

Con esa clave en su exportación de BigQuery, luego escriben una consulta para informar la distribución de los valores current_level asociados con cada evento de falla:

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

Ejemplo 5: extracción de ID de usuario

Un desarrollador tiene una aplicación en acceso anticipado. A la mayoría de sus usuarios les encanta, pero tres han experimentado una cantidad inusual de fallas. Para llegar al fondo del problema, escriben una consulta que extrae todos los eventos de bloqueo de esos usuarios, utilizando sus ID de usuario:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

Ejemplo 6: encontrar todos los usuarios que enfrentan un problema de falla particular

Un desarrollador ha publicado un error crítico a un grupo de probadores beta. El equipo pudo utilizar la consulta del Ejemplo 2 anterior para identificar el ID del problema de bloqueo específico. Ahora les gustaría ejecutar una consulta para extraer la lista de usuarios de la aplicación que se vieron afectados por este bloqueo:

SELECT user.id as user_id
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  issue_id = "YOUR_ISSUE_ID"
  AND application.display_version = ""
  AND user.id != ""
ORDER BY
  user.id;

Ejemplo 7: Número de usuarios afectados por un problema de bloqueo, desglosado por país

Ahora el equipo ha detectado un error crítico durante el lanzamiento de una nueva versión. Pudieron utilizar la consulta del ejemplo 2 anterior para identificar el ID del problema de bloqueo específico. Al equipo ahora le gustaría ver si este fallo se ha extendido a usuarios de diferentes países del mundo.

Para escribir esta consulta, el equipo deberá:

  1. Habilite las exportaciones de BigQuery para Google Analytics. Consulta Exportar datos del proyecto a BigQuery .

  2. Actualice su aplicación para pasar un ID de usuario tanto al SDK de Google Analytics como al SDK de Crashlytics.

    C objetivo
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Rápido
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Escriba una consulta que utilice el campo ID de usuario para unir eventos en el conjunto de datos de BigQuery de Google Analytics con fallas en el conjunto de datos de BigQuery de Crashlytics:

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `projectId.firebase_crashlytics.package_name_ANDROID` c
    INNER JOIN  `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id
    WHERE
     c.issue_id = "YOUR_ISSUE_ID"
     AND a._TABLE_SUFFIX BETWEEN '20190101'
     AND '20200101'
    GROUP BY
     c.issue_id,
     a.geo.country,
     c.user.id
    

Ejemplo 8: Los cinco problemas principales hasta el momento

Requiere habilitar la exportación de streaming de Crashlytics BigQuery

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME`
WHERE
  DATE(event_timestamp) = CURRENT_DATE()
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

Ejemplo 9: 5 problemas principales desde la FECHA, incluido hoy

Requiere habilitar la exportación de streaming de Crashlytics BigQuery.

En este ejemplo, combinamos tablas por lotes y en tiempo real para agregar información en tiempo real a los datos por lotes confiables. Dado que event_id es una clave principal, podemos usar DISTINCT event_id para deduplicar cualquier evento común de las dos tablas.

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `your_project.firebase_crashlytics.package_name_ANDROID`)
WHERE
  event_timestamp >= "2020-01-13"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

Comprender el esquema de Firebase Crashlytics en BigQuery

Cuando vinculas Crashlytics con BigQuery, Firebase exporta eventos recientes (bloqueos, errores no fatales y ANR), incluidos eventos de hasta dos días antes del vínculo, con la opción de reponer hasta noventa días.

Desde ese momento hasta que deshabilites el enlace, Firebase exporta eventos de Crashlytics diariamente. Los datos pueden tardar unos minutos en estar disponibles en BigQuery después de cada exportación.

Conjuntos de datos

Firebase Crashlytics crea un nuevo conjunto de datos en BigQuery para datos de Crashlytics. El conjunto de datos cubre todo su proyecto, incluso si tiene varias aplicaciones.

Mesas

Firebase Crashlytics crea una tabla en el conjunto de datos para cada aplicación de tu proyecto, a menos que hayas optado por no exportar datos para esa aplicación. Firebase nombra las tablas según el identificador del paquete de la aplicación, con puntos convertidos en guiones bajos y un nombre de plataforma agregado al final.

Por ejemplo, los datos de una aplicación de Android con el ID com.google.test estarían en una tabla denominada com_google_test_ANDROID y los datos en tiempo real (si están habilitados) estarían en una tabla denominada com_google_test_ANDROID_REALTIME

Las tablas contienen un conjunto estándar de datos de Crashlytics además de las claves de Crashlytics personalizadas definidas por los desarrolladores.

Filas

Cada fila de una tabla representa un error que encontró la aplicación.

columnas

Las columnas de una tabla son idénticas para fallas, errores no fatales y ANR. Si la exportación de streaming de Crashlytics BigQuery está habilitada, la tabla en tiempo real tendrá las mismas columnas que la tabla por lotes. Las columnas dentro de la exportación se enumeran a continuación.

Sin rastros de pila

Columnas presentes en filas que representan eventos sin seguimientos de pila.

Nombre del campo Tipo de datos Descripción
plataforma CADENA Aplicaciones de Apple o Android
identificador_paquete CADENA El ID del paquete, por ejemplo, com.google.gmail
id_evento CADENA Una identificación única para el evento.
es_fatal BOOLEANO Si la aplicación falló
tipo_error CADENA Tipo de error del evento (FATAL, NON_FATAL, ANR)
id_problema CADENA El problema asociado con el evento.
id_variante CADENA La variante del problema asociada con este evento.
Tenga en cuenta que no todos los eventos tienen una variante de problema asociada.
marca_hora_evento MARCA DE TIEMPO Cuando ocurrió el evento
dispositivo REGISTRO El dispositivo en el que ocurrió el evento
fabricante del dispositivo CADENA El fabricante del dispositivo
modelo.de.dispositivo CADENA El modelo del dispositivo
dispositivo.arquitectura CADENA X86_32, X86_64, ARMV7, ARM64, ARMV7S o ARMV7K
memoria REGISTRO El estado de la memoria del dispositivo.
memoria usada INT64 Bytes de memoria utilizados
memoria.libre INT64 Bytes de memoria restantes
almacenamiento REGISTRO El almacenamiento persistente del dispositivo.
almacenamiento.usado INT64 Bytes de almacenamiento utilizados
almacenamiento.gratuito INT64 Bytes de almacenamiento restantes
Sistema operativo REGISTRO Los detalles del sistema operativo en el dispositivo.
sistema_operativo.versión_pantalla CADENA La versión del sistema operativo en el dispositivo.
sistema_operativo.nombre CADENA El nombre del sistema operativo en el dispositivo.
sistema_operativo.estado_modificación CADENA Si el dispositivo ha sido modificado, por ejemplo liberado/rooteado (MODIFICADO o SIN MODIFICAR)
sistema_operativo.tipo CADENA El tipo de sistema operativo que se ejecuta en el dispositivo (por ejemplo, IOS, MACOS); sólo disponible para aplicaciones de plataformas Apple
sistema_operativo.tipo_dispositivo CADENA El tipo de dispositivo (por ejemplo, MÓVIL, TABLETA, TV, etc.); también conocida como "categoría de dispositivo"
solicitud REGISTRO La aplicación que generó el evento.
aplicación.build_version CADENA La versión de compilación de la aplicación.
aplicación.display_version CADENA
usuario REGISTRO Opcional: información recopilada sobre el usuario de la aplicación.
nombre de usuario CADENA Opcional: el nombre del usuario.
usuario.correo electrónico CADENA Opcional: la dirección de correo electrónico del usuario.
usuario.id CADENA Opcional: una identificación específica de la aplicación asociada con el usuario
llaves_personalizadas REGISTRO REPETIDO Pares clave-valor definidos por el desarrollador
claves_personalizadas.clave CADENA Una clave definida por el desarrollador
claves_personalizadas.valor CADENA Un valor definido por el desarrollador
instalación_uuid CADENA Una identificación que identifica una instalación única de aplicación y dispositivo
crashlytics_sdk_versions CADENA La versión del SDK de Crashlytics que generó el evento.
orientación_aplicación CADENA RETRATO, PAISAJE, CARA ARRIBA o CARA ABAJO
orientación_dispositivo CADENA RETRATO, PAISAJE, CARA ARRIBA o CARA ABAJO
estado_proceso CADENA ANTECEDENTES o PRIMER PLANO
registros REGISTRO REPETIDO Mensajes de registro con marca de tiempo generados por el registrador de Crashlytics, si está habilitado
registros.marca de tiempo MARCA DE TIEMPO Cuando se hizo el registro
registros.mensaje CADENA El mensaje registrado
migas de pan REGISTRO REPETIDO Rutas de navegación de Google Analytics con marca de tiempo, si están habilitadas
migas de pan.marca de tiempo MARCA DE TIEMPO La marca de tiempo asociada con la ruta de navegación.
migas de pan.nombre CADENA El nombre asociado con la ruta de navegación.
migas de pan.params REGISTRO REPETIDO Parámetros asociados a la ruta de navegación
migas de pan.params.key CADENA Una clave de parámetro asociada con la ruta de navegación
migas de pan.params.valor CADENA Un valor de parámetro asociado con la ruta de navegación.
marco_culpa REGISTRO El marco identificado como la causa raíz del bloqueo o error.
marco_culpa.line INT64 El número de línea del archivo del marco.
culpa_frame.archivo CADENA El nombre del archivo de marco.
marco_culpa.símbolo CADENA El símbolo hidratado, o símbolo crudo si no es hidratable.
culpa_frame.offset INT64 El desplazamiento de bytes en la imagen binaria que contiene el código, sin configurar para excepciones de Java
dirección_cuadro_culpa INT64 La dirección en la imagen binaria que contiene el código, no configurada para marcos Java.
culpa_frame.biblioteca CADENA El nombre para mostrar de la biblioteca que incluye el marco.
culpa_frame.propietario CADENA DESARROLLADOR, PROVEEDOR, TIEMPO DE EJECUCIÓN, PLATAFORMA o SISTEMA
culpa_frame.culpado BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del bloqueo o del error
excepciones REGISTRO REPETIDO Solo Android: excepciones que ocurrieron durante este evento. Las excepciones anidadas se presentan en orden cronológico inverso (léase: el último registro es la primera excepción lanzada)
excepciones.tipo CADENA El tipo de excepción, por ejemplo java.lang.IllegalStateException
excepciones.mensaje_excepción CADENA Un mensaje asociado con la excepción.
excepciones.anidadas BOOLEANO Verdadero para todos excepto para la última excepción lanzada (es decir, el primer registro)
excepciones.título CADENA El título del hilo.
excepciones.subtítulo CADENA El subtítulo del hilo.
excepciones.culpadas BOOLEANO Verdadero si Crashlytics determina que la excepción es responsable del error o bloqueo
excepciones.marcos REGISTRO REPETIDO Los marcos asociados con la excepción.
excepciones.marcos.linea INT64 El número de línea del archivo del marco.
excepciones.frames.file CADENA El nombre del archivo de marco.
excepciones.marcos.símbolo CADENA El símbolo hidratado, o símbolo crudo si no es hidratable.
excepciones.marcos.desplazamiento INT64 El desplazamiento de bytes en la imagen binaria que contiene el código, sin configurar para excepciones de Java
excepciones.marcos.dirección INT64 La dirección en la imagen binaria que contiene el código, no configurada para marcos Java.
excepciones.frames.library CADENA El nombre para mostrar de la biblioteca que incluye el marco.
excepciones.marcos.propietario CADENA DESARROLLADOR, PROVEEDOR, TIEMPO DE EJECUCIÓN, PLATAFORMA o SISTEMA
excepciones.marcos.culpados BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del bloqueo o del error
error REGISTRO REPETIDO Solo aplicaciones de Apple: errores no fatales
error.nombre_cola CADENA La cola en la que se estaba ejecutando el hilo
código de error INT64 Código de error asociado con el NSError registrado personalizado de la aplicación
error.título CADENA El título del hilo.
error.subtitulo CADENA El subtítulo del hilo.
error.culpado BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del error
marcos.de.error REGISTRO REPETIDO Los marcos del stacktrace.
error.frames.line INT64 El número de línea del archivo del marco.
error.frames.file CADENA El nombre del archivo de marco.
error.frames.symbol CADENA El símbolo hidratado, o símbolo crudo si no es hidratable.
error.frames.offset INT64 El desplazamiento de bytes en la imagen binaria que contiene el código.
dirección.de.marcos.de.error INT64 La dirección en la imagen binaria que contiene el código.
error.frames.library CADENA El nombre para mostrar de la biblioteca que incluye el marco.
error.frames.propietario CADENA DESARROLLADOR, PROVEEDOR, TIEMPO DE EJECUCIÓN, PLATAFORMA o SISTEMA
error.frames.culpado BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del error
hilos REGISTRO REPETIDO Hilos presentes en el momento del evento.
hilos.se estrelló BOOLEANO Si el hilo falló
hilos.nombre_hilo CADENA El nombre del hilo
hilos.nombre_cola CADENA Solo aplicaciones de Apple: la cola en la que se estaba ejecutando el hilo
hilos.nombre_señal CADENA El nombre de la señal que provocó el bloqueo de la aplicación, solo presente en subprocesos nativos bloqueados.
hilos.código_señal CADENA El código de la señal que provocó el bloqueo de la aplicación; sólo presente en subprocesos nativos bloqueados
hilos.crash_address INT64 La dirección de la señal que provocó el bloqueo de la aplicación; sólo presente en subprocesos nativos bloqueados
hilos.código INT64 Solo aplicaciones de Apple: código de error del NSError registrado personalizado de la aplicación
hilos.título CADENA El título del hilo.
hilos.subtitulo CADENA El subtítulo del hilo.
hilos.culpados BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del bloqueo o del error
hilos.marcos REGISTRO REPETIDO Los marcos del hilo.
hilos.marcos.linea INT64 El número de línea del archivo del marco.
hilos.frames.archivo CADENA El nombre del archivo de marco.
hilos.marcos.símbolo CADENA El símbolo hidratado, o símbolo crudo si no se puede hidratar.
hilos.marcos.desplazados INT64 El desplazamiento de bytes en la imagen binaria que contiene el código.
hilos.marcos.dirección INT64 La dirección en la imagen binaria que contiene el código.
hilos.frames.library CADENA El nombre para mostrar de la biblioteca que incluye el marco.
hilos.marcos.propietario CADENA DESARROLLADOR, PROVEEDOR, TIEMPO DE EJECUCIÓN, PLATAFORMA o SISTEMA
hilos.marcos.culpados BOOLEANO Si el análisis de Crashlytics determinó que este marco es la causa del error
unity_metadata.unity_version CADENA La versión de Unity que se ejecuta en este dispositivo.
unity_metadata.debug_build BOOLEANO Si esta es una compilación de depuración
unidad_metadatos.tipo_procesador CADENA El tipo de procesador
unidad_metadatos.procesador_count INT64 El número de procesadores (núcleos)
unity_metadata.procesador_frecuencia_mhz INT64 La frecuencia del procesador (es) en MHz.
unity_metadata.system_memory_size_mb INT64 El tamaño de la memoria del sistema en Mb.
unity_metadata.graphics_memory_size_mb INT64 La memoria gráfica en MB.
unity_metadata.graphics_device_id INT64 El identificador del dispositivo gráfico.
unity_metadata.graphics_device_vendor_id INT64 El identificador del proveedor del procesador gráfico.
unity_metadata.graphics_device_name CADENA El nombre del dispositivo gráfico.
unity_metadata.graphics_device_vendor CADENA El proveedor del dispositivo gráfico.
unity_metadata.graphics_device_version CADENA La versión del dispositivo gráfico.
unity_metadata.graphics_device_type CADENA El tipo de dispositivo gráfico.
unity_metadata.graphics_shader_level INT64 El nivel de sombreado de los gráficos.
unity_metadata.graphics_render_target_count INT64 El número de objetivos de representación gráfica.
unity_metadata.graphics_copy_texture_support CADENA Soporte para copiar texturas de gráficos como se define en la API de Unity
unity_metadata.graphics_max_texture_size INT64 El tamaño máximo dedicado a renderizar textura.
unity_metadata.screen_size_px CADENA El tamaño de la pantalla en píxeles, formateado como ancho x alto.
unity_metadata.screen_resolución_dpi CADENA El DPI de la pantalla como número de punto flotante
unity_metadata.screen_refresh_rate_hz INT64 La frecuencia de actualización de la pantalla en Hz.

Visualización de datos exportados de Crashlytics con Data Studio

Google Data Studio convierte sus conjuntos de datos de Crashlytics en BigQuery en informes fáciles de leer, compartir y totalmente personalizables.

Para obtener más información sobre el uso de Data Studio, consulte la guía de inicio rápido de Data Studio, Bienvenido a Data Studio .

Usar una plantilla de informe de Crashlytics

Data Studio tiene un informe de muestra para Crashlytics que incluye un conjunto completo de dimensiones y métricas del esquema de Crashlytics BigQuery exportado. Si ha habilitado la exportación de streaming de Crashlytics BigQuery, puede ver esos datos en la página Tendencias en tiempo real de la plantilla de Data Studio. Puede usar el ejemplo como plantilla para crear rápidamente nuevos informes y visualizaciones basados ​​en los datos de fallas sin procesar de su propia aplicación:

  1. Abra la plantilla del panel de Crashlytics Data Studio .
  2. Haga clic en Usar plantilla en la esquina superior derecha.
  3. En el menú desplegable Nueva fuente de datos , seleccione Crear nueva fuente de datos .
  4. Haga clic en Seleccionar en la tarjeta de BigQuery .
  5. Selecciona una tabla que contenga datos exportados de Crashlytics eligiendo Mis proyectos > [nombre-de-tu-proyecto] > firebase_crashlytics > [nombre-de-tu-tabla] . Su tabla de lotes siempre está disponible para seleccionar; Si la exportación de streaming de Crashlytics BigQuery está habilitada, puede seleccionar su tabla en tiempo real.
  6. En Configuración , establezca el nivel de plantilla de Crashlytics en Predeterminado .
  7. Haga clic en Conectar para crear la nueva fuente de datos.
  8. Haga clic en Agregar al informe para regresar a la plantilla de Crashlytics.
  9. Finalmente, haga clic en Crear informe para crear su copia de la plantilla del panel de Crashlytics Data Studio.