Firebase Crashlytics verilerini BigQuery'ye aktarma

Firebase Crashlytics verilerinizi daha ayrıntılı analiz için BigQuery'ye aktarabilirsiniz. BigQuery, verileri BigQuery SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve Looker Studio ile görselleştirme ve özel kontrol panelleri için kullanmanıza olanak tanır.

Dışa aktarılan verilerle neler yapabilirsiniz?

BigQuery dışa aktarımları, cihaz türü, işletim sistemi, istisnalar (Android uygulamaları) veya hatalar (Apple uygulamaları) ve Crashlytics günlükleri dahil olmak üzere ham kilitlenme verilerinin yanı sıra diğer verileri içerir. Hangi Crashlytics verilerin dışa aktarıldığını ve bunların tablo şemasını bu sayfanın ilerleyen kısımlarında inceleyebilirsiniz.

Dışa aktarılan Crashlytics verilerinizle yapabileceklerinize dair bazı örnekler:

  • Sorgu çalıştırma
    Kilitlenme etkinliği verilerini daha kolay anlaşılır özetler halinde toplayan raporlar oluşturmak için Crashlytics verilerinizde sorgu çalıştırabilirsiniz. Bu tür raporlar Crashlytics konsolunun Firebase kontrol panelinde kullanılamadığından, kilitlenme verileriyle ilgili analiz ve anlayışınızı tamamlayabilirler. Bu sayfanın ilerleyen bölümlerinde örnek sorgular bulabilirsiniz.

  • Looker Studio şablonu kullanma
    Crashlytics, dışa aktarılan verilerinizi görselleştirmek için önceden oluşturulmuş Looker Studio şablonu sunar.

  • Görünüm oluşturma
    BigQuery kullanıcı arayüzünü kullanarak SQL sorgusuyla tanımlanan sanal bir tablo olan görünüm oluşturabilirsiniz. Farklı görünüm türleri ve bunların nasıl oluşturulacağı hakkında ayrıntılı talimatlar için BigQuery dokümanlarına bakın.

  • Crashlytics'e özgü verileri Firebase oturum verileriyle birleştirme
    Crashlytics veri aktarımını ayarladığınızda Firebase oturum verilerini de aktarabilirsiniz. Kilitlenme sorunu ile karşılaşmayan kullanıcılar ve kilitlenme sorunu ile karşılaşmayan oturumlar hakkında daha iyi bilgi edinmek için bu oturum verilerini kullanın.

BigQuery için akışı dışa aktarmanın avantajları

Varsayılan olarak veriler, günlük toplu dışa aktarma işlemiyle BigQuery konumuna aktarılır. Ayrıca, BigQuery akışı ile Crashlytics verilerinizi ve Firebase oturumlarınızı gerçek zamanlı olarak yayınlayabilirsiniz. Canlı verilerin gerekli olduğu her amaç için kullanabilirsiniz. Örneğin, bilgileri canlı bir kontrol panelinde sunma, kullanıma sunma sürecini canlı olarak izleme veya uyarıları ve özel iş akışlarını tetikleyen uygulama sorunlarını izleme gibi.

BigQuery'a akış dışa aktarımını etkinleştirdiğinizde toplu tablolara ek olarak anlık tablolar da elde edersiniz. Her iki tablo türü de aynı veri kümesi şemasına sahip olsa da toplu iş tabloları ile gerçek zamanlı tablolar arasında bazı önemli farklılıklar vardır:

Toplu iş tablosu Anlık tablo
  • Veriler günde bir kez dışa aktarılır.
  • Etkinlikler, BigQuery'ya toplu olarak yazılmadan önce kalıcı olarak depolanır.
  • Veriler, 30 gün öncesine kadar geri doldurulabilir*.
  • Veriler anlık olarak dışa aktarılır.
  • Geri doldurma kullanılamaz.

Toplu iş tablosu, uzun vadeli analiz ve zaman içindeki trendleri belirlemek için idealdir. Çünkü etkinlikleri yazmadan önce kalıcı olarak saklarız ve 30 güne kadar tabloya geri doldurulabilirler*. Verileri anlık tablonuza yazdığımızda bunları hemen BigQuery konumuna yazarız. Bu nedenle, canlı gösterge tabloları ve özel uyarılar için idealdir. Bu iki tablo, her ikisinin avantajlarından yararlanmak için birleştirme sorgusuyla birleştirilebilir.

Varsayılan olarak, anlık tablo 30 günlük bir bölüm geçerlilik süresine sahiptir. Bunu nasıl değiştireceğinizi öğrenmek için BigQuery dokümanlarındaki Bölümün geçerlilik süresini ayarlama başlıklı makaleyi inceleyin.

* Yedek reklam desteğiyle ilgili ayrıntıları Yeni dışa aktarma altyapısına yükseltme başlıklı makalede bulabilirsiniz.



BigQuery biçimine dışa aktarmayı etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

  2. BigQuery kartında Bağlantı'yı tıklayın.

  3. Aşağıdaki seçenekler de dahil olmak üzere BigQuery'a dışa aktarmayı etkinleştirmek için ekrandaki talimatları uygulayın:

Dışa aktarmayı etkinleştirdiğinizde ne olur?

  • Firebase, BigQuery'e bağlı uygulamalardan veri dışa aktarır.

    • Kurulum sırasında, projenizdeki tüm uygulamalar varsayılan olarak BigQuery'ya bağlanır. Ancak kurulum sırasında belirli uygulamaları bağlamamayı seçebilirsiniz.

    • Daha sonra Firebase projenize eklediğiniz tüm uygulamalar otomatik olarak BigQuery'ya bağlanır.

    • Dilediğiniz zaman hangi uygulamaların veri dışa aktaracağını yönetebilirsiniz.

  • Firebase, verileri kurulum sırasında seçtiğiniz veri kümesi konumuna aktarır.

    • Bu konum hem Crashlytics veri kümesi hem de Firebase oturumları veri kümesi (oturum verilerinin dışa aktarılması etkinleştirilmişse) için geçerlidir.

    • Bu konum yalnızca BigQuery'ya aktarılan veriler için geçerlidir ve Firebase konsolunun Crashlytics kontrol panelinde veya Android Studio'da kullanılmak üzere depolanan verilerin konumunu etkilemez.

    • Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturma). Daha fazla bilgi için Mevcut dışa aktarma işlemlerinin konumunu değiştirme başlıklı makaleyi inceleyin.

  • Firebase, toplu verilerinizin BigQuery ile günlük olarak senkronize edilmesini sağlar.

    • BigQuery'ya bağlandıktan sonra ilk toplu veri dışa aktarma işlemi 48 saati bulabilir.

    • Günlük senkronizasyon, BigQuery'da ayarlamış olabileceğiniz planlanmış dışa aktarma işlemlerinden bağımsız olarak günde bir kez gerçekleşir. Senkronizasyon işinin zamanlaması ve süresinin değişebileceğini unutmayın. Bu nedenle, dışa aktarma işleminin belirli bir zamanlamasına göre sonraki işlemlerin veya işlerin planlanmasını önermiyoruz.

  • Firebase mevcut verilerinizin bir kopyasını dışa aktararak BigQuery'e aktarır.

    • Bu dışa aktarma işlemi, her bağlı uygulama için günlük senkronizasyondan elde edilen verileri içeren bir toplu tablo içerir.

    • Toplu iş tablosu için manuel olarak veri geri doldurma işlemleri planlayabilirsiniz. Bu işlemler, BigQuery'e dışa aktarmayı etkinleştirdiğinizde son 30 güne kadar veya en son tarih için (hangisi daha yakınsa) planlanabilir.

    Ekim 2024'ün ortasından önce Crashlytics verilerinin dışa aktarılmasını etkinleştirdiyseniz dışa aktarmayı etkinleştirdiğiniz günden önceki 30 günü de doldurabileceğinizi unutmayın.

  • Akışı BigQuery'a dışa aktarmayı etkinleştirirseniz aşağıdaki koşullar geçerlidir.

    • Ayrıca, her bağlı uygulamanın sürekli güncellenen verileri içeren kendi gerçek zamanlı tablosu (uygulamanın günlük toplu dışa aktarma için toplu tablosuna ek olarak) olacaktır.

    • Yayın etkinleştirildikten sonra verilerin yayınlanmaya başlaması 1 saati bulabilir.



Örnek sorgular

1. örnek: Firebase oturum verilerini kullanarak kilitlenme sorunu ile karşılaşmayan kullanıcılarla ilgili metrikleri hesaplama

En son sürümünüzde, kritik bir kullanıcı yolculuğundaki kilitlenmeleri gidermek için uygulamanızda büyük bir yenileme yaptınız. Kullanıcılardan mükemmel yorumlar aldınız ancak uygulamanızın eskisinden daha kararlı olduğuna dair nicel kanıtlar istiyorsunuz.

Kilitlenme içermeyen metrikler bu bilgileri sağlamaya yardımcı olabilir. Bu metrikler, uygulamanızın genel durumunu anlamanıza yardımcı olan önemli ölçümlerdir. Firebase oturum verileri ve Crashlytics etkinlikleriyle bu metrikleri temel bir sorguyla hesaplayabilirsiniz.

Android uygulaması için örnek sorgular aşağıda verilmiştir. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

Belirli bir sürümde kilitlenme sorunu yaşamayan kullanıcılar:

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(_PARTITIONTIME,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

Geçen hafta (son 168 saat) boyunca kilitlenme sorunu yaşanmayan oturum sayısı:

SELECT
  TIMESTAMP_TRUNC(crashlytics.event_timestamp,DAY) AS event_date,
  (1 - (COUNT (DISTINCT crashlytics.event_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(_PARTITIONTIME,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

2. örnek: Günlük kilitlenme sayısı

Mümkün olduğunca çok sayıda hatayı düzeltmek için çalıştıktan sonra ekibinizin nihayet yeni fotoğraf paylaşım uygulamanızı kullanıma sunmaya hazır olduğunu düşünüyorsunuz. Ancak bunu yapmadan önce, hata avı etkinliğinizin uygulamayı zaman içinde daha kararlı hale getirdiğinden emin olmak için son bir ayda günlük kilitlenme sayısını kontrol etmek istiyorsunuz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;

3. örnek: En yaygın kilitlenmeleri bulma

Üretim planlarına doğru şekilde öncelik vermek için uygulamanızdaki en yaygın 10 kilitlenmeyi bulmak istiyorsunuz. İlgili veri noktalarını sağlayan bir sorgu oluşturuyorsunuz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;

4. örnek: En çok kilitlenen 10 cihaz

Sonbahar, yeni telefon sezonu! Şirketiniz, bu durumun özellikle Android'de yeni cihaza özgü sorunların yaşanabileceği bir dönem olduğunu da biliyor. Yaklaşan uyumluluk sorunlarını önlemek için geçen hafta (168 saat) en çok kilitlenen 10 cihazı belirleyen bir sorgu oluşturdunuz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;

5. örnek: Özel anahtara göre filtreleme

Oyununuzun hangi seviyesinde en çok kilitlenme yaşandığını öğrenmek isteyen bir oyun geliştiricisiniz.

Bu istatistiği izlemeye yardımcı olması için current_level adlı bir özel Crashlytics anahtarı ayarlarsınız ve kullanıcı yeni bir seviyeye ulaştığında bu anahtarı güncellersiniz.

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

Dışa aktarma işleminizde bu anahtarı kullanarak BigQuery, her kilitlenme etkinliğiyle ilişkili current_level değerlerinin dağılımını bildiren bir sorgu yazabilirsiniz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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 DESC

6. örnek: User-ID'yi ayıklama

Erken erişim aşamasında olan bir Android uygulamanız var. Kullanıcılarınızın çoğu bu sürümü beğeniyor ancak üç kullanıcı, alışılmadık sayıda kilitlenme sorunu yaşıyor. Sorunun kaynağını bulmak için bu kullanıcıların kullanıcı kimliklerini kullanarak bu kullanıcılarla ilgili tüm kilitlenme etkinliklerini çeken bir sorgu yazarsınız.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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
 

7. örnek: Belirli bir kilitlenme sorunuyla karşılaşan tüm kullanıcıları bulma

Ekibiniz, beta test kullanıcılarından oluşan bir gruba yanlışlıkla kritik bir hata içeren sürüm yayınladı. Ekibiniz, yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildi. Şimdi ekibiniz, bu kilitlenmeden etkilenen uygulama kullanıcılarının listesini çıkarmak için bir sorgu çalıştırmak istiyor.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;

8. örnek: Kilitlenme sorunundan etkilenen kullanıcı sayısı (ülkeye göre ayrılmış)

Ekibiniz, yeni bir sürümün kullanıma sunulması sırasında kritik bir hata tespit etti. Yukarıdaki "En yaygın kilitlenmeleri bulma" örneğindeki sorguyu kullanarak belirli kilitlenme sorunu kimliğini belirleyebildiniz. Ekibiniz, bu kilitlenmenin dünyanın farklı ülkelerindeki kullanıcılara yayılıp yayılmadığını görmek istiyor.

Bu sorguyu yazmak için ekibinizin aşağıdakileri yapması gerekir:

  1. Google Analytics verilerinin BigQuery'ye aktarılmasını etkinleştirin. Proje verilerini BigQuery'ye aktarma başlıklı makaleyi inceleyin.

  2. Uygulamanızı, hem Google Analytics SDK'sına hem de Crashlytics SDK'sına kullanıcı kimliği iletecek şekilde güncelleyin.

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Google Analytics veri kümesindeki etkinlikleri Crashlytics veri kümesindeki kilitlenmelerle birleştirmek için kullanıcı kimliği alanını kullanan bir sorgu yazın.

    Android uygulaması için örnek sorgu aşağıda verilmiştir. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

    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

9. örnek: Bugün şu ana kadar karşılaşılan en büyük 5 sorun

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;

10. örnek: Bugün dahil olmak üzere, TARİH'ten bu yana en önemli 5 sorun

Güvenilir toplu verilerinize gerçek zamanlı bilgiler eklemek için toplu ve gerçek zamanlı tabloları birleştirme sorgusuyla da birleştirebilirsiniz. event_id birincil anahtar olduğundan, iki tablodaki ortak etkinlikleri tekilleştirmek için DISTINCT event_id kullanabilirsiniz.

Android uygulaması için örnek sorguyu aşağıda bulabilirsiniz. iOS uygulaması için paket adı ve ANDROID yerine paket kimliğini ve IOS kullanın.

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;



Dışa aktarılan Crashlytics verilerini Looker Studio ile görselleştirme

Looker Studio BigQuery içindeki Crashlytics veri kümelerinizi okunması ve paylaşılması kolay, tamamen özelleştirilebilen raporlara dönüştürür.

Looker Studio kullanımı hakkında daha fazla bilgi edinmek için karşılama rehberine göz atın.

Crashlytics rapor şablonu kullanma

Looker Studio, dışa aktarılan Crashlytics BigQuery şemasından kapsamlı bir boyut ve metrik grubu içeren Crashlytics için örnek bir rapora sahiptir. Crashlytics'e BigQuery akışlı dışa aktarma özelliğini etkinleştirdiyseniz bu verileri Looker Studio şablonunun Anlık trendler sayfasında görüntüleyebilirsiniz.Örnekleri, kendi uygulamanızın ham kilitlenme verilerine dayalı olarak hızlı bir şekilde yeni raporlar ve görselleştirmeler oluşturmak için şablon olarak kullanabilirsiniz:

  1. Crashlytics Looker Studio Kontrol paneli şablonunu açın.

  2. Sağ üst köşedeki Şablonu Kullan'ı tıklayın.

  3. Yeni Veri Kaynağı açılır listesinde Yeni Veri Kaynağı Oluştur'u seçin.

  4. BigQuery kartında Seç'i tıklayın.

  5. Projelerim > PROJECT_ID > firebase_crashlytics > TABLE_NAME'i seçerek dışa aktarılan Crashlytics verilerini içeren bir tablo seçin.

    Toplu işlem tablonuz her zaman seçilebilir. Crashlytics BigQuery için akış dışa aktarma etkinleştirildiyse bunun yerine gerçek zamanlı tablonuzu seçebilirsiniz.

  6. Yapılandırma bölümünde Crashlytics Şablon düzeyi'ni Varsayılan olarak ayarlayın.

  7. Yeni veri kaynağını oluşturmak için Bağlan'ı tıklayın.

  8. Crashlytics şablonuna dönmek için Rapora Ekle'yi tıklayın.

  9. Son olarak, Crashlytics Looker Studio gösterge tablosu şablonunun kopyasını oluşturmak için Rapor Oluştur'u tıklayın.



BigQuery şemasını anlama

Firebase, dışa aktarılan verileriniz için BigQuery içinde yeni veri kümeleri oluşturur:

Crashlytics veri kümesi

Crashlytics verileri, firebase_crashlytics adlı BigQuery veri kümesine aktarılır. Veri kümesi, birden fazla uygulama içerse bile projenizin tamamını kapsar.

Tablolar

Varsayılan olarak Firebase, Crashlytics veri kümesinde BigQuery'ye bağlı projenizdeki her uygulama için ayrı tablolar oluşturur.

Tablolar, uygulamanın tanımlayıcısına göre adlandırılır (noktalar alt çizgiye dönüştürülür) ve uygulamanın platformu (_IOS veya _ANDROID) eklenir. Örneğin, paket adı com.google.test olan bir Android uygulamasına ait veriler com_google_test_ANDROID adlı tabloda yer alır.

  • BigQuery konumuna akış dışa aktarma etkinleştirildiyse veriler, _REALTIME ile eklenmiş bir tabloya da anlık olarak aktarılır (örneğin, com_google_test_ANDROID_REALTIME).

  • Tablodaki her satır, uygulamada meydana gelen bir etkinliği (kilitlenmeler, onarılabilir hatalar ve ANR'ler dahil) temsil eder.

  • Tablolar, uygulamanızda tanımladığınız özel Crashlytics anahtarların yanı sıra standart bir Crashlytics veri kümesi içerir.

Satırlar

Tablodaki her satır, uygulamanın karşılaştığı bir hatayı temsil eder.

Sütunlar

Bir tablodaki sütunlar kilitlenmeler, onarılabilir hatalar ve ANR'ler için aynıdır.

  • BigQuery için akış dışa aktarma etkinleştirilirse gerçek zamanlı tablo, toplu tabloyla aynı sütunlara sahip olur.

  • Etkinlikleri temsil eden satırlarda yığın izleri olmayan sütunlar olabilir.

Dışa aktarılan Crashlytics verileri için tablodaki sütunlar şunlardır:

Alan adı Veri türü Açıklama
app_orientation DİZE Örneğin, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN vb.
application KAYIT Etkinliği oluşturan uygulama
application.build_version DİZE Uygulamanın derleme sürümü
application.display_version DİZE
blame_frame KAYIT Kilitlenmenin veya hatanın temel nedeni olarak tanımlanan çerçeve
blame_frame.address INT64 Kodu içeren ikili görüntüdeki adres
Java çerçeveleri için ayarlanmamış
blame_frame.blamed BOOLE Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
blame_frame.file DİZE Çerçeve dosyasının adı
blame_frame.library DİZE Çerçeveyi içeren kitaplığın görünen adı
blame_frame.line INT64 Çerçevenin dosyasının satır numarası
blame_frame.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
Java istisnaları için ayarlanmamış
blame_frame.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
blame_frame.symbol DİZE Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
breadcrumbs REPEATED RECORD Etkinleştirilmişse zaman damgalı Google Analytics içerik haritaları
breadcrumbs.name DİZE İçerik haritasıyla ilişkili ad
breadcrumbs.params REPEATED RECORD Ekmek kırıntısıyla ilişkili parametreler
breadcrumbs.params.key DİZE Ekmek kırıntısıyla ilişkili bir parametre anahtarı
breadcrumbs.params.value DİZE Ekmek kırıntısıyla ilişkili bir parametre değeri
breadcrumbs.timestamp ZAMAN DAMGASI İçerik haritasıyla ilişkili zaman damgası
bundle_identifier DİZE Uygulamanın Firebase projesine kaydedilirken kullanılan benzersiz tanımlayıcısı (örneğin, com.google.gmail)
Apple platformu uygulamaları için bu, uygulamanın paket kimliğidir.
Android uygulamaları için bu, uygulamanın paket adıdır.
crashlytics_sdk_versions DİZE Etkinliği oluşturan Crashlytics SDK sürümü
custom_keys REPEATED RECORD Geliştirici tarafından tanımlanan anahtar/değer çiftleri
custom_keys.key DİZE Geliştirici tarafından tanımlanan bir anahtar
custom_keys.value DİZE Geliştirici tarafından tanımlanan bir değer
device KAYIT Etkinliğin gerçekleştiği cihaz
device_orientation DİZE Örneğin, PORTRAIT, LANDSCAPE, FACE_UP, FACE_DOWN vb.
device.architecture DİZE Örneğin, X86_32, X86_64, ARMV7, ARM64, ARMV7S veya ARMV7K
device.manufacturer DİZE Cihaz üreticisi
device.model DİZE Cihaz modeli
error REPEATED RECORD (Yalnızca Apple uygulamaları) Önemli olmayan hatalar
error_type DİZE Etkinliğin hata türü (ör. FATAL, NON_FATAL, ANR vb.)
error.blamed BOOLE Crashlytics bu karenin hatanın nedeni olduğunu belirledi mi?
error.code INT64 Uygulamanın özel olarak kaydedilen NSError'siyle ilişkili hata kodu
error.frames REPEATED RECORD Yığın izlemesinin çerçeveleri
error.frames.address INT64 Kodu içeren ikili resimdeki adres
error.frames.blamed BOOLE Crashlytics bu karenin hatanın nedeni olduğunu belirledi mi?
error.frames.file DİZE Çerçeve dosyasının adı
error.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
error.frames.line INT64 Çerçevenin dosyasının satır numarası
error.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
error.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
error.frames.symbol DİZE Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
error.queue_name DİZE İş parçacığının üzerinde çalıştığı sıra
error.subtitle DİZE İleti dizisinin alt başlığı
error.title DİZE İleti dizisinin başlığı
event_id DİZE Etkinliğin benzersiz kimliği
event_timestamp ZAMAN DAMGASI Etkinliğin gerçekleştiği zaman
exceptions REPEATED RECORD (Yalnızca Android) Bu etkinlik sırasında oluşan istisnalar. İç içe yerleştirilmiş istisnalar, ters kronolojik sırayla sunulur. Bu nedenle, son kayıt, oluşturulan ilk istisnadır.
exceptions.blamed BOOLE Crashlytics, istisnanın hataya veya kilitlenmeye neden olduğunu belirlerse doğru
exceptions.exception_message DİZE İstisnayla ilişkili bir mesaj
exceptions.frames REPEATED RECORD İstisnayla ilişkili kareler
exceptions.frames.address INT64 Kodu içeren ikili görüntüdeki adres
Java çerçeveleri için ayarlanmamış
exceptions.frames.blamed BOOLE Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
exceptions.frames.file DİZE Çerçeve dosyasının adı
exceptions.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
exceptions.frames.line INT64 Çerçevenin dosyasının satır numarası
exceptions.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
Java istisnaları için ayarlanmamış
exceptions.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
exceptions.frames.symbol DİZE Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
exceptions.nested BOOLE Son atılan istisna (yani ilk kayıt) hariç tümü için doğrudur.
exceptions.subtitle DİZE İleti dizisinin alt başlığı
exceptions.title DİZE İleti dizisinin başlığı
exceptions.type DİZE İstisna türü (örneğin, java.lang.IllegalStateException)
firebase_session_id DİZE Crashlytics kaynağından gelen etkinlikle eşlenen Firebase oturumu için otomatik olarak oluşturulan kimlik
installation_uuid DİZE Benzersiz bir uygulama ve cihaz yüklemesini tanımlayan kimlik
is_fatal BOOLE Uygulamanın kilitlenip kilitlenmediği
issue_id DİZE Etkinlikle ilişkili sorun
logs REPEATED RECORD Etkinleştirilmişse Crashlytics kaydedici tarafından oluşturulan zaman damgalı günlük mesajları
logs.message DİZE Günlüğe kaydedilen mesaj
logs.timestamp ZAMAN DAMGASI Günlüğün oluşturulduğu zaman
memory KAYIT Cihazın bellek durumu
memory.free INT64 Kalan bellek baytı
memory.used INT64 Kullanılan bellek baytları
operating_system KAYIT Cihazdaki işletim sisteminin ayrıntıları
operating_system.device_type DİZE Cihaz türü (örneğin, MOBILE, TABLET, TV vb.); "cihaz kategorisi" olarak da bilinir.
operating_system.display_version DİZE Cihazdaki işletim sisteminin sürümü
operating_system.modification_state DİZE Cihazın değiştirilip değiştirilmediği (ör. jailbreak'li bir uygulama MODIFIED, rootlanmış bir uygulama ise UNMODIFIED)
operating_system.name DİZE Cihazdaki işletim sisteminin adı
operating_system.type DİZE (Yalnızca Apple uygulamaları) Cihazda çalışan işletim sisteminin türü (ör. IOS, MACOS vb.)
platform DİZE Uygulamanın Firebase projesine kayıtlı olduğu platform (geçerli değerler: IOS veya ANDROID)
process_state DİZE BACKGROUND veya FOREGROUND
storage KAYIT Cihazın kalıcı depolama alanı
storage.free INT64 Kalan depolama alanı (bayt)
storage.used INT64 Kullanılan depolama alanı (bayt)
threads REPEATED RECORD Etkinlik sırasında mevcut olan ileti dizileri
threads.blamed BOOLE Crashlytics, bu karenin kilitlenmeye veya hataya neden olduğunu belirledi mi?
threads.code INT64 (Yalnızca Apple uygulamaları) Uygulamanın özel olarak kaydedilmiş NSError'ının hata kodu
threads.crash_address INT64 Uygulamanın çökmesine neden olan sinyalin adresi; yalnızca çöken yerel iş parçacıklarında bulunur.
threads.crashed BOOLE İş parçacığının kilitlenip kilitlenmediği
threads.frames REPEATED RECORD İpliğin çerçeveleri
threads.frames.address INT64 Kodu içeren ikili resimdeki adres
threads.frames.blamed BOOLE Crashlytics bu karenin hatanın nedeni olduğunu belirledi mi?
threads.frames.file DİZE Çerçeve dosyasının adı
threads.frames.library DİZE Çerçeveyi içeren kitaplığın görünen adı
threads.frames.line INT64 Çerçevenin dosyasının satır numarası
threads.frames.offset INT64 Kodu içeren ikili görüntüdeki bayt uzaklığı
threads.frames.owner DİZE Örneğin, DEVELOPER, VENDOR, RUNTIME, PLATFORM veya SYSTEM
threads.frames.symbol DİZE Hidratlanmış sembol veya hidratlanamıyorsa ham sembol
threads.queue_name DİZE (Yalnızca Apple uygulamaları) İş parçacığının üzerinde çalıştığı sıra
threads.signal_code DİZE Uygulamanın kilitlenmesine neden olan sinyalin kodu; yalnızca kilitlenen yerel iş parçacıklarında bulunur.
threads.signal_name DİZE Uygulamanın kilitlenmesine neden olan sinyalin adı. Yalnızca kilitlenen yerel iş parçacıklarında bulunur.
threads.subtitle DİZE İleti dizisinin alt başlığı
threads.thread_name DİZE İleti dizisinin adı
threads.title DİZE İleti dizisinin başlığı
unity_metadata.debug_build BOOLE Bu bir hata ayıklama sürümüyse
unity_metadata.graphics_copy_texture_support DİZE Unity API'de tanımlandığı şekilde grafik dokusunu kopyalama desteği
unity_metadata.graphics_device_id INT64 Grafik cihazının tanımlayıcısı
unity_metadata.graphics_device_name DİZE Grafik cihazının adı
unity_metadata.graphics_device_type DİZE Grafik cihazının türü
unity_metadata.graphics_device_vendor_id INT64 Grafik işlemcinin tedarikçisinin tanımlayıcısı
unity_metadata.graphics_device_vendor DİZE Grafik cihazının satıcısı
unity_metadata.graphics_device_version DİZE Grafik cihazın sürümü
unity_metadata.graphics_max_texture_size INT64 Doku oluşturmaya ayrılan maksimum boyut
unity_metadata.graphics_memory_size_mb INT64 MB cinsinden grafik belleği
unity_metadata.graphics_render_target_count INT64 Grafik oluşturma hedeflerinin sayısı
unity_metadata.graphics_shader_level INT64 Grafiklerin gölgelendirici düzeyi
unity_metadata.processor_count INT64 İşlemci (çekirdek) sayısı
unity_metadata.processor_frequency_mhz INT64 İşlemcilerin frekansı(MHz)
unity_metadata.processor_type DİZE İşlemcinin türü
unity_metadata.screen_refresh_rate_hz INT64 Ekranın Hz cinsinden yenileme hızı
unity_metadata.screen_resolution_dpi DİZE Ekranın DPI'si (kayan nokta sayısı olarak)
unity_metadata.screen_size_px DİZE Ekranın piksel cinsinden boyutu (genişlik x yükseklik olarak biçimlendirilmiş)
unity_metadata.system_memory_size_mb INT64 Sistemin belleğinin boyutu (Mb cinsinden)
unity_metadata.unity_version DİZE Bu cihazda çalışan Unity sürümü
user KAYIT (İsteğe bağlı) Uygulama kullanıcısı hakkında toplanan bilgiler
user.email DİZE (İsteğe bağlı) Kullanıcının e-posta adresi
user.id DİZE (İsteğe bağlı) Kullanıcıyla ilişkilendirilmiş uygulamaya özel kimlik
user.name DİZE (İsteğe bağlı) Kullanıcının adı
variant_id DİZE Bu etkinlikle ilişkili sorun varyantı
Tüm etkinliklerin ilişkili bir sorun varyantı olmadığını unutmayın.

Firebase oturumları veri kümesi

Firebase oturum verileri, BigQuery adlı bir veri kümesine aktarılır firebase_sessions. Veri kümesi, birden fazla uygulama içerse bile projenizin tamamını kapsar.

Tablolar

Varsayılan olarak Firebase, projenizde BigQuery'e bağlı her uygulama için Firebase oturumları veri kümesinde ayrı tablolar oluşturur.

Tablolar, uygulamanın tanımlayıcısına göre adlandırılır (noktalar alt çizgiye dönüştürülür) ve uygulamanın platformu (_IOS veya _ANDROID) eklenir. Örneğin, paket adı com.google.test olan bir Android uygulamasına ait veriler com_google_test_ANDROID adlı tabloda yer alır.

Satırlar

Tablodaki her satır, gerçekleşen bir oturum etkinliğini temsil eder.

Sütunlar

BigQuery için akış dışa aktarma etkinleştirilirse gerçek zamanlı tablo, toplu tabloyla aynı sütunlara sahip olur.

Dışa aktarılan Firebase oturum verilerinin tablosundaki sütunlar şunlardır:

Alan adı Veri türü Açıklama
instance_id DİZE Cihazdaki Firebase kurulum kimliği (FID). Benzersiz bir uygulama + cihaz yüklemesini tanımlar.
session_id DİZE Bu oturumun benzersiz kimliği
first_session_id DİZE Uygulama sıfırdan başlatıldığından beri bu oturumun içinde bulunduğu bir dizi oturumun ilk kimliği. Bu, soğuk başlatmadan bu yana gerçekleşen tüm oturumları gruplandırmak için kullanılabilir. Bu oturum ilk oturumsa bu alan session_id ile aynı olur.
session_index TAM SAYI Bu oturumun geldiği sipariş, uygulama baştan başlatıldıktan sonra verildi. Soğuk başlatmadan sonraki ilk oturum için bu değer 0 olur. Dizin, soğuk başlangıç olmadan bir oturum oluşturulduğunda (örneğin, 30 dakika boyunca etkinlik gerçekleşmediğinde) her seferinde artırılır.
event_type DİZE Oturumda gerçekleşen etkinliğin türü (ör. SESSION_START)
event_timestamp ZAMAN DAMGASI Etkinliğin gerçekleştiği zaman
received_timestamp ZAMAN DAMGASI Etkinliğin cihazdan sunucuya alındığı zaman
performance_data_collection_enabled BOOLE Oturum sırasında Firebase Performance Monitoring SDK veri toplama özelliğinin etkin olup olmadığı
crashlytics_data_collection_enabled BOOLE Oturum sırasında Firebase Crashlytics SDK veri toplama özelliğinin etkin olup olmadığı
application KAYIT Uygulamayı açıklar.
application.build_version DİZE Uygulamanın derleme sürümü (örneğin, 1523456)
application.display_version DİZE Uygulamanın görünen sürümü (ör. 4.1.7)
device KAYIT Etkinliğin gerçekleştiği cihaz
device.model DİZE Cihazın modeli
device.manufacturer DİZE Cihazın üreticisi. Apple platformu uygulamaları için bu alan NULL olacaktır.
operating_system KAYIT Cihazın işletim sistemini açıklar.
operating_system.display_version DİZE İşletim sisteminin görünen sürümü (örneğin, 10.2.1)
operating_system.name DİZE İşletim sisteminin adı
operating_system.type DİZE İşletim sisteminin türü (örneğin, IOS). Bu alan yalnızca Apple cihazlar için ayarlanır.
operating_system.device_type DİZE Cihaz türü (örneğin, MOBILE, TABLET, TV)



Yeni dışa aktarma altyapısına yükseltme

Crashlytics, Ekim 2024'ün ortalarında Crashlytics verilerinin BigQuery'ye toplu dışa aktarımı için yeni bir altyapı kullanıma sundu.

Tüm Firebase projeleri, 15 Eylül 2025'ten itibaren yeni toplu dışa aktarma altyapısına otomatik olarak yükseltilecek. Bu tarihten önce yükseltme yapabilirsiniz ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.

Yeni altyapıya geçebilirsiniz ancak BigQuery toplu tablolarınızın yükseltme için ön koşulları karşıladığından emin olun.

Yeni altyapıda olup olmadığınızı belirleme

Toplu dışa aktarma özelliğini Ekim 2024'ün ortasında veya daha sonra etkinleştirdiyseniz Firebase projeniz yeni dışa aktarma altyapısını otomatik olarak kullanır.

Projenizin hangi altyapıyı kullandığını kontrol edebilirsiniz: Google Cloud konsoluna gidin. "Veri aktarımı yapılandırmanız" Firebase Crashlytics with Multi-Region Support olarak etiketlenmişse projeniz yeni dışa aktarma altyapısını kullanıyor demektir.

Eski ve yeni dışa aktarma altyapısı arasındaki önemli farklar

  • Yeni altyapı, Crashlytics veri kümesi konumlarını destekler.

    • Ekim 2024'ün ortalarından önce dışa aktarma etkinleştirildi ve yeni dışa aktarma altyapısına yükseltildi: Artık isteğe bağlı olarak veri dışa aktarma konumunu değiştirebilirsiniz.

    • Dışa aktarma, Ekim 2024'ün ortasında veya daha sonra etkinleştirildi: Kurulum sırasında veri dışa aktarma için bir konum seçmeniz istendi.

  • Yeni altyapı, dışa aktarmayı etkinleştirmeden önceki verilerin geri doldurulmasını desteklemez.

    • Eski altyapı, dışa aktarmayı etkinleştirdiğiniz tarihten önceki 30 güne kadar geri doldurmayı destekliyordu.

    • Yeni altyapı, son 30 güne kadar doldurma işlemlerini veya dışa aktarmayı etkinleştirdiğiniz en son tarihi (hangisi daha yakınsa) destekler.BigQuery

  • Yeni altyapı, Firebase projenizdeki Firebase uygulamalarınız için ayarlanan tanımlayıcıları kullanarak BigQuery toplu tablolar oluşturur.

    • Eski altyapı, verileri uygulamanızın ikilisindeki paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazıyordu.

    • Yeni altyapı, verileri Firebase projenizde kayıtlı Firebase uygulamalarınız için ayarlanan paket kimliklerine veya paket adlarına göre adlandırılmış toplu iş tablolarına yazar.

1. adım: Yükseltme için ön koşul

  1. Mevcut BigQuery toplu tablolarınızın, Firebase projenizde kayıtlı Firebase uygulamalarınız için ayarlanan paket kimlikleri veya paket adlarıyla eşleşen tanımlayıcılar kullandığını kontrol edin. Eşleşmezlerse dışa aktarılan toplu verilerinizde kesintiler yaşayabilirsiniz. Çoğu proje uygun ve uyumlu durumda olur ancak yükseltme yapmadan önce kontrol etmeniz önemlidir.

    • Firebase projenize kaydedilen tüm Firebase uygulamalarını Firebase konsolunda bulabilirsiniz: Proje ayarları'na gidin, ardından tüm Firebase uygulamalarınızı ve bilgilerini görmek için Uygulamalarınız kartına gidin.

    • Tüm BigQuery toplu tablolarınızı Google Cloud konsolunun BigQuery sayfasında bulabilirsiniz.

    Örneğin, yükseltme sırasında sorun yaşamayacağınız ideal durumlar şunlardır:

    • com_yourcompany_yourproject_IOS adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmiş com.yourcompany.yourproject paket kimliğine sahip bir Firebase iOS+ uygulamanız var.

    • com_yourcompany_yourproject_ANDROID adlı bir toplu iş tablonuz ve Firebase projenize kaydedilmiş com.yourcompany.yourproject paket adına sahip bir Firebase Android uygulamanız var.

  2. Kayıtlı Firebase uygulamalarınız için ayarlanan tanımlayıcılarla eşleşmeyen toplu tablo adlarınız varsa toplu dışa aktarma işleminizin kesintiye uğramaması için bu sayfadaki talimatları manuel olarak yükseltmeden veya 15 Eylül 2025'ten önce uygulayın.

2. adım: Yeni altyapıya manuel olarak geçin

Toplu dışa aktarma özelliğini Ekim 2024'ün ortasından önce etkinleştirdiyseniz Crashlytics veri dışa aktarma özelliğini Firebase konsolunda kapatıp tekrar açarak yeni altyapıya manuel olarak yükseltebilirsiniz.

Ayrıntılı adımlar aşağıda verilmiştir:

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin.

  2. BigQuery kartında Yönet'i tıklayın.

  3. Dışa aktarmayı devre dışı bırakmak için Crashlytics kaydırma çubuğunu kapatın. İstendiğinde veri dışa aktarma işlemini durdurmak istediğinizi onaylayın.

  4. Dışa aktarmayı yeniden etkinleştirmek için Crashlytics kaydırma çubuğunu hemen tekrar açın. İstendiğinde verileri dışa aktarmak istediğinizi onaylayın.

    Crashlytics verilerinizin BigQuery konumuna dışa aktarılması artık yeni dışa aktarma altyapısı kullanılarak yapılıyor.

Mevcut toplu tablo adınız, Firebase uygulama tanımlayıcınızla eşleşmiyor