Exporter les données Firebase Crashlytics vers BigQuery

Vous pouvez exporter vos données Crashlytics vers BigQuery pour une analyse plus approfondie. BigQuery vous permet d'analyser les données à l'aide de BigQuery SQL, de les exporter vers un autre fournisseur de cloud et de les utiliser pour la visualisation et des tableaux de bord personnalisés avec Google Data Studio.

Activer l'exportation BigQuery

  1. Accédez à la page Intégrations dans la console Firebase.
  2. Dans la fiche BigQuery , cliquez sur Lien .
  3. Suivez les instructions à l'écran pour activer BigQuery.

Lorsque vous associez votre projet à BigQuery :

  • Firebase configure des synchronisations quotidiennes de vos données de votre projet Firebase vers BigQuery.
  • Par défaut, toutes les applications de votre projet sont liées à BigQuery et toutes les applications que vous ajoutez ultérieurement au projet sont automatiquement liées à BigQuery. Vous pouvez gérer quelles applications envoient des données .
  • Firebase exporte une copie de vos données existantes vers BigQuery. Pour chaque application liée, cela inclut un tableau de lots contenant les données de la synchronisation quotidienne.
  • Si vous activez l'exportation en streaming Crashlytics BigQuery, toutes les applications liées disposeront également d'un tableau en temps réel contenant des données constamment mises à jour.

Pour désactiver l'exportation BigQuery, dissociez votre projet dans la console Firebase.

Quelles données sont exportées vers BigQuery ?

Les données Firebase Crashlytics sont exportées dans un ensemble de données BigQuery nommé firebase_crashlytics . Par défaut, des tables individuelles seront créées dans l'ensemble de données Crashlytics pour chaque application de votre projet. Firebase nomme les tables en fonction de l'identifiant du bundle de l'application, avec des points convertis en traits de soulignement et un nom de plate-forme ajouté à la fin.

Par exemple, les données d'une application portant l'ID com.google.test se trouveraient dans une table nommée com_google_test_ANDROID . Ce tableau de lots est mis à jour une fois par jour. Si vous activez l'exportation en streaming Crashlytics BigQuery, les données Firebase Crashlytics seront également diffusées en temps réel vers com_google_test_ANDROID_REALTIME .

Chaque ligne d'un tableau représente un événement survenu dans l'application, notamment les plantages, les erreurs non fatales et les ANR.

Activer l'exportation en streaming Crashlytics BigQuery

Vous pouvez diffuser vos données Crashlytics en temps réel avec BigQueryStreaming . Vous pouvez l'utiliser à toute fin nécessitant des données en direct, comme présenter des informations dans un tableau de bord en direct, regarder un déploiement en direct ou surveiller les problèmes d'application qui déclenchent des alertes et des flux de travail personnalisés.

L'exportation en streaming Crashlytics BigQuery n'est pas disponible pour le bac à sable BigQuery.

Lorsque vous activez l'exportation en streaming Crashlytics BigQuery, en plus de la table par lots, vous disposez d'une table en temps réel. Voici les différences que vous devez connaître entre les tables :

Tableau des lots Tableau en temps réel
  • Données exportées une fois par jour
  • Événements stockés de manière durable avant l'écriture par lots dans BigQuery
  • Peut être remblayé jusqu'à 90 jours avant
  • Données exportées en temps réel
  • Aucun remplissage disponible

La table de lots est idéale pour l'analyse à long terme et l'identification des tendances au fil du temps, car nous stockons durablement les événements avant de les écrire, et ils peuvent être renseignés dans la table jusqu'à 90 jours. Lorsque nous écrivons des données dans votre table en temps réel, nous les écrivons immédiatement dans BigQuery, ce qui en fait un outil idéal pour les tableaux de bord en direct et les alertes personnalisées. Ces deux tables peuvent être combinées avec une requête d’assemblage pour bénéficier des avantages des deux. Voir l'exemple de requête 9 ci-dessous.

Par défaut, la table en temps réel a un délai d'expiration de partition de 30 jours. Pour savoir comment modifier cela, consultez Mise à jour de l'expiration de la partition .

Activer le streaming Crashlytics BigQuery

Pour activer le streaming, accédez à la section Crashlytics de la page des intégrations BigQuery et cochez la case Inclure le streaming .

Modèle de studio de données

Pour activer les données en temps réel dans votre modèle Data Studio, suivez les instructions dans Visualisation des données Crashlytics exportées avec Data Studio .

Vues

Vous pouvez transformer les exemples de requêtes ci-dessous en vues à l'aide de l'interface utilisateur BigQuery. Voir Création de vues pour des instructions détaillées.

Que pouvez-vous faire avec les données exportées ?

Les exportations BigQuery contiennent des données brutes sur les plantages, notamment le type d'appareil, le système d'exploitation, les exceptions (applications Android) ou les erreurs (applications Apple), ainsi que les journaux Crashlytics, ainsi que d'autres données.

Utiliser les données Firebase Crashlytics dans BigQuery

Les exemples suivants illustrent les requêtes que vous pouvez exécuter sur vos données Crashlytics. Ces requêtes génèrent des rapports qui ne sont pas disponibles dans le tableau de bord Crashlytics.

Exemples de requêtes Crashlytics

Les exemples suivants montrent comment générer des rapports qui regroupent les données d'événements de crash dans des résumés plus faciles à comprendre.

Exemple 1 : Crashs de jour

Après avoir travaillé pour corriger autant de bugs que possible, un développeur principal pense que son équipe est enfin prête à lancer sa nouvelle application de partage de photos. Avant de le faire, ils souhaitent vérifier le nombre de crashs par jour au cours du mois dernier, pour être sûrs que leur bug-bash a rendu l'application plus stable au fil du temps :

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;

Exemple 2 : Trouver les crashs les plus répandus

Pour hiérarchiser correctement les plans de production, un chef de projet réfléchit à la manière d'identifier les 10 pannes les plus répandues dans son produit. Ils produisent une requête qui fournit les points de données pertinents :

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;

Exemple 3 : 10 principaux appareils en panne

L'automne est la nouvelle saison téléphonique ! Un développeur sait que cela signifie également que c'est la saison des nouveaux problèmes spécifiques aux appareils. Pour anticiper les problèmes de compatibilité imminents, ils ont élaboré une requête qui identifie les 10 appareils qui ont connu le plus de plantages au cours de la semaine dernière :

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;

Exemple 4 : Filtrer par clé personnalisée

Un développeur de jeux souhaite savoir quel niveau de son jeu connaît le plus de plantages. Pour les aider à suivre cette statistique, ils définissent une clé Crashlytics personnalisée current_level et la mettent à jour chaque fois que l'utilisateur atteint un nouveau niveau.

Objectif c

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Rapide

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

Java

Crashlytics.setInt("current_level", 3);

Avec cette clé dans leur exportation BigQuery, ils écrivent ensuite une requête pour signaler la distribution des valeurs current_level associées à chaque événement de crash :

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

Exemple 5 : Extraction de l'ID utilisateur

Un développeur dispose d’une application en accès anticipé. La plupart de leurs utilisateurs l’apprécient, mais trois d’entre eux ont connu un nombre inhabituel de plantages. Pour aller au fond du problème, ils écrivent une requête qui extrait tous les événements de crash pour ces utilisateurs, en utilisant leurs ID utilisateur :

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

Exemple 6 : Rechercher tous les utilisateurs confrontés à un problème de crash particulier

Un développeur a publié un bug critique à un groupe de bêta-testeurs. L’équipe a pu utiliser la requête de l’exemple 2 ci-dessus pour identifier l’ID spécifique du problème de crash. Ils souhaitent maintenant exécuter une requête pour extraire la liste des utilisateurs de l'application qui ont été touchés par ce crash :

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;

Exemple 7 : Nombre d'utilisateurs touchés par un problème de crash, réparti par pays

L'équipe a désormais détecté un bug critique lors du déploiement d'une nouvelle version. Ils ont pu utiliser la requête de l’exemple 2 ci-dessus pour identifier l’ID spécifique du problème de crash. L’équipe aimerait maintenant voir si ce crash s’est propagé aux utilisateurs de différents pays du monde.

Pour rédiger cette requête, l’équipe devra :

  1. Activez les exportations BigQuery pour Google Analytics. Consultez Exporter les données du projet vers BigQuery .

  2. Mettez à jour leur application pour transmettre un identifiant utilisateur à la fois au SDK Google Analytics et au SDK Crashlytics.

    Objectif c
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Rapide
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Écrivez une requête qui utilise le champ ID utilisateur pour joindre des événements dans l'ensemble de données Google Analytics BigQuery avec des plantages dans l'ensemble de données Crashlytics BigQuery :

    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
    

Exemple 8 : 5 principaux problèmes jusqu'à présent aujourd'hui

Nécessite l'activation de l'exportation en streaming 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;

Exemple 9 : 5 principaux problèmes depuis le DATE, y compris aujourd'hui

Nécessite l'activation de l'exportation en streaming Crashlytics BigQuery.

Dans cet exemple, nous combinons des tables de lots et en temps réel pour ajouter des informations en temps réel aux données de lots fiables. Puisque event_id est une clé primaire, nous pouvons utiliser DISTINCT event_id pour dédoublonner tous les événements communs des deux tables.

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;

Comprendre le schéma Firebase Crashlytics dans BigQuery

Lorsque vous associez Crashlytics à BigQuery, Firebase exporte les événements récents (plantages, erreurs non fatales et ANR), y compris les événements survenus jusqu'à deux jours avant l'association, avec la possibilité de remplir jusqu'à quatre-vingt-dix jours.

À partir de ce moment et jusqu'à ce que vous désactiviez le lien, Firebase exporte quotidiennement les événements Crashlytics. Cela peut prendre quelques minutes pour que les données soient disponibles dans BigQuery après chaque exportation.

Ensembles de données

Firebase Crashlytics crée un nouvel ensemble de données dans BigQuery pour les données Crashlytics. L'ensemble de données couvre l'intégralité de votre projet, même s'il comporte plusieurs applications.

les tables

Firebase Crashlytics crée une table dans l'ensemble de données pour chaque application de votre projet, sauf si vous avez choisi de ne pas exporter les données pour cette application. Firebase nomme les tables en fonction de l'identifiant du bundle de l'application, avec des points convertis en traits de soulignement et un nom de plate-forme ajouté à la fin.

Par exemple, les données d'une application Android avec l'ID com.google.test seraient dans une table nommée com_google_test_ANDROID , et les données en temps réel (si activées) seraient dans une table nommée com_google_test_ANDROID_REALTIME .

Les tableaux contiennent un ensemble standard de données Crashlytics en plus de toutes les clés Crashlytics personnalisées définies par les développeurs.

Lignes

Chaque ligne d'un tableau représente une erreur rencontrée par l'application.

Colonnes

Les colonnes d'un tableau sont identiques pour les plantages, les erreurs non fatales et les ANR. Si l'exportation en streaming Crashlytics BigQuery est activée, la table en temps réel aura les mêmes colonnes que la table par lots. Les colonnes de l'exportation sont répertoriées ci-dessous.

Sans traces de pile

Colonnes présentes dans des lignes qui représentent des événements sans traces de pile.

Nom de domaine Type de données Description
plate-forme CHAÎNE Applications Apple ou Android
bundle_identifier CHAÎNE L'ID du bundle, par exemple com.google.gmail
id_événement CHAÎNE Un identifiant unique pour l'événement
est_fatal BOOLÉEN Si l'application a planté
type_erreur CHAÎNE Type d'erreur de l'événement (FATAL, NON_FATAL, ANR)
numéro_id CHAÎNE Le problème associé à l'événement
variante_id CHAÎNE La variante du problème associée à cet événement
Notez que tous les événements ne sont pas associés à une variante de problème.
événement_horodatage HORODATAGE Quand l'événement s'est produit
appareil ENREGISTRER L'appareil sur lequel l'événement s'est produit
appareil.fabricant CHAÎNE Le fabricant de l'appareil
modèle d'appareil CHAÎNE Le modèle de l'appareil
périphérique.architecture CHAÎNE X86_32, X86_64, ARMV7, ARM64, ARMV7S ou ARMV7K
mémoire ENREGISTRER L'état de la mémoire de l'appareil
mémoire.utilisée INT64 Octets de mémoire utilisés
mémoire.libre INT64 Octets de mémoire restants
stockage ENREGISTRER Le stockage persistant de l'appareil
stockage.utilisé INT64 Octets de stockage utilisés
stockage.gratuit INT64 Octets de stockage restants
système opérateur ENREGISTRER Les détails du système d'exploitation sur l'appareil
système_d'exploitation.display_version CHAÎNE La version du système d'exploitation sur l'appareil
système_d'exploitation.nom CHAÎNE Le nom du système d'exploitation sur l'appareil
système_d'exploitation.modification_state CHAÎNE Si l'appareil a été modifié, par exemple jailbreaké/rooté (MODIFIÉ ou NON MODIFIÉ)
système_d'exploitation.type CHAÎNE Le type de système d'exploitation exécuté sur l'appareil (par exemple, IOS, MACOS) ; uniquement disponible pour les applications des plateformes Apple
système_d'exploitation.type_device CHAÎNE Le type d'appareil (par exemple, MOBILE, TABLETTE, TV, etc.) ; également appelé « catégorie d'appareil »
application ENREGISTRER L'application qui a généré l'événement
application.build_version CHAÎNE La version build de l'application
application.display_version CHAÎNE
utilisateur ENREGISTRER Facultatif : informations collectées sur l'utilisateur de l'application
nom d'utilisateur CHAÎNE Facultatif : le nom de l'utilisateur
utilisateur.email CHAÎNE Facultatif : L'adresse e-mail de l'utilisateur
ID de l'utilisateur CHAÎNE Facultatif : un identifiant spécifique à l'application associé à l'utilisateur
clés_personnalisées ENREGISTREMENT RÉPÉTÉ Paires clé-valeur définies par le développeur
custom_keys.key CHAÎNE Une clé définie par le développeur
custom_keys.value CHAÎNE Une valeur définie par le développeur
installation_uuid CHAÎNE Un identifiant qui identifie une installation unique d'application et d'appareil
crashlytics_sdk_versions CHAÎNE La version du SDK Crashlytics qui a généré l'événement
app_orientation CHAÎNE PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN
orientation_de l'appareil CHAÎNE PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN
état_processus CHAÎNE ARRIÈRE-PLAN ou PREMIER PLAN
journaux ENREGISTREMENT RÉPÉTÉ Messages de journal horodatés générés par l'enregistreur Crashlytics, si activé
logs.timestamp HORODATAGE Quand le journal a été fait
journaux.message CHAÎNE Le message enregistré
chapelure ENREGISTREMENT RÉPÉTÉ Fil d'Ariane Google Analytics horodaté, si activé
fil d'Ariane.timestamp HORODATAGE L'horodatage associé au fil d'Ariane
fil d'Ariane.nom CHAÎNE Le nom associé au fil d'Ariane
fil d'Ariane.params ENREGISTREMENT RÉPÉTÉ Paramètres associés au fil d'Ariane
fil d'Ariane.params.key CHAÎNE Une clé de paramètre associée au fil d'Ariane
fil d'Ariane.params.value CHAÎNE Une valeur de paramètre associée au fil d'Ariane
blâme_frame ENREGISTRER Le cadre identifié comme la cause première du crash ou de l'erreur
blâme_frame.line INT64 Le numéro de ligne du fichier de la trame
blâme_frame.file CHAÎNE Le nom du fichier image
blâme_frame.symbole CHAÎNE Le symbole hydraté, ou symbole brut s'il est non hydraté
blâme_frame.offset INT64 Le décalage d'octet dans l'image binaire qui contient le code, non défini pour les exceptions Java
blâme_frame.adresse INT64 L'adresse dans l'image binaire qui contient le code, non définie pour les trames Java
blâme_frame.library CHAÎNE Le nom d'affichage de la bibliothèque qui inclut le cadre
blâme_frame.owner CHAÎNE DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME
blâme_frame.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur
des exceptions ENREGISTREMENT RÉPÉTÉ Android uniquement : exceptions survenues lors de cet événement. Les exceptions imbriquées sont présentées dans l'ordre chronologique inverse (lire : le dernier enregistrement est la première exception levée)
exceptions.type CHAÎNE Le type d'exception, par exemple java.lang.IllegalStateException
exceptions.exception_message CHAÎNE Un message associé à l'exception
exceptions.nichées BOOLÉEN Vrai pour tout sauf la dernière exception levée (c'est-à-dire le premier enregistrement)
exceptions.titre CHAÎNE Le titre du fil
exceptions.sous-titre CHAÎNE Le sous-titre du fil
exceptions.blamed BOOLÉEN Vrai si Crashlytics détermine que l'exception est responsable de l'erreur ou du crash
exceptions.frames ENREGISTREMENT RÉPÉTÉ Les trames associées à l'exception
exceptions.frames.line INT64 Le numéro de ligne du fichier de la trame
exceptions.frames.file CHAÎNE Le nom du fichier image
exceptions.frames.symbole CHAÎNE Le symbole hydraté, ou symbole brut s'il est non hydraté
exceptions.frames.offset INT64 Le décalage d'octet dans l'image binaire qui contient le code, non défini pour les exceptions Java
exceptions.frames.adresse INT64 L'adresse dans l'image binaire qui contient le code, non définie pour les trames Java
exceptions.frames.library CHAÎNE Le nom d'affichage de la bibliothèque qui inclut le cadre
exceptions.frames.owner CHAÎNE DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME
exceptions.frames.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur
erreur ENREGISTREMENT RÉPÉTÉ Applications Apple uniquement : erreurs non fatales
erreur.nom_queue CHAÎNE La file d'attente sur laquelle le thread s'exécutait
code d'erreur INT64 Code d'erreur associé au NSError personnalisé enregistré de l'application
erreur.titre CHAÎNE Le titre du fil
erreur.sous-titre CHAÎNE Le sous-titre du fil
erreur.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur
erreur.frames ENREGISTREMENT RÉPÉTÉ Les frames du stacktrace
erreur.frames.line INT64 Le numéro de ligne du fichier de la trame
erreur.frames.file CHAÎNE Le nom du fichier image
erreur.frames.symbole CHAÎNE Le symbole hydraté, ou symbole brut s'il est non hydraté
erreur.frames.offset INT64 Le décalage d'octet dans l'image binaire qui contient le code
erreur.frames.adresse INT64 L'adresse dans l'image binaire qui contient le code
erreur.frames.library CHAÎNE Le nom d'affichage de la bibliothèque qui inclut le cadre
erreur.frames.owner CHAÎNE DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME
erreur.frames.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur
fils de discussion ENREGISTREMENT RÉPÉTÉ Sujets présents au moment de l'événement
threads.crashed BOOLÉEN Si le fil s'est écrasé
threads.thread_name CHAÎNE Le nom du fil
threads.nom_queue CHAÎNE Applications Apple uniquement : la file d'attente sur laquelle le thread s'exécutait
threads.signal_name CHAÎNE Le nom du signal qui a provoqué le crash de l'application, présent uniquement sur les threads natifs en panne
threads.signal_code CHAÎNE Le code du signal qui a provoqué le crash de l'application ; présent uniquement sur les threads natifs en panne
threads.crash_address INT64 L'adresse du signal qui a provoqué le crash de l'application ; présent uniquement sur les threads natifs en panne
fils.code INT64 Applications Apple uniquement : code d'erreur du NSError personnalisé enregistré de l'application
fils de discussion.titre CHAÎNE Le titre du fil
fils de discussion.sous-titre CHAÎNE Le sous-titre du fil
fils de discussion.blamé BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause du crash ou de l'erreur
fils.frames ENREGISTREMENT RÉPÉTÉ Les cadres du fil
fils.frames.line INT64 Le numéro de ligne du fichier de la trame
threads.frames.file CHAÎNE Le nom du fichier image
threads.frames.symbole CHAÎNE Le symbole hydraté, ou brut s'il est non hydratable
threads.frames.offset INT64 Le décalage d'octet dans l'image binaire qui contient le code
threads.frames.adresse INT64 L'adresse dans l'image binaire qui contient le code
threads.frames.library CHAÎNE Le nom d'affichage de la bibliothèque qui inclut le cadre
threads.frames.propriétaire CHAÎNE DÉVELOPPEUR, FOURNISSEUR, RUNTIME, PLATEFORME ou SYSTÈME
threads.frames.blamed BOOLÉEN Si l'analyse de Crashlytics a déterminé que cette trame est la cause de l'erreur
unity_metadata.unity_version CHAÎNE La version d'Unity exécutée sur cet appareil
unity_metadata.debug_build BOOLÉEN S'il s'agit d'une version de débogage
unity_metadata.processor_type CHAÎNE Le type de processeur
unity_metadata.processor_count INT64 Le nombre de processeurs (cœurs)
unity_metadata.processor_fréquence_mhz INT64 La fréquence du ou des processeurs en MHz
unity_metadata.system_memory_size_mb INT64 La taille de la mémoire du système en Mo
unity_metadata.graphics_memory_size_mb INT64 La mémoire graphique en Mo
unity_metadata.graphics_device_id INT64 L'identifiant du périphérique graphique
unity_metadata.graphics_device_vendor_id INT64 L'identifiant du fournisseur du processeur graphique
unity_metadata.graphics_device_name CHAÎNE Le nom du périphérique graphique
unity_metadata.graphics_device_vendor CHAÎNE Le fournisseur du périphérique graphique
unity_metadata.graphics_device_version CHAÎNE La version du périphérique graphique
unity_metadata.graphics_device_type CHAÎNE Le type de périphérique graphique
unity_metadata.graphics_shader_level INT64 Le niveau de shader des graphiques
unity_metadata.graphics_render_target_count INT64 Le nombre de cibles de rendu graphique
unity_metadata.graphics_copy_texture_support CHAÎNE Prise en charge de la copie de la texture graphique telle que définie dans l' API Unity
unity_metadata.graphics_max_texture_size INT64 La taille maximale dédiée au rendu de la texture
unity_metadata.screen_size_px CHAÎNE La taille de l'écran en pixels, au format largeur x hauteur
unity_metadata.screen_resolution_dpi CHAÎNE Le DPI de l'écran sous forme de nombre à virgule flottante
unity_metadata.screen_refresh_rate_hz INT64 Le taux de rafraîchissement de l'écran en Hz

Visualiser les données Crashlytics exportées avec Data Studio

Google Data Studio transforme vos ensembles de données Crashlytics dans BigQuery en rapports faciles à lire, faciles à partager et entièrement personnalisables.

Pour en savoir plus sur l'utilisation de Data Studio, consultez le guide de démarrage rapide de Data Studio, Bienvenue dans Data Studio .

Utiliser un modèle de rapport Crashlytics

Data Studio propose un exemple de rapport pour Crashlytics qui comprend un ensemble complet de dimensions et de métriques du schéma Crashlytics BigQuery exporté. Si vous avez activé l'exportation en streaming Crashlytics BigQuery, vous pouvez afficher ces données sur la page Tendances en temps réel du modèle Data Studio. Vous pouvez utiliser l'exemple comme modèle pour créer rapidement de nouveaux rapports et visualisations basés sur les données brutes d'accident de votre propre application :

  1. Ouvrez le modèle de tableau de bord Crashlytics Data Studio .
  2. Cliquez sur Utiliser un modèle dans le coin supérieur droit.
  3. Dans la liste déroulante Nouvelle source de données , sélectionnez Créer une nouvelle source de données .
  4. Cliquez sur Sélectionner sur la carte BigQuery .
  5. Sélectionnez une table contenant les données Crashlytics exportées en choisissant Mes projets > [votre-nom-de-projet] > firebase_crashlytics > [votre-nom-de-table] . Votre tableau de lots est toujours disponible pour la sélection ; si l'exportation en streaming Crashlytics BigQuery est activée, vous pouvez sélectionner votre table en temps réel à la place.
  6. Sous Configuration , définissez le niveau du modèle Crashlytics sur Default .
  7. Cliquez sur Connecter pour créer la nouvelle source de données.
  8. Cliquez sur Ajouter au rapport pour revenir au modèle Crashlytics.
  9. Enfin, cliquez sur Créer un rapport pour créer votre copie du modèle de tableau de bord Crashlytics Data Studio.