Możesz eksportować dane Performance Monitoring z aplikacji na Apple i Androida do BigQuery, aby przeprowadzić dalszą analizę. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy chmury, a nawet używanie ich w niestandardowych modelach ML.
Włącz eksport BigQuery
W konsoli Firebase otwórz stronę Integracje, a następnie na karcie BigQuery kliknij Połącz.
Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.
Gdy włączysz eksportowanie danych z usługi BigQuery do Performance Monitoring, nastąpią te zmiany:
Firebase eksportuje kopię dotychczasowych danych do BigQuery. Początkowe rozpowszechnianie danych do eksportu może potrwać do 48 godzin.
- Możesz ręcznie zaplanować uzupełnianie danych z ostatnich 30 dni lub od ostatniej daty, kiedy włączono eksportowanie do BigQuery (w zależności od tego, co nastąpiło później).
Gdy zostanie on utworzony, jego lokalizacji nie można już zmienić. Możesz natomiast skopiować zbiór danych do innej lokalizacji lub go ręcznie przenieść przez ponowne utworzenie tego zbioru w innej lokalizacji. Więcej informacji znajdziesz w artykule Zmiana lokalizacji zbioru danych.
Firebase konfiguruje regularną synchronizację danych z projektu w Firebase z BigQuery. Te codzienne operacje eksportu zwykle kończą się w ciągu 24 godzin od zaplanowania.
Domyślnie wszystkie aplikacje w projekcie są połączone z BigQuery. Wszystkie aplikacje, które dodasz do projektu później, także zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
Aby dezaktywować eksportowanie do BigQuery, 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 związane z wydajnością. Każdy wiersz w tabeli to pojedyncze zdarzenie dotyczące wydajności, które może być jednym z tych:
Ślady czasu trwania – ślady, które domyślnie zbierają dane o „czasie trwania”, w tym o uruchomieniu aplikacji, aplikacji na pierwszym planie i aplikacji w tle, a także wszelkie ślady kodu niestandardowego instrumentowane przez dewelopera.
event_type:DURATION_TRACEevent_namejest taka sama jak nazwa śledzenia
Wskaźnik logu czasu – wskaźniki niestandardowe powiązane z niestandardowymi logami czasu kodu dodanymi przez dewelopera.
event_type:TRACE_METRICevent_nameto nazwa rodzaju danych,parent_trace_nameto nazwa logu czasu oczekiwania, który zawiera ten wskaźnik.
Ślad ekranu – ślady obejmujące czas działania ekranu (ślady renderowania ekranu).
event_type:SCREEN_TRACEevent_nameto prefiks_st_i rzeczywista nazwa ekranu.
Żądanie sieciowe – logi czasu obejmujące czas trwania żądania sieciowego (logi czasu żądań sieciowych HTTP).
event_type:NETWORK_REQUESTevent_nameto skategoryzowany wzorzec adresu URL żądania sieciowego.
Każde zdarzenie związane z wydajnością zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienta), a także informacje o zdarzeniu:
- Ślady czasu trwania, dane śladów i ślady ekranu zawierają
trace_info - Dane logów czasu zawierają
trace_info.metric_info - Ślady ekranu zawierają:
trace_info.screen_info - Ślady śledzenia sieci zawierają
network_info
Szczegółowy schemat danych
| Nazwa pola | Typ | Opis |
|---|---|---|
| event_timestamp | sygnatura czasowa | Sygnatura czasowa od początku epoki, kiedy zdarzenie rozpoczęło się na urządzeniu klienta (rozpoczęcie śledzenia, rozpoczęcie sieci itp.) |
| app_display_version | tekst | Wersja aplikacji (np. „4.1.7”).
|
| app_build_version | tekst | Wersja kompilacji aplikacji (np. „1523456”)
|
| os_version | tekst | Wersja systemu operacyjnego urządzenia klienta
|
| device_name | tekst | Nazwa urządzenia klienta (np. „Google Pixel”) |
| kraj | tekst | Dwuliterowy kod kraju, w którym miało miejsce zdarzenie (np. „US” lub „ZZ” w przypadku nieznanego kraju) |
| przewoźnik | tekst | Operator urządzenia klienta |
| radio_type | tekst | Typ aktywnego połączenia radiowego w momencie wystąpienia zdarzenia (np. „WIFI”). |
| custom_attributes | ARRAY<RECORD> | Wszystkie atrybuty niestandardowe dołączone do tego zdarzenia |
| custom_attributes.key | tekst | Klucz atrybutu niestandardowego |
| custom_attributes.value | tekst | Wartość atrybutu niestandardowego |
| event_type | tekst | Typ zdarzenia. Możliwe wartości:
|
| event_name | tekst | Nazwa zdarzenia
|
| parent_trace_name | tekst | Nazwa śladu nadrzędnego, który zawiera dane śladu Występuje tylko w przypadku TRACE_METRIC |
| trace_info | REKORD | Występuje tylko w przypadku tych usług: DURATION_TRACE, SCREEN_TRACE i TRACE_METRIC |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | REKORD | Występuje tylko w przypadku: SCREEN_TRACE |
| trace_info.screen_info.slow_frame_ratio | float64 | Współczynnik powolnych klatek dla tego śladu ekranu, od 0 do 1 (np.wartość 0,05 oznacza, że 5% klatek dla tej instancji ekranu renderowało się dłużej niż 16 ms) |
| trace_info.screen_info.frozen_frame_ratio | float64 | Współczynnik zawieszonych klatek dla tego śladu ekranu, od 0 do 1 (np.wartość 0,05 oznacza, że 5% klatek dla tej instancji ekranu renderowało się dłużej niż 700 ms) |
| trace_info.metric_info | REKORD | Występuje tylko w przypadku: TRACE_METRIC |
| trace_info.metric_info.metric_value | int64 | Wartość danych logu czasu |
| network_info | REKORD | Występuje tylko w przypadku: NETWORK_REQUEST |
| network_info.response_code | int64 | Kod odpowiedzi HTTP dla odpowiedzi sieciowej (np. 200, 404) |
| network_info.response_mime_type | tekst | Typ MIME odpowiedzi sieciowej (np. „text/html”). |
| network_info.request_http_method | tekst | Metoda HTTP żądania sieciowego (np. „GET” lub „POST”) |
| network_info.request_payload_bytes | int64 | Rozmiar ładunku żądania sieciowego Jednostka: bajt |
| network_info.response_payload_bytes | int64 | Rozmiar ładunku odpowiedzi sieciowej Jednostka: bajt |
| network_info.request_completed_time_us | int64 | Liczba mikrosekund, które upłynęły od event_timestamp do momentu zakończenia wysyłania żądania sieciowegoJednostka: mikrosekunda |
| network_info.response_initiated_time_us | int64 | Mikrosekundy po event_timestamp, gdy inicjowana jest odpowiedź sieciJednostka: mikrosekunda |
| network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp, gdy odpowiedź sieci jest zakończonaJednostka: mikrosekunda |
Co można zrobić z wyeksportowanymi danymi?
W sekcjach poniżej znajdziesz przykłady zapytań, które możesz uruchamiać w BigQuery na wyeksportowanych danych Performance Monitoring.
dopasowywać dane widoczne w konsoli,
Panel Firebase agreguje dane dzienne w strefie czasowej America/Los_Angeles.
Aby dopasować dane do tych widocznych w konsoli, funkcje daty powinny wyraźnie ustawiać America/Los_Angeles jako strefę czasową. W przeciwnym razie funkcja daty będzie domyślnie używać czasu UTC.
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
Wyświetlanie zestawienia ś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 zamrożonych klatek w różnych warunkach
Możesz na przykład sprawdzić współczynnik zawieszonych klatek oraz czas spędzony przez użytkowników na każdym ekranie aplikacji przy różnych typach połączenia (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;
Obliczanie współczynnika trafień w pamięci podręcznej podczas wczytywania określonych typów plików z dysku
W tej analizie zakładamy, że masz niestandardowy ślad kodu do wczytywania z dysku z atrybutem niestandardowym o nazwie file-extension i danymi niestandardowymi (TRACE_METRIC) o nazwie cache-hit, które mają wartość 1 w przypadku trafienia w pamięci podręcznej i 0 w przypadku braku trafienia.
Możesz na przykład obliczyć współczynnik trafień w pamięci podręcznej dla wczytywania 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);
Sprawdzanie pory dnia, w której użytkownicy wysyłają żądania sieciowe
Możesz na przykład sprawdzić, o której godzinie użytkownicy z Polski wysyłają żądania sieciowe 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 usługi Performance Monitoring ze sobą
Czasami chcesz uzyskać dostęp do danych Performance Monitoring po stronie serwera lub przesłać je do innego rozwiązania innej firmy. Obecnie nie pobieramy opłat za eksportowanie danych.
Dane możesz wyeksportować:
Korzystanie z interfejsu internetowego BigQuery
Uruchamianie polecenia interfejsu wiersza poleceń
bq extractPrzesłanie zadania wyodrębniania za pomocą interfejsu API lub bibliotek klienta.
Ceny
Eksportowanie danych z Performance Monitoring jest bezpłatne, a BigQuery zapewnia wysokie limity wykorzystania bez opłat. Szczegółowe informacje znajdziesz w cenniku BigQuery lub w środowisku testowym BigQuery.