Vous pouvez exporter vos données Crashlytics dans 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 cloud et de les utiliser pour la visualisation et des tableaux de bord personnalisés avec Google Data Studio.
Activer l'exportation BigQuery
- Accédez à la page Intégrations dans la console Firebase.
- Dans la fiche BigQuery , cliquez sur Associer .
- 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 les applications qui envoient des données .
- Firebase exporte une copie de vos données existantes vers BigQuery. Pour chaque application liée, cela inclut une table de lot contenant les données de la synchronisation quotidienne.
- Si vous activez l'exportation en continu Crashlytics BigQuery, toutes les applications liées auront également 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 de 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 avec l'ID com.google.test
seraient dans une table nommée com_google_test_ANDROID
. Cette table de lots est mise à jour une fois par jour. Si vous activez l'exportation en continu Crashlytics BigQuery, les données Firebase Crashlytics seront également diffusées en temps réel sur com_google_test_ANDROID_REALTIME
.
Chaque ligne d'un tableau représente un événement qui s'est produit dans l'application, y compris les plantages, les erreurs non fatales et les ANR.
Activer l'exportation de flux Crashlytics BigQuery
Vous pouvez diffuser vos données Crashlytics en temps réel avec BigQueryStreaming . Vous pouvez l'utiliser à toutes fins nécessitant des données en direct, telles que la présentation d'informations dans un tableau de bord en direct, la surveillance d'un déploiement en direct ou la surveillance de problèmes d'application qui déclenchent des alertes et des workflows personnalisés.
L'exportation en continu Crashlytics BigQuery n'est pas disponible pour le bac à sable BigQuery.
Lorsque vous activez l'exportation en continu Crashlytics BigQuery, en plus de la table des 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 |
---|---|
|
|
La table de lot est idéale pour l'analyse à long terme et l'identification des tendances dans le temps car nous stockons durablement les événements avant de les écrire, et ils peuvent être remplis dans la table jusqu'à 90 jours. Lorsque nous écrivons des données dans votre tableau en temps réel, nous les écrivons immédiatement dans BigQuery. Il est donc 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 obtenir les 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 la diffusion 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 de la section 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 de 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), les journaux Crashlytics, ainsi que d'autres données.
Utilisation des 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 plantage dans des résumés plus faciles à comprendre.
Exemple 1 : Plantages par 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 plantages par jour au cours du mois écoulé, pour s'assurer 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 : Rechercher les plantages 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 plantages les plus répandus 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 des téléphones ! Un développeur sait que cela signifie également que c'est la nouvelle saison des problèmes spécifiques à l'appareil. Pour anticiper les problèmes de compatibilité imminents, ils ont mis en place 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 subit 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 plantage :
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 a une application en accès anticipé. La plupart de leurs utilisateurs l'adorent, mais trois ont connu un nombre inhabituel de plantages. Pour aller au fond du problème, ils écrivent une requête qui récupère tous les événements de plantage pour ces utilisateurs, à l'aide de 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 plantage particulier
Un développeur a communiqué un bogue 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 de problème de plantage spécifique. Maintenant, ils aimeraient exécuter une requête pour extraire la liste des utilisateurs de l'application qui ont été touchés par ce plantage :
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 plantage, ventilé par pays
Maintenant, l'équipe a détecté un bogue 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 de problème de plantage spécifique. L'équipe aimerait maintenant voir si ce crash s'est propagé aux utilisateurs dans différents pays du monde.
Pour rédiger cette requête, l'équipe devra :
Activez les exportations BigQuery pour Google Analytics. Consultez Exporter des données de projet vers BigQuery .
Mettez à jour leur application pour transmettre un ID 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");
É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 continu 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 problèmes les plus fréquents depuis le DATE, y compris aujourd'hui
Nécessite l'activation de l'exportation en continu Crashlytics BigQuery.
Dans cet exemple, nous combinons des tables de lot et en temps réel pour ajouter des informations en temps réel aux données de lot fiables. Étant donné que event_id
est une clé primaire, nous pouvons utiliser DISTINCT event_id
pour dédupliquer 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. La disponibilité des données dans BigQuery peut prendre quelques minutes après chaque exportation.
Jeux 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 désactivé l'exportation des données pour cette application. Firebase nomme les tables en fonction de l'identifiant de 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 tables contiennent un ensemble standard de données Crashlytics en plus des 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 continu 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 |
---|---|---|
plateforme | CHAÎNE | Applications Apple ou Android |
bundle_identifier | CHAÎNE | L'ID du groupe, 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) |
issue_id | CHAÎNE | Le problème lié à l'événement |
variant_id | CHAÎNE | La variante de problème associée à cet événement Notez que tous les événements n'ont pas de variante de problème associée. |
événement_horodatage | HORODATAGE | Lorsque 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 d'appareil |
appareil.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 |
sans.mémoire | INT65 | 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 | Détails du système d'exploitation de l'appareil |
operating_system.display_version | CHAÎNE | La version du système d'exploitation |
nom_du_système_d'exploitation | CHAÎNE | Le nom du système d'exploitation |
operating_system.modification_state | CHAÎNE | MODIFIÉ ou NON MODIFIÉ, c'est-à-dire si l'appareil a été jailbreaké/enraciné |
système_d'exploitation.type | CHAÎNE | Le type de système d'exploitation sur l'appareil. Par exemple, IOS, MACOS |
operating_system.device_type | CHAÎNE | Le type d'appareil. Par exemple MOBILE, TABLETTE, TV |
application | ENREGISTRER | L'application qui a généré l'événement |
application.build_version | CHAÎNE | La version de 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 : ID 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 ID qui identifie une installation d'application et d'appareil unique |
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 |
device_orientation | CHAÎNE | PORTRAIT, PAYSAGE, FACE_UP ou FACE_DOWN |
process_state | CHAÎNE | ARRIÈRE-PLAN ou PREMIER PLAN |
journaux | ENREGISTREMENT RÉPÉTÉ | Messages de journal horodatés générés par le journal Crashlytics, s'il est activé |
journaux.horodatage | HORODATAGE | Lorsque le journal a été créé |
logs.message | CHAÎNE | Le message enregistré |
chapelure | ENREGISTREMENT RÉPÉTÉ | Fil d'Ariane Google Analytics horodaté, si activé |
chapelure.horodatage | HORODATAGE | L'horodatage associé au fil d'Ariane |
chapelure.nom | CHAÎNE | Le nom associé au fil d'Ariane |
chapelure.params | ENREGISTREMENT RÉPÉTÉ | Paramètres associés au fil d'Ariane |
chapelure.params.key | CHAÎNE | Une clé de paramètre associée au fil d'Ariane |
chapelure.params.value | CHAÎNE | Une valeur de paramètre associée au fil d'Ariane |
blâme_frame | ENREGISTRER | Le cadre identifié comme étant la cause première du crash ou de l'erreur |
blâme_frame.line | INT64 | Le numéro de ligne du fichier du cadre |
blâme_frame.file | CHAÎNE | Le nom du fichier cadre |
blâme_frame.symbol | 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.address | INT64 | L'adresse dans l'image binaire qui contient le code, non définie pour les cadres 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 ce cadre 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.imbriquées | BOOLÉEN | Vrai pour tous sauf la dernière exception lancé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 plantage |
exceptions.frames | ENREGISTREMENT RÉPÉTÉ | Les cadres associés à l'exception |
exceptions.frames.line | INT64 | Le numéro de ligne du fichier du cadre |
exceptions.frames.file | CHAÎNE | Le nom du fichier cadre |
exceptions.frames.symbol | 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.address | INT64 | L'adresse dans l'image binaire qui contient le code, non définie pour les cadres 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 ce cadre est la cause du crash ou de l'erreur |
erreur | ENREGISTREMENT RÉPÉTÉ | Applications Apple uniquement : erreurs non fatales |
erreur.nom_file d'attente | CHAÎNE | La file d'attente sur laquelle le thread s'exécutait |
code d'erreur | INT64 | Code d'erreur associé à l'erreur NSError personnalisée de l'application |
erreur.titre | CHAÎNE | Le titre du fil |
erreur.sous-titre | CHAÎNE | Le sous-titre du fil |
erreur.blâmé | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que ce cadre est la cause de l'erreur |
error.frames | ENREGISTREMENT RÉPÉTÉ | Les cadres du stacktrace |
error.frames.line | INT64 | Le numéro de ligne du fichier du cadre |
error.frames.file | CHAÎNE | Le nom du fichier cadre |
error.frames.symbol | 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 |
error.frames.address | INT64 | L'adresse dans l'image binaire qui contient le code |
error.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 |
error.frames.blamed | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que ce cadre est la cause de l'erreur |
fils | ENREGISTREMENT RÉPÉTÉ | Threads 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.queue_name | 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 causé le plantage de l'application, présent uniquement sur les threads natifs plantés |
threads.signal_code | CHAÎNE | Le code du signal qui a causé le plantage de l'application ; présent uniquement sur les threads natifs en panne |
threads.crash_address | INT64 | L'adresse du signal qui a causé le plantage de l'application ; présent uniquement sur les threads natifs en panne |
threads.code | INT64 | Applications Apple uniquement : code d'erreur de l'erreur NSError consignée personnalisée de l'application |
fils.titre | CHAÎNE | Le titre du fil |
fils.sous-titre | CHAÎNE | Le sous-titre du fil |
fils.blâmé | BOOLÉEN | Si l'analyse de Crashlytics a déterminé que ce cadre est la cause du crash ou de l'erreur |
threads.frames | ENREGISTREMENT RÉPÉTÉ | Les cadres du fil |
threads.frames.line | INT64 | Le numéro de ligne du fichier du cadre |
threads.frames.file | CHAÎNE | Le nom du fichier cadre |
threads.frames.symbol | CHAÎNE | Le symbole hydraté, ou symbole 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.address | 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 ce cadre est la cause de l'erreur |
unity_metadata.unity_version | CHAÎNE | La version de 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_frequency_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 inclut un ensemble complet de dimensions et de statistiques issues du schéma Crashlytics BigQuery exporté. Si vous avez activé l'exportation en continu 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 de plantage de votre propre application :
- Ouvrez le modèle de tableau de bord Crashlytics Data Studio .
- Cliquez sur Utiliser le modèle dans le coin supérieur droit.
- Dans la liste déroulante Nouvelle source de données , sélectionnez Créer une nouvelle source de données .
- Cliquez sur Sélectionner sur la fiche BigQuery .
- Sélectionnez une table contenant des données Crashlytics exportées en choisissant Mes projets > [your-project-name] > firebase_crashlytics > [your-table-name] . Votre table de lot est toujours disponible pour être sélectionnée ; si l'exportation en continu Crashlytics BigQuery est activée, vous pouvez sélectionner votre table en temps réel à la place.
- Sous Configuration , définissez le niveau du modèle Crashlytics sur Par défaut .
- Cliquez sur Connecter pour créer la nouvelle source de données.
- Cliquez sur Ajouter au rapport pour revenir au modèle Crashlytics.
- Enfin, cliquez sur Créer un rapport pour créer votre copie du modèle de tableau de bord Crashlytics Data Studio.