Dopo aver esportato i dati di Crashlytics e (facoltativamente) delle sessioni Firebase in BigQuery, puoi iniziare a utilizzarli:
Analizzare i dati utilizzando query SQL
Puoi eseguire query sui dati di Crashlytics per generare report e riepiloghi personalizzati. Poiché questi tipi di report personalizzati non sono disponibili nella Crashlytics dashboard della Firebase console, possono integrare l'analisi e la comprensione dei dati sugli arresti anomali. Consulta la raccolta di query di esempio più avanti in questa pagina.Unire i dati di set di dati diversi
Ad esempio, se scegli di esportare i dati delle sessioni Firebase quando configuri Crashlytics l'esportazione dei dati, puoi comprendere meglio gli utenti e le sessioni senza arresti anomali (vedi la query di esempio). Inoltre, puoi esportare i dati da vari prodotti Firebase (ad esempio Performance Monitoring) o da Google Analytics e quindi unirli e analizzarli in BigQuery con i dati di Crashlytics.Creare 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 BigQuery documentazione.
Per informazioni dettagliate sullo schema del set di dati, consulta Schema del set di dati per i dati esportati in BigQuery.
Scopri di più su BigQuery SQL
Scopri di più sui tipi di query che puoi eseguire, inclusi i job di query interattive, i job di query collettive 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).
Query di esempio per i dati Crashlytics
Questa sezione fornisce alcuni esempi di situazioni e query che mostrano come utilizzare BigQuery SQL con i dati Crashlytics e delle sessioni Firebase esportati.
- 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, suddivisi per paese
- I 5 problemi principali finora oggi
- I 5 problemi principali a partire da DATA, incluso oggi
Esempio 1: calcolare le metriche senza arresti anomali utilizzando i dati delle sessioni Firebase
Nell'ultima versione, hai lanciato una revisione importante della tua app per risolvere gli arresti anomali in un Critical User Journey. Hai ricevuto recensioni eccezionali dagli utenti, ma vorresti prove quantitative che la tua app sia 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 di salute generale della tua app. Con i dati delle sessioni Firebase e Crashlytics eventi, puoi calcolare queste metriche con una query di base.
Ecco le query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto e IOS (anziché il nome del 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 a 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 una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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: trovare gli arresti anomali più pervasivi
Per dare la giusta priorità ai piani di produzione, vuoi trovare i 10 arresti anomali più pervasivi nella tua app. Produci una query che fornisce i punti di dati pertinenti.
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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 è la stagione dei nuovi problemi specifici per i dispositivi, soprattutto per Android. Per anticipare i problemi di compatibilità imminenti, hai creato una query che identifica i 10 dispositivi che hanno riscontrato il maggior numero di arresti anomali nell'ultima settimana (168 ore).
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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: filtrare per chiave personalizzata
Sei uno sviluppatore di giochi che vuole sapere quale livello del tuo gioco riscontra il maggior numero di arresti anomali.
Per monitorare questa statistica, imposta una chiave Crashlyticspersonalizzata
(iOS+ |
Android |
Flutter |
Unity
)
chiamata current_level, e la aggiorni 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 quella chiave nell'esportazione in BigQuery, puoi quindi scrivere una query per
segnalare la distribuzione dei valori current_level associati a ogni evento di arresto anomalo.
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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: estrarre gli ID utente
Hai un'app per Android in accesso in anteprima. La maggior parte dei tuoi utenti la adora, ma tre hanno riscontrato un numero insolito di arresti anomali. Per risolvere il problema, scrivi una query che recupera tutti gli eventi di arresto anomalo per questi utenti, utilizzando i loro ID utente.
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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: trovare tutti gli utenti che riscontrano un problema di arresto anomalo specifico
Il tuo team ha rilasciato accidentalmente un bug critico a un gruppo di beta tester. Il tuo team è riuscito a utilizzare la query dell' esempio "Trovare gli arresti anomali più pervasivi" riportato sopra per identificare l'ID del problema di arresto anomalo specifico. Ora il tuo team vorrebbe eseguire una query per estrarre l'elenco degli utenti dell'app interessati da questo arresto anomalo.
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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 il lancio di una nuova release. Sei riuscito a utilizzare la query dell' "esempio Trovare gli arresti anomali più pervasivi" riportato sopra per identificare l'ID del problema di arresto anomalo specifico. Il tuo team vorrebbe ora verificare se questo arresto anomalo si è diffuso agli utenti di diversi paesi in tutto il mondo.
Per scrivere questa query, il tuo team dovrà:
Attivare l'esportazione dei dati Google Analytics in BigQuery. Consulta Esportare i dati del progetto in BigQuery.
Aggiornare l'app per trasmettere un ID utente sia all'Google Analytics SDK sia all'Crashlytics SDK.
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");Scrivere una query che utilizzi il campo ID utente per unire gli eventi nel Google Analytics set di dati con gli arresti anomali nel Crashlytics set di dati.
Ecco una query di esempio 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
CrashlyticsEcco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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
CrashlyticsPuoi anche combinare le tabelle collettive e in tempo reale con una query di unione per aggiungere informazioni in tempo reale ai dati collettivi affidabili. Poiché event_id è una chiave
primaria, puoi utilizzare DISTINCT event_id per deduplicare gli eventi comuni dalle due
tabelle.
Ecco una query di esempio per un'app per Android. Per un'app per iOS, utilizza l'ID pacchetto 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.