Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Mengekspor data Firebase Crashlytics ke BigQuery

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

  1. Buka halaman Integrasi di Firebase console.
  2. Di kartu BigQuery, klik Tautkan.
  3. 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 yang fatal dan non-fatal.

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
  • Data diekspor sekali sehari
  • Peristiwa secara permanen disimpan sebelum penulisan batch ke BigQuery
  • Dapat diisi ulang hingga 90 hari sebelumnya
  • Data diekspor secara real time
  • Tidak ada isi ulang

Tabel batch cocok untuk analisis jangka panjang dan identifikasi tren dari waktu ke waktu karena kami menyimpan peristiwa secara permanen sebelum menulisnya, dan dapat diisikan ulang ke tabel hingga 90 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 integrasi BigQuery lalu pilih kotak centang Sertakan 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 iOS), 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: Filter menurut 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 memperbaruinya 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 perusahaan developer telah merilis sebuah 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:

  1. Mengaktifkan BigQuery Export untuk Google Analytics. Lihat Mengekspor data project ke BigQuery.

  2. Meng-update 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");
    
  3. 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 error fatal dan non-fatal terbaru, termasuk peristiwa hingga dua hari sebelum penautan, dengan opsi untuk melakukan pengisian ulang hingga 90 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 jika 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 fatal dan non-fatal. Jika ekspor streaming 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 Android atau iOS
bundle_identifier STRING ID paket, mis. com.google.gmail
event_id STRING ID unik untuk peristiwa
is_fatal BOOLEAN Apakah aplikasi mengalami error
issue_id STRING Masalah yang terkait dengan peristiwa
event_timestamp TIMESTAMP Kapan peristiwa terjadi
device RECORD Perangkat lokasi kejadian peristiwa
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 INT65 Byte memori tersisa
storage RECORD Penyimpanan persisten perangkat
storage.used INT64 Byte penyimpanan terpakai
storage.free INT64 Byte penyimpanan tersisa
operating_system RECORD Perincian OS perangkat
operating_system.display_version STRING Versi OS
operating_system.name STRING Nama OS
operating_system.modification_state STRING DIMODIFIKASI atau TIDAK DIMODIFIKASI, yaitu apakah perangkat telah di-jailbreak/di-root
application 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 LATAR BELAKANG atau LATAR DEPAN
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 SISTEM
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 SISTEM
exceptionions.frames.blamed BOOLEAN Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab crash atau error
error REPEATED RECORD Khusus iOS: 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 SISTEM
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 iOS: 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 iOS: 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 SISTEM
threads.frames.blamed BOOLEAN Apakah analisis Crashlytics menentukan bahwa frame ini adalah penyebab error

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 Tren realtime 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:

  1. Buka template Dasbor Data Studio Crashlytics.
  2. Klik Gunakan Template di sudut kanan atas.
  3. Di dropdown Sumber Data Baru, pilih Buat Sumber Data Baru.
  4. Klik Pilih pada kartu BigQuery.
  5. Pilih tabel yang berisi data Crashlytics yang diekspor dengan memilih Project Saya > [nama-project-Anda] > firebase_crashlytics > [nama-tabel-Anda]. Tabel batch Anda selalu tersedia untuk dipilih. Jika ekspor streaming Crashlytics BigQuery diaktifkan, Anda dapat memilih tabel realtime.
  6. Pada Konfigurasi, setel level Template Crashlytics ke Default.
  7. Klik Hubungkan untuk membuat sumber data baru.
  8. Klik Tambahkan ke Laporan untuk kembali ke template Crashlytics.
  9. Terakhir, klik Buat Laporan untuk membuat salinan template Dasbor Data Studio Crashlytics Anda.