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
- Przejdź do strony Integracje w konsoli Firebase.
- Na karcie BigQuery kliknij Połącz .
- 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ę zbiorczą zawierającą dane z codziennej synchronizacji.
- Jeśli włączysz przesyłanie strumieniowe do Crashlytics BigQuery, wszystkie połączone aplikacje będą miały również tabelę w czasie rzeczywistym zawierającą stale aktualizowane dane.
Aby dezaktywować 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 strumieniowo 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
Możesz przesyłać strumieniowo swoje dane z Crashlytics w czasie rzeczywistym za pomocą BigQueryStreaming . 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 |
---|---|
|
|
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 w czasie rzeczywistym, od razu zapisujemy je w BigQuery, dzięki czemu jest to idealne rozwiązanie dla pulpitów nawigacyjnych na żywo i niestandardowych alertów. 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 na telefony! 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ł krytyczny błąd grupie beta testerów. 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ł:
Włącz eksporty BigQuery dla Google Analytics. Zobacz Eksportowanie danych projektu do BigQuery .
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");
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 największych dotychczasowych problemów dzisiaj
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 mogą być 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
byłyby 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 zawierał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 |
składowanie | 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 |
podanie | 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.znacznik czasu | 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 |
winić_ramka.line | INT64 | Numer wiersza pliku ramki |
winić_ramka.plik | STRUNOWY | Nazwa pliku ramki |
wina_ramka.symbol | STRUNOWY | Symbol nawodnienia lub symbol surowego, jeśli nie nadaje się do nawodnienia |
wina_ramka.offset | INT64 | Przesunięcie bajtowe do obrazu binarnego zawierającego kod, nieustawione dla wyjątków Java |
adres.obwiniania_ramki | INT64 | Adres w obrazie binarnym, który zawiera kod, nieustawiony dla ramek Java |
wina_ramka.biblioteka | STRUNOWY | Wyświetlana nazwa biblioteki zawierającej ramkę |
winić_ramka.właściciel | STRUNOWY | DEWELOPER, DOSTAWCA, CZAS PRACY, PLATFORMA lub SYSTEM |
winić_ramkę.winni | BOOLEAN | Czy analiza Crashlytics ustalił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 nawodnienia lub symbol surowego, jeśli nie nadaje się do nawodnienia |
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 ustalił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 |
error.subtitle | 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 nawodnienia lub symbol surowego, jeśli nie nadaje się do nawodnienia |
error.frames.offset | INT64 | Przesunięcie bajtowe do obrazu binarnego zawierającego kod |
error.frames.address | 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, obecny tylko w uszkodzonych wątkach natywnych |
wątki.kod_sygnału | 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 ustalił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 |
adres.wątków.ramek. | INT64 | Adres w obrazie binarnym, który zawiera kod |
biblioteka threads.frames.library | 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 z Crashlytics za pomocą Data Studio
Google Data Studio zamienia Twoje 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 do szybkiego tworzenia nowych raportów i wizualizacji na podstawie nieprzetworzonych danych o awariach Twojej aplikacji:
- Otwórz szablon panelu Crashlytics Data Studio .
- Kliknij Użyj szablonu w prawym górnym rogu.
- Z listy rozwijanej Nowe źródło danych wybierz Utwórz nowe źródło danych .
- Kliknij Wybierz na karcie BigQuery .
- 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.
- W sekcji Konfiguracja ustaw poziom szablonu Crashlytics na Domyślny .
- Kliknij Połącz , aby utworzyć nowe źródło danych.
- Kliknij Dodaj do raportu , aby wrócić do szablonu Crashlytics.
- Na koniec kliknij Utwórz raport , aby utworzyć kopię szablonu Crashlytics Data Studio Dashboard.