Dane z Monitorowania wydajności z aplikacji Apple i na Androida możesz eksportować do BigQuery, aby poddawać je dalszej analizie. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy chmury, a nawet wykorzystywanie danych w niestandardowych modelach ML.
Włącz funkcję eksportowania BigQuery
Otwórz stronę Integracje w konsoli Firebase, a potem kliknij Połącz na karcie BigQuery.
Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.
Po włączeniu eksportu do BigQuery na potrzeby monitorowania wydajności:
Firebase eksportuje kopię istniejących danych do BigQuery. Wstępne propagowanie danych do eksportu może potrwać do 48 godzin.
- Możesz ręcznie zaplanować uzupełnianie danych z ostatnich 30 dni lub od daty włączenia funkcji BigQuery Export (w zależności od tego, co jest najnowsze).
Po utworzeniu zbioru danych jego lokalizacji nie można już zmienić. Możesz jednak skopiować zbiór danych do innej lokalizacji lub przenieść go ręcznie (ponownie utworzyć) w innej lokalizacji. Więcej informacji znajdziesz w artykule o zmienianiu lokalizacji zbioru danych.
Firebase konfiguruje regularne synchronizacje danych z projektu Firebase z BigQuery. Te codzienne operacje eksportu kończą się zwykle w ciągu 24 godzin od zaplanowania procesu.
Domyślnie wszystkie aplikacje w Twoim projekcie są połączone z BigQuery. Wszystkie aplikacje, które dodasz później do projektu, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
Aby wyłączyć funkcję BigQuery Export, odłącz projekt w konsoli Firebase.
Jakie dane są eksportowane do BigQuery?
W przypadku każdej aplikacji w projekcie eksport tworzy tabelę zawierającą wszystkie zarejestrowane zdarzenia wydajności. Każdy wiersz w tabeli to jedno zdarzenie dotyczące skuteczności, które może być jednym z tych zdarzeń:
Zrzut czasu trwania – logi czasu, które domyślnie zbierają dane czasu trwania „czasu trwania”, które obejmują uruchomienie aplikacji, działanie aplikacji w tle i w tle, a także wszelkie niestandardowe śledzenia kodu obsługiwane przez programistę
- Ceny
event_type
sąDURATION_TRACE
event_name
jest taka sama jak nazwa logu czasu
- Ceny
Wskaźnik śledzenia – niestandardowe dane powiązane z niestandardowymi logami czasu kodu obsługiwanymi przez programistów
- Ceny
event_type
sąTRACE_METRIC
event_name
to nazwa danychparent_trace_name
to nazwa logu czasu zawierającego ten wskaźnik
- Ceny
Zrzut ekranu – ślady z całego okresu wyświetlania ekranu (ślady renderowania ekranu)
- Ceny
event_type
sąSCREEN_TRACE
event_name
to prefiks_st_
plus faktyczna nazwa ekranu
- Ceny
Żądanie sieciowe – logi czasu z okresu trwania żądania sieciowego (ślady żądań sieciowych HTTP)
- Ceny
event_type
sąNETWORK_REQUEST
event_name
to sklasyfikowany wzorzec adresu URL żądania sieciowego.
- Ceny
Każde zdarzenie związane z skutecznością zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienta) oraz związane z nim informacje:
- Zrzuty ekranu dotyczące czasu trwania, wskaźniki śledzenia i ślady ekranu zawierają te dane:
trace_info
- Dane logu czasu zawierają parametr
trace_info.metric_info
- Zrzuty ekranu zawierają:
trace_info.screen_info
- Ślady sieci zawierają:
network_info
Szczegółowy schemat danych
Nazwa pola | Typ | Opis |
---|---|---|
event_timestamp | sygnatura czasowa | Sygnatura czasowa od początku epoki, w której rozpoczęło się zdarzenie na urządzeniu klienckim (początek śledzenia, uruchomienie sieci itp.) |
app_display_version | string, | Wyświetl wersję aplikacji (np. „4.1.7”)
|
wersja_kompilacji_aplikacji | string, | Skompiluj wersję aplikacji (np. „1523456”)
|
Wersja systemu operacyjnego | string, | Wersja systemu operacyjnego urządzenia klienckiego
|
nazwa_urządzenia | string, | nazwa urządzenia klienckiego (np. „Google Pixel”), |
country | string, | Dwuliterowy kod kraju, w którym miało miejsce zdarzenie (na przykład „PL” lub „ZZ” w przypadku nieznanego kraju). |
przewoźnik | string, | Operator urządzenia klienckiego |
typ_radio | string, | Aktywny typ sygnału radiowego, w którym doszło do zdarzenia (na przykład „WIFI”) |
atrybuty_niestandardowe | ARRAY<RECORD> | Wszystkie atrybuty niestandardowe dołączone do tego wydarzenia |
atrybuty_niestandardowe.klucz | string, | Klucz atrybutu niestandardowego |
atrybuty_niestandardowe.wartość | string, | Wartość atrybutu niestandardowego |
event_type | string, | Rodzaj zdarzenia; możliwe wartości:
|
event_name | string, | Nazwa zdarzenia:
|
nazwa_śladu_nadrzędnego | string, | Nazwa nadrzędnego logu czasu, który zawiera wskaźnik śledzenia występuje tylko dla TRACE_METRIC |
informacje_śledzenia | REKORD | Występuje tylko w przypadku DURATION_TRACE , SCREEN_TRACE i TRACE_METRIC |
śledzenie_informacji.czas trwania_pl | int64 |
|
informacje_na_ekran. | REKORD | Występuje tylko w przypadku domeny SCREEN_TRACE |
współczynnik_z_ekranu.slow_ramki | float64 | Stosunek liczby spowolnionych klatek w przypadku tego zrzutu ekranu wynosi od 0 do 1 (na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tej instancji ekranu trwało dłużej niż 16 ms) |
współczynnik_na_ekranie.stosunek_zamrożenia_ramki | float64 | Współczynnik zablokowanych klatek dla tego zrzutu ekranu w zakresie od 0 do 1 (na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tej instancji ekranu trwało dłużej niż 700 ms) |
informacje_śledzenia.dane_informacje_o_danych | REKORD | Występuje tylko w przypadku domeny TRACE_METRIC |
informacje_śledzenia.dane_informacje.wartość_metryczna | int64 | Wartość wskaźnika logu czasu |
informacje_o_sieci | REKORD | Występuje tylko w przypadku domeny NETWORK_REQUEST |
informacje_o_sieci.kod_odpowiedzi | int64 | Kod odpowiedzi HTTP odpowiedzi sieciowej (np. 200 lub 404) |
informacje_o_sieci.typ_mime_odpowiedzi | string, | Typ MIME odpowiedzi sieciowej (np. „text/html”) |
metoda_info.żądania_http_metody_sieci | string, | Metoda HTTP żądania sieciowego (np. „GET” lub „POST”) |
network_info.request_payload_bytes | int64 | Rozmiar ładunku żądania sieciowego Jednostka: bajt |
informacje_o_sieci.bajty_ładunku_odpowiedzi | int64 | Rozmiar ładunku odpowiedzi sieciowej Jednostka: bajt |
network_info.request_completed_time_pl | int64 | Mikrosekundy po zakończeniu wysyłania żądań sieciowych event_timestamp Jednostka: mikrosekunda |
informacje_o_sieci.odpowiedź_zainicjowana_w_czasie_pl | int64 | Mikrosekundy po zainicjowaniu odpowiedzi sieci (event_timestamp )Jednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp po zakończeniu odpowiedzi sieciJednostka: mikrosekunda |
Co można zrobić z wyeksportowanymi danymi?
W sekcjach poniżej znajdziesz przykłady zapytań, które możesz wykonać w BigQuery na podstawie wyeksportowanych danych z monitorowania wydajności.
Wyświetl zestawienie średniego czasu oczekiwania na uruchomienie aplikacji według kraju
SELECT AVG(trace_info.duration_us), country FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "DURATION_TRACE" AND event_name = "_app_start" GROUP BY 2;
Sprawdzanie współczynnika zablokowanych klatek w różnych warunkach
Możesz np. porównać stosunek zablokowanych klatek do czasu, jaki użytkownicy spędzają na poszczególnych ekranach aplikacji, gdy korzystają z różnych typów łączności (Wi-Fi, 4G itp.).
SELECT AVG(trace_info.duration_us / 1000000) AS seconds_on_screen, AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio, event_name, radio_type FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "SCREEN_TRACE" GROUP BY event_name, radio_type ORDER BY event_name, radio_type;
Współczynnik trafień w pamięci podręcznej Compute do wczytywania określonych typów plików z dysku
W tej analizie założono, że w przypadku wczytywania z dysku niestandardowego śledzenia kodu został zinstruowany niestandardowy atrybut o nazwie file-extension
oraz dane niestandardowe (a TRACE_METRIC
) o nazwie cache-hit
, które mają wartość 1
w przypadku trafienia w pamięci podręcznej i 0
w przypadku jej braku.
Możesz np. obliczyć częstotliwość trafień w pamięci podręcznej przy wczytywaniu plików PNG z dysku:
SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "TRACE_METRIC" AND event_name = "cache-hit" AND parent_trace_name = "loadFromDisk" AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);
Sprawdź, o jakiej porze dnia użytkownicy wysyłają żądania sieciowe
Możesz np. sprawdzić, o jakiej porze dnia użytkownicy ze Stanów Zjednoczonych wysyłają żądania z Twojej aplikacji:
SELECT count(1) AS hourly_count, EXTRACT(HOUR FROM event_timestamp) AS hour_of_day FROM `TABLE_NAME` WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD") AND event_type = "NETWORK_REQUEST" AND country = "US" GROUP BY 2 ORDER BY 2;
Zabierz dane z Monitorowania wydajności w dowolne miejsce
Czasami chcesz uzyskać dostęp do danych z Monitorowania wydajności po stronie serwera lub przekazać je do innego rozwiązania innej firmy. Obecnie eksportowanie danych jest bezpłatne.
Możesz eksportować dane na następujące sposoby:
Korzystanie z internetowego interfejsu użytkownika BigQuery
Uruchamianie polecenia interfejsu wiersza poleceń
bq extract
Przesyłanie wyodrębniania zadania za pomocą interfejsu API lub bibliotek klienta.
Ceny
Eksport danych z Monitorowania wydajności jest bezpłatny, a BigQuery zapewnia duże bezpłatne limity wykorzystania. Szczegółowe informacje znajdziesz w cenniku BigQuery i piaskownicy BigQuery.