Dopo aver esportato i dati di Crashlytics e (facoltativamente) delle sessioni Firebase in BigQuery, puoi iniziare a lavorare con i dati:
Analizzare i dati utilizzando query SQL
Puoi eseguire query sui tuoi dati Crashlytics per generare report personalizzati e riepiloghi. Poiché questi tipi di report personalizzati non sono disponibili nella dashboard Crashlytics della console Firebase, possono integrare l'analisi e la comprensione dei dati sugli arresti anomali. Vedi la raccolta di query di esempio più avanti in questa pagina.Unisci i dati di diversi set di dati
Ad esempio, se scegli di esportare i dati sulle sessioni di Firebase quando configuri l'esportazione dei dati di Crashlytics, puoi comprendere meglio gli utenti senza arresti anomali e le sessioni senza arresti anomali (vedi query di esempio). Inoltre, puoi esportare i dati da vari prodotti Firebase (come Performance Monitoring) o da Google Analytics e poi unirli e analizzarli in BigQuery con i tuoi dati Crashlytics.Crea viste
Utilizzando l'interfaccia utente di BigQuery, puoi creare una vista, ovvero una tabella virtuale definita da una query SQL. Per istruzioni dettagliate sui diversi tipi di viste e su come crearle, consulta la documentazione di BigQuery.
Per informazioni dettagliate sullo schema del set di dati, vedi Schema del set di dati per i dati esportati in BigQuery.
Scopri di più su BigQuery SQL
Scopri i tipi di query che puoi eseguire, inclusi i job di query interattive, i job di query batch e i job di query continue.
Scopri di più sulle istruzioni e sui dialetti SQL supportati in BigQuery.
Scopri come scrivere query utilizzando l'assistenza basata sull'AI (Gemini).
Esempi di query per i dati Crashlytics
Questa sezione fornisce alcuni scenari ed esempi di query che mostrano come utilizzare SQL BigQuery con i dati Crashlytics esportati e i dati delle sessioni Firebase.
- Calcolare le metriche senza arresti anomali utilizzando i dati delle sessioni Firebase
- Arresti anomali per giorno
- Trovare gli arresti anomali più pervasivi
- I 10 dispositivi con il maggior numero di arresti anomali
- Filtrare per chiave personalizzata
- Estrarre gli ID utente
- Trovare tutti gli utenti che riscontrano un problema di arresto anomalo specifico
- Numero di utenti interessati da un problema di arresto anomalo, suddiviso per paese
- I 5 problemi principali riscontrati finora oggi
- I 5 problemi principali a partire dal giorno DATE, incluso oggi
Esempio 1: calcola le metriche senza arresti anomali utilizzando i dati delle sessioni Firebase
Nell'ultima versione, hai lanciato un importante rinnovamento della tua app per risolvere i blocchi in un percorso utente fondamentale. Hai ricevuto recensioni eccezionali dagli utenti, ma vorresti prove quantitative che la tua app è più stabile di prima.
Le metriche senza arresti anomali possono aiutarti a fornire queste informazioni. Queste metriche sono misurazioni importanti che ti aiutano a comprendere lo stato generale della tua app. Con i dati delle sessioni di Firebase e gli eventi Crashlytics, puoi calcolare queste metriche con una query di base.
Ecco alcune query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto
e IOS (anziché il nome pacchetto e ANDROID).
Utenti senza arresti anomali per una versione specifica:
SELECT TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) AS event_date, (1 - (COUNT (DISTINCT installation_uuid) / COUNT (DISTINCT instance_id))) AS CFU FROM `PROJECT_ID.firebase_sessions.PACKAGE_NAME_ANDROID` AS sessions LEFT JOIN `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` AS crashlytics ON TIMESTAMP_TRUNC(sessions.event_timestamp,DAY) = TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) WHERE crashlytics.error_type="FATAL" AND crashlytics.application.display_version="APP_VERSION" AND sessions.application.display_version = "APP_VERSION" GROUP BY event_date ORDER BY event_date
Sessioni senza arresti anomali nell'ultima settimana (ultime 168 ore):
SELECT TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) AS event_date, (1 - (COUNT (DISTINCT crashlytics.firebase_session_id) / COUNT (DISTINCT sessions.session_id))) AS CFS FROM `PROJECT_ID.firebase_sessions.PACKAGE_NAME_ANDROID` AS sessions LEFT JOIN `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` AS crashlytics ON TIMESTAMP_TRUNC(sessions.event_timestamp,DAY) = TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) WHERE crashlytics.error_type="FATAL" AND _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND _PARTITIONTIME < CURRENT_TIMESTAMP() GROUP BY event_date ORDER BY event_date
Esempio 2: arresti anomali per giorno
Dopo aver lavorato per correggere il maggior numero possibile di bug, ritieni che il tuo team sia finalmente pronto per lanciare la nuova app di condivisione di foto. Prima di farlo, vuoi controllare il numero di arresti anomali al giorno nell'ultimo mese, per assicurarti che il bug-bash abbia reso l'app più stabile nel tempo.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
Esempio 3: trova gli arresti anomali più pervasivi
Per dare la giusta priorità ai piani di produzione, devi trovare i 10 arresti anomali più pervasivi nella tua app. Produci una query che fornisca i punti di dati pertinenti.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
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 `PROJECT_ID.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;
Esempio 4: i 10 dispositivi con il maggior numero di arresti anomali
L'autunno è la stagione dei nuovi smartphone. La tua azienda sa che questo significa anche che è arrivata la stagione dei nuovi problemi specifici dei dispositivi, soprattutto per Android. Per prevenire i problemi di compatibilità imminenti, hai creato una query che identifica i 10 dispositivi che hanno subito il maggior numero di arresti anomali nell'ultima settimana (168 ore).
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `PROJECT_ID.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;
Esempio 5: filtra per chiave personalizzata
Sei uno sviluppatore di giochi che vuole sapere in quale livello del tuo gioco si verificano più arresti anomali.
Per monitorare questa statistica, imposta una chiave Crashlytics personalizzata
(iOS+ |
Android |
Flutter |
Unity
)
chiamata current_level e aggiornala ogni volta che l'utente raggiunge un nuovo livello.
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Java
Crashlytics.setInt("current_level", 3);
Con questa chiave nell'esportazione in BigQuery, puoi scrivere una query per
generare un report sulla distribuzione dei valori current_level associati a ogni evento
di arresto anomalo.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
value
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
key = "current_level"
GROUP BY
key,
value
ORDER BY
num_of_crashes DESCEsempio 6: estrazione degli ID utente
Hai un'app per Android con accesso in anteprima. La maggior parte dei tuoi utenti lo adora, ma tre hanno riscontrato un numero insolito di arresti anomali. Per risolvere il problema, scrivi una query che estrae tutti gli eventi di arresto anomalo per questi utenti, utilizzando i loro ID utente.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT *
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
user.id
Esempio 7: trova tutti gli utenti che riscontrano un problema di arresto anomalo specifico
Il tuo team ha rilasciato per errore un bug critico a un gruppo di beta tester. Il tuo team è riuscito a utilizzare la query dell'esempio "Trova gli arresti anomali più pervasivi" riportato sopra per identificare l'ID problema di arresto anomalo specifico. Ora il tuo team vuole eseguire una query per estrarre l'elenco degli utenti dell'app interessati da questo arresto anomalo.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT user.id as user_id
FROM
`PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
issue_id = "ISSUE_ID"
AND application.display_version = "APP_VERSION"
AND user.id != ""
ORDER BY
user.id;Esempio 8: numero di utenti interessati da un problema di arresto anomalo, suddivisi per paese
Il tuo team ha rilevato un bug critico durante l'implementazione di una nuova release. Hai potuto utilizzare la query dell'esempio "Trova gli arresti anomali più pervasivi" riportato sopra per identificare l'ID problema di arresto anomalo specifico. Il tuo team vorrebbe ora verificare se questo arresto anomalo si è diffuso tra gli utenti di diversi paesi in tutto il mondo.
Per scrivere questa query, il tuo team dovrà:
Attiva l'esportazione dei dati di Google Analytics in BigQuery. Consulta Esportare i dati del progetto in BigQuery.
Aggiorna la tua app per trasmettere un ID utente sia all'SDK Google Analytics sia all'SDK Crashlytics.
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");Scrivi una query che utilizzi il campo ID utente per unire gli eventi nel set di dati Google Analytics con gli arresti anomali nel set di dati Crashlytics.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto e
IOS(anziché il nome del pacchetto eANDROID).SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c INNER JOIN `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
Esempio 9: i 5 problemi principali finora oggi
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Esempio 10: i 5 problemi principali a partire da DATA, incluso oggi
Puoi anche combinare le tabelle batch e in tempo reale con una query di unione per aggiungere
informazioni in tempo reale ai dati batch affidabili. Poiché event_id è una chiave
primaria, puoi utilizzare DISTINCT event_id per deduplicare gli eventi comuni delle due
tabelle.
Ecco un esempio di query per un'app per Android. Per un'app per iOS, utilizza l'ID bundle
e IOS (anziché il nome del pacchetto e ANDROID).
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`) WHERE event_timestamp >= PARSE_TIMESTAMP("%Y_%m_%d", "YYYY_MM_DD") GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Passaggi successivi
Crea dashboard personalizzate utilizzando i dati esportati e vari servizi Google Cloud, come Looker Studio.
Scopri di più sullo schema del set di dati per i dati esportati.