Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Eksportuj dane Firebase Crashlytics do BigQuery

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Możesz wyeksportować dane z Crashlytics do BigQuery w celu dalszej analizy. BigQuery pozwala analizować dane za pomocą BigQuery SQL, eksportować je do innego dostawcy chmury i używać ich do wizualizacji oraz niestandardowych pulpitów nawigacyjnych w Google Data Studio.

Włącz eksport BigQuery

  1. Przejdź do strony Integracje w konsoli Firebase.
  2. Na karcie BigQuery kliknij Połącz .
  3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.

Gdy połączysz swój projekt z BigQuery:

  • Firebase konfiguruje codzienne synchronizacje danych z projektu Firebase do BigQuery.
  • Domyślnie wszystkie aplikacje w Twoim projekcie są połączone z BigQuery, a wszystkie aplikacje, które później dodasz do projektu, zostaną automatycznie połączone z BigQuery. Możesz zarządzać, które aplikacje wysyłają dane .
  • Firebase eksportuje kopię Twoich istniejących danych do BigQuery. W przypadku każdej połączonej aplikacji obejmuje to tabelę wsadową zawierającą dane z codziennej synchronizacji.
  • Jeśli włączysz przesyłanie strumieniowe Crashlytics BigQuery, wszystkie połączone aplikacje będą również miały tabelę w czasie rzeczywistym zawierającą stale aktualizowane dane.

Aby wyłączyć eksport BigQuery, odłącz projekt w konsoli Firebase.

Jakie dane są eksportowane do BigQuery?

Dane Firebase Crashlytics są eksportowane do zbioru danych BigQuery o nazwie firebase_crashlytics . Domyślnie w zestawie danych Crashlytics dla każdej aplikacji w Twoim projekcie zostaną utworzone osobne tabele. Firebase nazywa tabele na podstawie identyfikatora pakietu aplikacji, z kropkami zamienionymi na podkreślenia i nazwą platformy dołączoną na końcu.

Na przykład dane aplikacji o identyfikatorze com.google.test znajdują się w tabeli o nazwie com_google_test_ANDROID . Ta tabela wsadowa jest aktualizowana raz dziennie. Jeśli włączysz eksport strumieniowy Crashlytics BigQuery, dane Firebase Crashlytics będą również przesyłane w czasie rzeczywistym do com_google_test_ANDROID_REALTIME .

Każdy wiersz w tabeli reprezentuje zdarzenie, które wystąpiło w aplikacji, w tym awarie, błędy niekrytyczne i błędy ANR.

Włącz eksport strumieniowy Crashlytics BigQuery

Dzięki BigQueryStreaming możesz przesyłać strumieniowo dane z Crashlytics w czasie rzeczywistym. Można go używać do dowolnych celów, które wymagają danych na żywo, takich jak prezentowanie informacji na pulpicie nawigacyjnym na żywo, oglądanie na żywo wdrażania lub monitorowanie problemów z aplikacjami, które wyzwalają alerty i niestandardowe przepływy pracy.

Eksport strumieniowy Crashlytics BigQuery nie jest dostępny w piaskownicy BigQuery.

Gdy włączysz eksport strumieniowy Crashlytics BigQuery, oprócz tabeli wsadowej będziesz mieć do dyspozycji tabelę czasu rzeczywistego. Oto różnice, o których powinieneś wiedzieć między tabelami:

Tabela partii Tabela czasu rzeczywistego
  • Dane eksportowane raz dziennie
  • Zdarzenia trwale przechowywane przed zbiorczym zapisem w BigQuery
  • Można uzupełnić do 90 dni przed
  • Dane eksportowane w czasie rzeczywistym
  • Brak dostępnych uzupełnień

Tabela wsadowa jest idealna do długoterminowej analizy i identyfikowania trendów w czasie, ponieważ trwale przechowujemy zdarzenia przed ich zapisaniem i można je uzupełniać w tabeli przez okres do 90 dni. Gdy zapisujemy dane w Twojej tabeli czasu rzeczywistego, natychmiast zapisujemy je w BigQuery, dzięki czemu jest to idealne rozwiązanie w przypadku pulpitów nawigacyjnych na żywo i alertów niestandardowych. Te dwie tabele można połączyć z zapytaniem łączącym, aby uzyskać korzyści z obu. Zobacz przykład zapytania 9 poniżej.

Domyślnie tabela czasu rzeczywistego ma czas wygaśnięcia partycji wynoszący 30 dni. Aby dowiedzieć się, jak to zmienić, zobacz Aktualizacja wygaśnięcia partycji .

Włącz przesyłanie strumieniowe BigQuery Crashlytics

Aby włączyć transmisję strumieniową, przejdź do sekcji Crashlytics na stronie integracji BigQuery i zaznacz pole wyboru Uwzględnij transmisję strumieniową .

Szablon Studia danych

Aby włączyć dane w czasie rzeczywistym w szablonie Studia danych, postępuj zgodnie z instrukcjami w artykule Wizualizacja wyeksportowanych danych z Crashlytics za pomocą Studia danych .

Wyświetlenia

Poniższe przykładowe zapytania możesz przekształcić w widoki za pomocą interfejsu użytkownika BigQuery. Zobacz Tworzenie widoków , aby uzyskać szczegółowe instrukcje.

Co możesz zrobić z wyeksportowanymi danymi?

Eksporty BigQuery zawierają nieprzetworzone dane o awariach, w tym typ urządzenia, system operacyjny, wyjątki (aplikacje na Androida) lub błędy (aplikacje Apple), dzienniki Crashlytics, a także inne dane.

Praca z danymi Firebase Crashlytics w BigQuery

Poniższe przykłady ilustrują zapytania, które można uruchomić na danych Crashlytics. Te zapytania generują raporty, które nie są dostępne w panelu Crashlytics.

Przykłady zapytań Crashlytics

Poniższe przykłady pokazują, jak generować raporty, które agregują dane o zdarzeniach awarii w łatwiej zrozumiałe podsumowania.

Przykład 1: Awarie w ciągu dnia

Po naprawieniu jak największej liczby błędów główny programista uważa, że ​​jej zespół jest już gotowy do uruchomienia nowej aplikacji do udostępniania zdjęć. Zanim to zrobią, chcą sprawdzić liczbę awarii dziennie w ciągu ostatniego miesiąca, aby upewnić się, że ich usuwanie błędów sprawiło, że aplikacja stała się bardziej stabilna w czasie:

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;

Przykład 2: Znajdź najczęściej występujące awarie

Aby właściwie ustalić priorytety planów produkcyjnych, kierownik projektu zastanawia się, jak wskazać 10 najczęstszych awarii ich produktu. Tworzą zapytanie, które dostarcza istotne punkty danych:

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;

Przykład 3: 10 najczęściej ulegających awarii urządzeń

Jesień to nowy sezon telefoniczny! Deweloper wie, że oznacza to również nowy sezon problemów z konkretnymi urządzeniami. Aby wyprzedzić pojawiające się problemy ze zgodnością, przygotowali zapytanie identyfikujące 10 urządzeń, które doświadczyły największej liczby awarii w ostatnim tygodniu:

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;

Przykład 4: Filtruj według niestandardowego klucza

Deweloper gry chce wiedzieć, na którym poziomie gry występuje najwięcej awarii. Aby pomóc im śledzić te statystyki, ustawiają niestandardowy klucz Crashlytics current_level i aktualizują go za każdym razem, gdy użytkownik osiągnie nowy poziom.

Cel C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Szybki

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

Jawa

Crashlytics.setInt("current_level", 3);

Mając ten klucz w eksporcie BigQuery, piszą zapytanie, aby zgłosić rozkład wartości current_level powiązanych z każdym zdarzeniem awarii:

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

Przykład 5: Ekstrakcja identyfikatora użytkownika

Deweloper ma aplikację we wczesnym dostępie. Większość ich użytkowników to uwielbia, ale trzech doświadczyło niezwykłej liczby awarii. Aby dotrzeć do sedna problemu, piszą zapytanie, które pobiera wszystkie zdarzenia awarii dla tych użytkowników, używając ich identyfikatorów użytkowników:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

Przykład 6: Znajdź wszystkich użytkowników, którzy mają problem z awarią

Deweloper udostępnił grupie beta testerów krytyczny błąd. Zespół był w stanie użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Teraz chcieliby uruchomić zapytanie, aby wyodrębnić listę użytkowników aplikacji, których dotyczy ta awaria:

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;

Przykład 7: Liczba użytkowników, których dotyczy awaria, w podziale na kraje

Teraz zespół wykrył krytyczny błąd podczas wdrażania nowej wersji. Udało im się użyć zapytania z przykładu 2 powyżej, aby zidentyfikować konkretny identyfikator problemu z awarią. Zespół chciałby teraz sprawdzić, czy ta awaria rozprzestrzeniła się na użytkowników w różnych krajach na całym świecie.

Aby napisać to zapytanie, zespół będzie musiał:

  1. Włącz eksporty BigQuery dla Google Analytics. Zobacz Eksportowanie danych projektu do BigQuery .

  2. Zaktualizuj swoją aplikację, aby przekazywać identyfikator użytkownika zarówno do pakietu SDK Google Analytics, jak i pakietu SDK Crashlytics.

    Cel C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Szybki
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Jawa
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Napisz zapytanie, które używa pola identyfikatora użytkownika do dołączania zdarzeń w zbiorze danych Google Analytics BigQuery z awariami w zbiorze danych Crashlytics BigQuery:

    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
    

Przykład 8: 5 najpopularniejszych dotychczas problemów

Wymaga włączenia eksportu strumieniowego Crashlytics BigQuery

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;

Przykład 9: 5 najczęstszych problemów od DATE, w tym dzisiaj

Wymaga włączenia eksportu strumieniowego Crashlytics BigQuery.

W tym przykładzie łączymy tabele wsadowe i tabele czasu rzeczywistego, aby dodać informacje w czasie rzeczywistym do wiarygodnych danych wsadowych. Ponieważ event_id jest kluczem podstawowym, możemy użyć DISTINCT event_id do usunięcia wszystkich typowych zdarzeń z dwóch 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;

Omówienie schematu Firebase Crashlytics w BigQuery

Gdy połączysz Crashlytics z BigQuery, Firebase eksportuje ostatnie zdarzenia (awarie, błędy niekrytyczne i błędy ANR), w tym zdarzenia sprzed maksymalnie dwóch dni przed połączeniem, z opcją uzupełnienia do dziewięćdziesięciu dni.

Od tego momentu, aż do wyłączenia połączenia, Firebase codziennie eksportuje zdarzenia Crashlytics. Po każdym eksporcie dane będą dostępne w BigQuery po kilku minutach.

Zbiory danych

Firebase Crashlytics tworzy nowy zbiór danych w BigQuery dla danych Crashlytics. Zestaw danych obejmuje cały projekt, nawet jeśli zawiera wiele aplikacji.

Stoły

Firebase Crashlytics tworzy tabelę w zbiorze danych dla każdej aplikacji w Twoim projekcie, chyba że zrezygnowano z eksportowania danych dla tej aplikacji. Firebase nazywa tabele na podstawie identyfikatora pakietu aplikacji, z kropkami zamienionymi na podkreślenia i nazwą platformy dołączoną na końcu.

Na przykład dane aplikacji na Androida o identyfikatorze com.google.test znajdują się w tabeli o nazwie com_google_test_ANDROID , a dane w czasie rzeczywistym (jeśli są włączone) w tabeli o nazwie com_google_test_ANDROID_REALTIME

Tabele zawierają standardowy zestaw danych Crashlytics oprócz dowolnych niestandardowych kluczy Crashlytics zdefiniowanych przez programistów.

Wydziwianie

Każdy wiersz w tabeli reprezentuje błąd napotkany przez aplikację.

Kolumny

Kolumny w tabeli są identyczne w przypadku awarii, błędów niekrytycznych i błędów ANR. Jeśli włączony jest eksport strumieniowy Crashlytics BigQuery, tabela czasu rzeczywistego będzie miała te same kolumny co tabela wsadowa. Kolumny w ramach eksportu są wymienione poniżej.

Bez śladów stosu

Kolumny obecne w wierszach reprezentujących zdarzenia bez śladów stosu.

Nazwa pola Typ danych Opis
Platforma STRUNOWY Aplikacje na Apple lub Android
identyfikator_pakietu STRUNOWY Identyfikator pakietu, np. com.google.gmail
event_id STRUNOWY Unikalny identyfikator wydarzenia
jest_śmiertelne BOOLEAN Czy aplikacja uległa awarii?
typ_błędu STRUNOWY Typ błędu zdarzenia (FATAL, NON_FATAL, ANR)
identyfikator_problemu STRUNOWY Problem związany z wydarzeniem
event_timestamp ZNAK CZASU Kiedy wydarzenie miało miejsce
urządzenie NAGRYWAĆ Urządzenie, na którym miało miejsce zdarzenie
urządzenie.producent STRUNOWY Producent urządzenia
model urządzenia STRUNOWY Model urządzenia
urządzenie.architektura STRUNOWY X86_32, X86_64, ARMV7, ARM64, ARMV7S lub ARMV7K
pamięć NAGRYWAĆ Stan pamięci urządzenia
pamięć.używana INT64 Używane bajty pamięci
pamięć.wolna INT65 Pozostało bajtów pamięci
magazynowanie NAGRYWAĆ Trwała pamięć urządzenia
miejsce.używane INT64 Wykorzystane bajty pamięci
magazyn.bezpłatny INT64 Pozostało bajtów pamięci
system operacyjny NAGRYWAĆ Szczegóły systemu operacyjnego urządzenia
system_operacyjny.wersja_wyświetlana STRUNOWY Wersja systemu operacyjnego
nazwa.systemu_operacyjnego STRUNOWY Nazwa systemu operacyjnego
system_operacyjny.stan_modyfikacji STRUNOWY ZMODYFIKOWANE lub NIEZMODYFIKOWANE, tj. czy urządzenie zostało po jailbreaku/zrootowane
typ_systemu_operacyjnego STRUNOWY Typ systemu operacyjnego na urządzeniu. Np. IOS, MACOS
system_operacyjny.typ_urządzenia STRUNOWY Typ urządzenia. Np. KOMÓRKA, TABLET, TV
aplikacja NAGRYWAĆ Aplikacja, która wygenerowała zdarzenie
application.build_version STRUNOWY Wersja kompilacji aplikacji
application.display_version STRUNOWY
użytkownik NAGRYWAĆ Opcjonalnie: zebrane informacje o użytkowniku aplikacji
Nazwa Użytkownika STRUNOWY Opcjonalnie: nazwa użytkownika
użytkownik.e-mail STRUNOWY Opcjonalnie: adres e-mail użytkownika
identyfikator użytkownika STRUNOWY Opcjonalnie: identyfikator aplikacji powiązany z użytkownikiem
custom_keys POWTARZONY REKORD Pary klucz-wartość zdefiniowane przez programistę
custom_keys.key STRUNOWY Klucz zdefiniowany przez programistę
custom_keys.value STRUNOWY Wartość zdefiniowana przez programistę
instalacja_uuid STRUNOWY Identyfikator, który identyfikuje unikalną instalację aplikacji i urządzenia
crashlytics_sdk_versions STRUNOWY Wersja Crashlytics SDK, która wygenerowała zdarzenie
orientacja_aplikacji STRUNOWY PORTRET, KRAJOBRAZ, FACE_UP lub FACE_DOWN
orientacja_urządzenia STRUNOWY PORTRET, KRAJOBRAZ, FACE_UP lub FACE_DOWN
stan_procesu STRUNOWY TŁO lub PRZÓD
dzienniki POWTARZONY REKORD Komunikaty dziennika ze znacznikiem czasu generowane przez rejestrator Crashlytics, jeśli jest włączony
logs.sygnatura czasowa ZNAK CZASU Kiedy sporządzono dziennik
logs.wiadomość STRUNOWY Zarejestrowana wiadomość
bułka tarta POWTARZONY REKORD Okruszki nawigacyjne Google Analytics oznaczone sygnaturą czasową, jeśli są włączone
bułka tarta.sygnatura czasowa ZNAK CZASU Znacznik czasu powiązany z bułką tartą
bułka tarta.nazwa STRUNOWY Nazwa związana z bułką tartą
bułka tarta.params POWTARZONY REKORD Parametry związane z bułką tartą
bułka tarta.params.key STRUNOWY Klucz parametru powiązany z bułką tartą
bułka tarta.parametry.wartość STRUNOWY Wartość parametru powiązana z bułką tartą
rama_winy NAGRYWAĆ Ramka zidentyfikowana jako główna przyczyna awarii lub błędu
wina_ramka.linia INT64 Numer wiersza pliku ramki
winić_ramka.plik STRUNOWY Nazwa pliku ramki
wina_ramka.symbol STRUNOWY Symbol uwodnienia lub symbol surowego, jeśli nie nadaje się do uwodnienia
wina_ramka.offset INT64 Przesunięcie bajtowe do obrazu binarnego zawierającego kod, nieustawione dla wyjątków Java
obwinianie_ramki.adres INT64 Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java
winna_ramka.biblioteka STRUNOWY Wyświetlana nazwa biblioteki zawierającej ramkę
winić_ramka.właściciel STRUNOWY DEWELOPER, DOSTAWCA, CZAS PRACY, PLATFORMA lub SYSTEM
winić_ramka.winni BOOLEAN Czy analiza Crashlytics wykazała, że ​​ta ramka jest przyczyną awarii lub błędu?
wyjątki POWTARZONY REKORD Tylko Android: wyjątki, które wystąpiły podczas tego wydarzenia. Zagnieżdżone wyjątki są prezentowane w odwrotnej kolejności chronologicznej (czytaj: ostatni rekord to pierwszy zgłoszony wyjątek)
wyjątki.typ STRUNOWY Typ wyjątku, np. java.lang.IllegalStateException
wyjątki.exception_message STRUNOWY Wiadomość skojarzona z wyjątkiem
wyjątki.zagnieżdżone BOOLEAN Prawda dla wszystkich z wyjątkiem ostatniego zgłoszonego wyjątku (tj. pierwszego rekordu)
wyjątki.tytuł STRUNOWY Tytuł wątku
wyjątki.podtytuł STRUNOWY Podtytuł wątku
wyjątki.winni BOOLEAN Prawda, jeśli Crashlytics ustali, że za błąd lub awarię odpowiada wyjątek
wyjątki.ramki POWTARZONY REKORD Ramki związane z wyjątkiem
wyjątki.ramki.linia INT64 Numer wiersza pliku ramki
wyjątki.ramki.plik STRUNOWY Nazwa pliku ramki
wyjątki.ramki.symbol STRUNOWY Symbol uwodnienia lub symbol surowego, jeśli nie nadaje się do uwodnienia
wyjątki.ramki.przesunięcie INT64 Przesunięcie bajtowe do obrazu binarnego zawierającego kod, nieustawione dla wyjątków Java
adres wyjątków.ramek INT64 Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java
wyjątki.frames.library STRUNOWY Wyświetlana nazwa biblioteki zawierającej ramkę
wyjątki.ramki.właściciel STRUNOWY DEWELOPER, DOSTAWCA, CZAS PRACY, PLATFORMA lub SYSTEM
wyjątki.ramki.obwinione BOOLEAN Czy analiza Crashlytics wykazała, że ​​ta ramka jest przyczyną awarii lub błędu?
błąd POWTARZONY REKORD Tylko aplikacje Apple: błędy niekrytyczne
błąd.nazwa_kolejki STRUNOWY Kolejka, w której działał wątek
Kod błędu INT64 Kod błędu powiązany z niestandardowym rejestrowanym NSError aplikacji
error.title STRUNOWY Tytuł wątku
błąd.napisy STRUNOWY Podtytuł wątku
błąd.obwiniony BOOLEAN Czy analiza Crashlytics ustaliła, że ​​ta ramka jest przyczyną błędu?
error.frames POWTARZONY REKORD Ramki stacktrace
error.frames.line INT64 Numer wiersza pliku ramki
error.frames.file STRUNOWY Nazwa pliku ramki
error.frames.symbol STRUNOWY Symbol uwodnienia lub symbol surowego, jeśli nie nadaje się do uwodnienia
error.frames.offset INT64 Przesunięcie bajtowe do obrazu binarnego zawierającego kod
adres.ramek.błędu INT64 Adres w obrazie binarnym, który zawiera kod
biblioteka.ramek.błędów STRUNOWY Wyświetlana nazwa biblioteki zawierającej ramkę
error.frames.owner STRUNOWY DEWELOPER, DOSTAWCA, CZAS PRACY, PLATFORMA lub SYSTEM
error.frames.blamed BOOLEAN Czy analiza Crashlytics ustaliła, że ​​ta ramka jest przyczyną błędu?
wątki POWTARZONY REKORD Wątki obecne w czasie wydarzenia
wątki.awaria BOOLEAN Czy wątek się zawiesił
wątki.nazwa_wątku STRUNOWY Nazwa wątku
wątki.nazwa_kolejki STRUNOWY Tylko aplikacje Apple: kolejka, w której działał wątek
threads.signal_name STRUNOWY Nazwa sygnału, który spowodował awarię aplikacji, występuje tylko w uszkodzonych wątkach natywnych
threads.signal_code STRUNOWY Kod sygnału, który spowodował awarię aplikacji; obecne tylko w uszkodzonych wątkach natywnych
threads.crash_address INT64 Adres sygnału, który spowodował awarię aplikacji; obecne tylko w uszkodzonych wątkach natywnych
wątki.kod INT64 Tylko aplikacje Apple: kod błędu niestandardowego zarejestrowanego błędu NSError aplikacji
wątki.tytuł STRUNOWY Tytuł wątku
wątki.napisy STRUNOWY Podtytuł wątku
wątki.obwinione BOOLEAN Czy analiza Crashlytics wykazała, że ​​ta ramka jest przyczyną awarii lub błędu?
wątki.ramki POWTARZONY REKORD Ramki wątku
threads.frames.line INT64 Numer wiersza pliku ramki
wątki.ramki.plik STRUNOWY Nazwa pliku ramki
wątki.ramki.symbol STRUNOWY Symbol uwodnienia lub symbol surowego, jeśli nie nadaje się do uwodnienia
threads.frames.offset INT64 Przesunięcie bajtowe do obrazu binarnego zawierającego kod
wątki.ramki.adres INT64 Adres w obrazie binarnym, który zawiera kod
biblioteka threads.frames STRUNOWY Wyświetlana nazwa biblioteki zawierającej ramkę
wątki.ramki.właściciel STRUNOWY DEWELOPER, DOSTAWCA, CZAS PRACY, PLATFORMA lub SYSTEM
wątki.ramki.obwinione BOOLEAN Czy analiza Crashlytics ustaliła, że ​​ta ramka jest przyczyną błędu?

Wizualizacja wyeksportowanych danych Crashlytics za pomocą Data Studio

Google Data Studio przekształca zbiory danych Crashlytics w BigQuery w raporty, które są łatwe do odczytania, łatwe do udostępniania i w pełni konfigurowalne.

Aby dowiedzieć się więcej o korzystaniu ze Studia danych, zapoznaj się z przewodnikiem po Studio danych — Witamy w Studiu danych .

Korzystanie z szablonu raportu Crashlytics

Studio danych zawiera przykładowy raport dla Crashlytics, który zawiera obszerny zestaw wymiarów i danych z wyeksportowanego schematu Crashlytics BigQuery. Jeśli masz włączony eksport strumieniowy Crashlytics BigQuery, możesz wyświetlić te dane na stronie Trendy w czasie rzeczywistym szablonu Studia danych.Przykładu możesz użyć jako szablonu, aby szybko tworzyć nowe raporty i wizualizacje na podstawie nieprzetworzonych danych o awariach własnej aplikacji:

  1. Otwórz szablon panelu Crashlytics Data Studio .
  2. Kliknij Użyj szablonu w prawym górnym rogu.
  3. Z listy rozwijanej Nowe źródło danych wybierz Utwórz nowe źródło danych .
  4. Kliknij Wybierz na karcie BigQuery .
  5. Wybierz tabelę zawierającą wyeksportowane dane Crashlytics, wybierając Moje projekty > [nazwa-twojego-projektu] > firebase_crashlytics > [nazwa-twojej-tabeli] . Twoja tabela partii jest zawsze dostępna do wyboru; jeśli włączony jest eksport strumieniowy Crashlytics BigQuery, możesz zamiast tego wybrać tabelę czasu rzeczywistego.
  6. W sekcji Konfiguracja ustaw poziom szablonu Crashlytics na Domyślny .
  7. Kliknij Połącz , aby utworzyć nowe źródło danych.
  8. Kliknij Dodaj do raportu , aby wrócić do szablonu Crashlytics.
  9. Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu Crashlytics Data Studio Dashboard.