Anda dapat mengekspor data Crashlytics ke BigQuery untuk dianalisis lebih lanjut. Dengan BigQuery, Anda dapat menganalisis data menggunakan BigQuery SQL, mengekspornya ke penyedia cloud lain, dan menggunakannya untuk visualisasi dan dasbor kustom dengan Google Data Studio.
Mengaktifkan BigQuery Export
- Buka halaman Integrations di Firebase console.
- Di kartu BigQuery, klik Link.
- Ikuti petunjuk di layar untuk mengaktifkan BigQuery.
Saat Anda menautkan project ke BigQuery:
- Firebase akan menyiapkan sinkronisasi harian data Anda dari project Firebase ke BigQuery.
- Secara default, semua aplikasi di project Anda akan ditautkan ke BigQuery, dan semua aplikasi yang Anda tambahkan nanti ke project akan otomatis ditautkan ke BigQuery. Anda dapat mengelola aplikasi yang akan mengirimkan data.
- Firebase mengekspor salinan data Anda yang sudah ada ke BigQuery. Untuk setiap aplikasi tertaut, data ini mencakup tabel batch yang berisi data dari sinkronisasi harian.
- Jika Anda mengaktifkan ekspor streaming BigQuery Crashlytics, semua aplikasi tertaut juga akan memiliki tabel realtime yang berisi data yang terus-menerus diperbarui.
Untuk menonaktifkan BigQuery Export, batalkan tautan project Anda di Firebase console.
Data apa yang diekspor ke BigQuery?
Data Firebase Crashlytics diekspor ke set data BigQuery bernama firebase_crashlytics
. Secara default, setiap tabel akan dibuat di dalam set data Crashlytics untuk setiap aplikasi di project Anda. Firebase memberi nama tabel berdasarkan ID paket aplikasi, dengan tanda titik dikonversi menjadi garis bawah dan nama platform ditambahkan ke bagian akhir.
Misalnya, data untuk aplikasi dengan ID com.google.test
akan berada dalam tabel bernama com_google_test_ANDROID
. Tabel batch ini diperbarui sekali setiap hari. Jika Anda mengaktifkan ekspor streaming BigQuery Crashlytics, data Firebase Crashlytics juga akan di-streaming secara real time ke com_google_test_ANDROID_REALTIME
.
Setiap baris dalam tabel mewakili peristiwa yang terjadi di aplikasi, termasuk error, error non-fatal, dan ANR.
Mengaktifkan ekspor streaming BigQuery Crashlytics
Anda dapat melakukan streaming data Crashlytics secara real-time dengan BigQueryStreaming. Anda dapat menggunakannya untuk tujuan apa pun yang memerlukan data live, seperti menyajikan informasi di dasbor live, mengamati peluncuran secara live, atau memantau masalah aplikasi yang memicu pemberitahuan dan alur kerja kustom.
Ekspor streaming BigQuery Crashlytics tidak tersedia untuk sandbox BigQuery.
Saat mengaktifkan ekspor streaming BigQuery Crashlytics, selain tabel batch, Anda akan memiliki tabel realtime. Berikut ini perbedaan yang harus Anda ketahui antara kedua tabel:
Tabel Batch | Tabel Realtime |
---|---|
|
|
Tabel batch cocok untuk analisis jangka panjang dan mengidentifikasi tren dari waktu ke waktu karena kami menyimpan peristiwa secara permanen sebelum menulisnya, dan dapat diisikan ulang ke tabel hingga 30 hari. Saat menulis data ke tabel realtime, kami langsung menulisnya ke BigQuery sehingga cocok untuk dasbor live dan pemberitahuan kustom. Kedua tabel ini dapat digabungkan dengan kueri penggabungan untuk mendapatkan manfaat keduanya. Lihat kueri Contoh 9 di bawah.
Secara default, tabel realtime memiliki masa berlaku partisi 30 hari. Untuk mempelajari cara mengubah masa berlaku ini, lihat Memperbarui masa berlaku partisi.
Mengaktifkan streaming BigQuery Crashlytics
Untuk mengaktifkan streaming, buka bagian Crashlytics di halaman integrations BigQuery lalu pilih kotak centang Include streaming.
Template Data Studio
Untuk mengaktifkan data realtime di template Data Studio, ikuti petunjuk di Memvisualisasikan data Crashlytics yang diekspor dengan Data Studio.
Tabel virtual
Anda dapat mengubah contoh kueri di bawah menjadi tabel virtual dengan menggunakan UI BigQuery. Lihat Membuat tabel virtual untuk petunjuk selengkapnya.
Apa yang dapat dilakukan dengan data yang diekspor?
Ekspor BigQuery berisi data error mentah termasuk jenis perangkat, sistem operasi, pengecualian (aplikasi Android) atau error (aplikasi Apple), dan log Crashlytics, serta data lainnya.
Bekerja dengan data Firebase Crashlytics di BigQuery
Contoh berikut menunjukkan kueri yang bisa Anda jalankan pada data Crashlytics Anda. Kueri ini menghasilkan laporan yang tidak tersedia di dasbor Crashlytics.
Contoh kueri Crashlytics
Contoh-contoh berikut menunjukkan cara membuat laporan yang menggabungkan data peristiwa error menjadi ringkasan yang lebih mudah dipahami.
Contoh 1: Error per hari
Setelah berupaya memperbaiki bug sebanyak mungkin, seorang lead developer berpikir bahwa timnya telah siap meluncurkan aplikasi berbagi foto baru mereka. Sebelum melakukannya, mereka ingin memeriksa jumlah error per hari selama sebulan terakhir, untuk memastikan pemecahan masalah bug mereka membuat aplikasi menjadi lebih stabil dari waktu ke waktu:
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;
Contoh 2: Menemukan error yang paling sering terjadi
Untuk memprioritaskan rencana produksi dengan baik, seorang manajer proyek memikirkan cara menunjukkan 10 error yang paling sering terjadi pada produk mereka. Mereka kemudian membuat kueri yang menyediakan titik data terkait:
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;
Contoh 3: 10 perangkat yang paling sering mengalami error
Musim gugur adalah musim ponsel baru. Para developer tahu bahwa ini juga berarti musim kemunculan masalah pada perangkat baru. Untuk mengatasi masalah kompatibilitas tersebut, mereka mengumpulkan kueri yang mengidentifikasi 10 perangkat yang paling sering mengalami error dalam seminggu terakhir:
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;
Contoh 4: Memfilter berdasarkan kunci kustom
Sebuah perusahaan developer game ingin mengetahui pada level mana game paling sering mengalami error. Untuk membantu melacaknya, mereka membuat kunci Crashlytics kustom current_level
, dan mengupdatenya setiap kali pengguna mencapai level baru.
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
Dengan keberadaan kunci tersebut di ekspor BigQuery, mereka kemudian menulis kueri untuk melaporkan distribusi nilai current_level
yang terkait dengan setiap peristiwa error:
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
Contoh 5: Ekstraksi ID pengguna
Sebuah perusahaan developer memiliki aplikasi dalam fase akses awal. Sebagian besar pengguna menyukai aplikasi tersebut, tetapi tiga pengguna mengalami jumlah error yang tidak biasa. Untuk menyelesaikan masalah, mereka menulis kueri yang menarik semua peristiwa error pada pengguna tersebut menggunakan ID pengguna mereka:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Contoh 6: Menemukan semua pengguna yang mengalami masalah error tertentu
Sebuah tim developer telah merilis bug kritis kepada sekelompok penguji beta. Tim developer dapat menggunakan kueri dari Contoh 2 di atas untuk mengidentifikasi ID masalah error yang spesifik. Sekarang, mereka ingin menjalankan kueri untuk mengekstrak daftar pengguna aplikasi yang terkena dampak error ini:
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;
Contoh 7: Jumlah pengguna yang terkena dampak masalah error, dibagi berdasarkan negara
Sekarang, tim developer telah mendeteksi bug kritis selama peluncuran rilis baru. Mereka dapat menggunakan kueri dari Contoh 2 di atas untuk mengidentifikasi ID masalah error yang spesifik. Tim sekarang ingin melihat apakah error ini telah menyebar ke pengguna di berbagai negara di dunia.
Untuk menulis kueri ini, tim harus:
Mengaktifkan BigQuery Export untuk Google Analytics. Lihat Mengekspor data project ke BigQuery.
Mengupdate aplikasi mereka untuk meneruskan ID pengguna ke Google Analytics SDK dan Crashlytics SDK.
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Menulis kueri yang menggunakan kolom ID pengguna untuk menggabungkan peristiwa di set data BigQuery Google Analytics dengan error di set data BigQuery 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
Contoh 8: 5 masalah teratas sejauh ini
Memerlukan pengaktifan ekspor streaming BigQuery Crashlytics
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;
Contoh 9: 5 masalah teratas sejak DATE, termasuk hari ini
Memerlukan pengaktifan ekspor streaming BigQuery Crashlytics.
Dalam contoh ini, kami menggabungkan tabel batch dan realtime untuk menambahkan informasi realtime ke data batch yang dapat diandalkan. Karena event_id
adalah kunci utama, kita dapat menggunakan DISTINCT event_id
untuk menghilangkan duplikat setiap peristiwa umum dari kedua tabel.
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;
Memahami skema Firebase Crashlytics di BigQuery
Ketika Anda menautkan Crashlytics dengan BigQuery, Firebase akan mengekspor peristiwa terbaru (error, error non-fatal, dan ANR), termasuk peristiwa hingga dua hari sebelum penautan, dengan opsi untuk pengisian ulang hingga 30 hari.
Sejak saat itu hingga Anda menonaktifkan link, Firebase akan mengekspor peristiwa Crashlytics setiap hari. Butuh beberapa menit agar data dapat tersedia di BigQuery setelah setiap ekspor.
Set data
Firebase Crashlytics membuat set data baru di BigQuery untuk data Crashlytics. Set data mencakup seluruh project Anda, meskipun project tersebut memiliki beberapa aplikasi.
Tabel
Firebase Crashlytics membuat tabel dalam set data untuk setiap aplikasi di project Anda, kecuali jika Anda memilih untuk tidak mengekspor data untuk aplikasi tersebut. Firebase memberi nama tabel berdasarkan ID paket aplikasi, dengan tanda titik dikonversi menjadi garis bawah dan nama platform ditambahkan ke bagian akhir.
Misalnya, data untuk aplikasi Android dengan ID com.google.test
akan berada di tabel bernama com_google_test_ANDROID
, dan data realtime (jika diaktifkan) akan berada di tabel bernama com_google_test_ANDROID_REALTIME
Tabel berisi seperangkat standar data Crashlytics selain kunci kustom Crashlytics yang ditentukan oleh developer.
Baris
Setiap baris dalam tabel merepresentasikan error yang dialami aplikasi.
Kolom
Kolom dalam tabel identik untuk error, error non-fatal, dan ANR. Jika ekspor streaming BigQuery Crashlytics diaktifkan, tabel realtime akan memiliki kolom yang sama dengan tabel batch. Kolom dalam pengeksporan tercantum di bawah ini.
Tanpa pelacakan tumpukan
Kolom muncul di baris yang mewakili peristiwa tanpa pelacakan tumpukan.
Nama Kolom | Jenis Data | Deskripsi |
---|---|---|
platform | STRING | Aplikasi Apple atau Android |
bundle_identifier | STRING | ID paket, mis. com.google.gmail |
event_id | STRING | ID unik untuk peristiwa |
is_fatal | BOOLEAN | Apakah aplikasi mengalami error |
error_type | STRING | Jenis error peristiwa (FATAL, NON_FATAL, ANR) |
issue_id | STRING | Masalah yang terkait dengan peristiwa |
variant_id | STRING | Varian masalah yang terkait dengan peristiwa ini Perhatikan bahwa tidak semua peristiwa memiliki varian masalah terkait. |
event_timestamp | TIMESTAMP | Kapan peristiwa terjadi |
device | RECORD | Perangkat tempat peristiwa terjadi |
device.manufacturer | STRING | Produsen perangkat |
device.model | STRING | Model perangkat |
device.architecture | STRING | X86_32, X86_64, ARMV7, ARM64, ARMV7S, atau ARMV7K |
memory | RECORD | Status memori perangkat |
memory.used | INT64 | Byte memori terpakai |
memory.free | INT64 | Byte memori tersisa |
storage | RECORD | Penyimpanan persisten perangkat |
storage.used | INT64 | Byte penyimpanan terpakai |
storage.free | INT64 | Byte penyimpanan tersisa |
operating_system | RECORD | Detail OS di perangkat |
operating_system.display_version | STRING | Versi OS di perangkat |
operating_system.name | STRING | Nama OS di perangkat |
operating_system.modification_state | STRING | Apakah perangkat telah diubah, misalnya di-jailbreak/di-root (MODIFIED atau UNMODIFIED) |
operating_system.type | STRING | Jenis OS yang berjalan di perangkat (misalnya, iOS, MACOS); hanya tersedia untuk aplikasi platform Apple |
operating_system.device_type | STRING | Jenis perangkat (misalnya, SELULER, TABLET, TV, dll.); juga disebut dengan "kategori perangkat" |
aplikasi | RECORD | Aplikasi yang menimbulkan peristiwa |
application.build_version | STRING | Versi build aplikasi |
application.display_version | STRING | |
user | RECORD | Opsional: Info yang dikumpulkan dari pengguna aplikasi |
user.name | STRING | Opsional: Nama pengguna |
user.email | STRING | Opsional: Alamat email pengguna |
user.id | STRING | Opsional: ID khusus aplikasi yang terkait dengan pengguna |
custom_keys | REPEATED RECORD | Key-value pair yang ditentukan developer |
custom_keys.key | STRING | Kunci yang ditentukan developer |
custom_keys.value | STRING | Nilai yang ditentukan developer |
installation_uuid | STRING | ID yang mengidentifikasi penginstalan aplikasi & perangkat unik |
crashlytics_sdk_versions | STRING | Versi Crashlytics SDK yang menimbulkan peristiwa |
app_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP, atau FACE_DOWN |
device_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP, atau FACE_DOWN |
process_state | STRING | BACKGROUND atau FOREGROUND |
logs | REPEATED RECORD | Pesan log berstempel waktu yang dihasilkan oleh pencatat log Crashlytics, jika diaktifkan |
logs.timestamp | TIMESTAMP | Kapan log dibuat |
logs.message | STRING | Pesan yang dicatat dalam log |
breadcrumbs | REPEATED RECORD | Breadcrumbs Google Analytics berstempel waktu, jika diaktifkan |
breadcrumbs.timestamp | TIMESTAMP | Stempel waktu yang terkait dengan breadcrumb |
breadcrumbs.name | STRING | Nama yang terkait dengan breadcrumb |
breadcrumbs.params | REPEATED RECORD | Parameter yang terkait dengan breadcrumb |
breadcrumbs.params.key | STRING | Kunci parameter yang terkait dengan breadcrumb |
breadcrumbs.params.value | STRING | Nilai parameter yang terkait dengan breadcrumb |
blame_frame | RECORD | Frame yang diidentifikasi sebagai akar penyebab crash atau error |
blame_frame.line | INT64 | Nomor baris file frame |
blame_frame.file | STRING | Nama file frame |
blame_frame.symbol | STRING | Simbol terhidrasi, atau simbol mentah jika tidak dapat dihidrasi |
blame_frame.offset | INT64 | Offset byte ke image biner yang berisi kode, tidak disetel untuk pengecualian Java |
blame_frame.address | INT64 | Alamat dalam image biner yang berisi kode, tidak disetel untuk frame Java |
blame_frame.library | STRING | Nama tampilan library yang menyertakan frame |
blame_frame.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM, atau SYSTEM |
blame_frame.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab crash atau error |
exceptions | REPEATED RECORD | Khusus Android: Pengecualian yang terjadi selama peristiwa ini. Pengecualian bertingkat disajikan dalam urutan kronologis terbalik (baca: data terakhir adalah pengecualian pertama yang ditampilkan) |
exception.type | STRING | Jenis pengecualian, mis. java.lang.IllegalStateException |
exceptions.exception_message | STRING | Pesan yang terkait dengan pengecualian |
exception.nested | BOOLEAN | True untuk semua selain pengecualian yang terakhir kali ditampilkan (yaitu data pertama) |
exceptionions.title | STRING | Judul thread |
exception.subtitle | STRING | Subjudul thread |
exceptions.blamed | BOOLEAN | True jika Crashlytics menentukan bahwa pengecualian menyebabkan error atau crash |
exceptionions.frames | REPEATED RECORD | Frame yang terkait dengan pengecualian |
exceptionions.frames.line | INT64 | Nomor baris file frame |
exceptionions.frames.file | STRING | Nama file frame |
exceptionions.frames.symbol | STRING | Simbol terhidrasi, atau simbol mentah jika tidak dapat dihidrasi |
exceptionions.frames.offset | INT64 | Offset byte ke image biner yang berisi kode, tidak disetel untuk pengecualian Java |
exceptionions.frames.address | INT64 | Alamat dalam image biner yang berisi kode, tidak disetel untuk frame Java |
exceptionions.frames.library | STRING | Nama tampilan library yang menyertakan frame |
exceptionions.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM, atau SYSTEM |
exceptionions.frames.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab crash atau error |
error | REPEATED RECORD | Khusus aplikasi Apple: error non-fatal |
error.queue_name | STRING | Antrean tempat thread berjalan |
error.code | INT64 | Kode error yang terkait dengan NSError yang dicatat khusus pada aplikasi |
error.title | STRING | Judul thread |
error.subtitle | STRING | Subjudul thread |
error.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab error |
error.frames | REPEATED RECORD | Frame stacktrace |
error.frames.line | INT64 | Nomor baris file frame |
error.frames.file | STRING | Nama file frame |
error.frames.symbol | STRING | Simbol terhidrasi, atau simbol mentah jika tidak dapat dihidrasi |
error.frames.offset | INT64 | Offset byte ke image biner yang berisi kode |
error.frames.address | INT64 | Alamat dalam image biner yang berisi kode |
error.frames.library | STRING | Nama tampilan library yang menyertakan frame |
error.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM, atau SYSTEM |
error.frames.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab error |
threads | REPEATED RECORD | Thread yang ada pada saat peristiwa |
threads.crashed | BOOLEAN | Apakah thread error |
threads.thread_name | STRING | Nama thread |
threads.queue_name | STRING | Khusus aplikasi Apple: Antrean tempat thread berjalan |
threads.signal_name | STRING | Nama sinyal yang menyebabkan aplikasi error, hanya ada di thread native yang error |
threads.signal_code | STRING | Kode sinyal yang menyebabkan aplikasi error; hanya ada di thread native yang error |
threads.crash_address | INT64 | Alamat sinyal yang menyebabkan aplikasi error; hanya ada di thread native yang error |
threads.code | INT64 | Khusus aplikasi Apple: Kode error NSError yang dicatat khusus pada aplikasi |
threads.title | STRING | Judul thread |
threads.subtitle | STRING | Subjudul thread |
threads.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab crash atau error |
threads.frames | REPEATED RECORD | Frame thread |
threads.frames.line | INT64 | Nomor baris file frame |
threads.frames.file | STRING | Nama file frame |
threads.frames.symbol | STRING | Simbol terhidrasi, atau simbol mentah jika tidak terhidrasi |
threads.frames.offset | INT64 | Offset byte ke image biner yang berisi kode |
threads.frames.address | INT64 | Alamat dalam image biner yang berisi kode |
threads.frames.library | STRING | Nama tampilan library yang menyertakan frame |
threads.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM, atau SYSTEM |
threads.frames.blamed | BOOLEAN | Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab error |
unity_metadata.unity_version | STRING | Versi Unity yang berjalan di perangkat ini |
unity_metadata.debug_build | BOOLEAN | Jika ini adalah build debug |
unity_metadata.processor_type | STRING | Jenis prosesor |
unity_metadata.processor_count | INT64 | Jumlah prosesor (core) |
unity_metadata.processor_frequency_mhz | INT64 | Frekuensi prosesor dalam MHz |
unity_metadata.system_memory_size_mb | INT64 | Ukuran memori sistem dalam Mb |
unity_metadata.graphics_memory_size_mb | INT64 | Memori grafis dalam MB |
unity_metadata.graphics_device_id | INT64 | ID perangkat grafis |
unity_metadata.graphics_device_vendor_id | INT64 | ID vendor prosesor grafis |
unity_metadata.graphics_device_name | STRING | Nama perangkat grafis |
unity_metadata.graphics_device_vendor | STRING | Vendor perangkat grafis |
unity_metadata.graphics_device_version | STRING | Versi perangkat grafis |
unity_metadata.graphics_device_type | STRING | Jenis perangkat grafis |
unity_metadata.graphics_shader_level | INT64 | Tingkat shader grafis |
unity_metadata.graphics_render_target_count | INT64 | Jumlah target rendering grafis |
unity_metadata.graphics_copy_texture_support | STRING | Dukungan untuk menyalin tekstur grafis seperti yang dijelaskan dalam Unity API |
unity_metadata.graphics_max_texture_size | INT64 | Ukuran maksimum yang didedikasikan untuk rendering tekstur |
unity_metadata.screen_size_px | STRING | Ukuran layar dalam piksel, yang diformat sebagai lebar x tinggi |
unity_metadata.screen_resolution_dpi | STRING | DPI layar sebagai angka floating point |
unity_metadata.screen_refresh_rate_hz | INT64 | Kecepatan refresh layar dalam Hz |
Memvisualisasikan data Crashlytics yang diekspor dengan Data Studio
Google Data Studio mengubah set data Crashlytics Anda di BigQuery menjadi laporan yang mudah dibaca, mudah dibagikan, dan dapat disesuaikan sepenuhnya.
Untuk mempelajari lebih lanjut cara menggunakan Data Studio, lihat panduan memulai Data Studio, Selamat datang di Data Studio.
Menggunakan template laporan Crashlytics
Data Studio memiliki contoh laporan untuk Crashlytics yang mencakup serangkaian dimensi dan metrik komprehensif dari skema BigQuery Crashlytics yang diekspor. Jika telah mengaktifkan ekspor streaming Crashlytics BigQuery, Anda dapat melihat data tersebut di halaman Realtime trends template Data Studio. Anda dapat menggunakan contoh ini sebagai template untuk membuat laporan dan visualisasi baru dengan cepat berdasarkan data error mentah aplikasi Anda sendiri:
- Buka Crashlytics Data Studio Dashboard template.
- Klik Use Template di sudut kanan atas.
- Di dropdown New Data Source, pilih Create New Data Source.
- Klik Select pada kartu BigQuery.
- Pilih tabel yang berisi data Crashlytics yang diekspor dengan memilih My Projects > [nama-proyek-Anda] > firebase_crashlytics > [nama-tabel-Anda]. Tabel batch Anda selalu tersedia untuk dipilih. Jika ekspor streaming Crashlytics BigQuery diaktifkan, Anda dapat memilih tabel realtime.
- Pada Configuration, setel Crashlytics Template level ke Default.
- Klik Connect untuk membuat sumber data baru.
- Klik Add to Report untuk kembali ke template Crashlytics.
- Terakhir, klik Create Report untuk membuat salinan template Dasbor Data Studio Crashlytics Anda.