Możesz eksportować Performance Monitoring dane z aplikacji na Androida i iOS do BigQuery, aby przeprowadzić dalszą analizę. BigQuery umożliwia analizowanie danych za pomocą BigQuerySQL-a, eksportowanie ich do innego dostawcy usług w chmurze, a nawet używanie ich w niestandardowych modelach ML.
Włącz eksportowanie BigQuery
Otwórz stronę Integracje w konsoli Firebase, a potem na karcie BigQuery kliknij Połącz.
Aby włączyć BigQuery, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
Gdy włączysz eksportowanie BigQuery na potrzeby Performance Monitoring, nastąpią te zmiany:
Firebase eksportuje kopię Twoich dotychczasowych danych do BigQuery. Początkowe rozpowszechnianie danych na potrzeby eksportu może potrwać do 48 godzin.
- Możesz ręcznie zaplanować uzupełnianie danych z okresu do 30 dni wstecz lub z najnowszej daty, w której włączono eksport BigQuery (w zależności od tego, która z tych dat jest późniejsza).
Gdy zbiór danych zostanie 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 regularne synchronizacje danych z projektu Firebase z BigQuery. 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, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
Aby dezaktywować eksportowanie 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 związane ze skutecznością, które może być jednym z tych typów:
Log czasu trwania – logi, które domyślnie zbierają dane o „czasie trwania”, w tym o uruchamianiu aplikacji, działaniu aplikacji na pierwszym planie i w tle, a także wszelkie logi czasu z niestandardowego kodu, które zostały zaimplementowane przez dewelopera.
event_type
toDURATION_TRACE
event_name
jest taka sama jak nazwa śledzenia
Dane logów czasu – dane niestandardowe powiązane z logami czasu niestandardowego kodu, które zostały dodane przez programistę.
event_type
toTRACE_METRIC
event_name
to nazwa rodzaju danychparent_trace_name
to nazwa logu czasu, który zawiera ten wskaźnik.
Ślad ekranu – ślady obejmujące cały okres istnienia ekranu (ślady renderowania ekranu).
event_type
toSCREEN_TRACE
event_name
to prefiks_st_
plus rzeczywista nazwa ekranu.
Żądanie sieciowe – logi czasu obejmujące cały okres żądania sieciowego (logi czasu żądań sieciowych HTTP).
event_type
toNETWORK_REQUEST
event_name
to skategoryzowany wzorzec adresu URL żądania sieciowego.
Każde zdarzenie związane z wydajnością zawiera atrybuty zdarzenia (np. kraj i operator urządzenia klienta), a także informacje specyficzne dla zdarzenia:
- Logi czasu trwania, dane logu czasu i logi ekranu zawierają
trace_info
- Dane śledzenia zawierają
trace_info.metric_info
- Logi ekranu zawierają
trace_info.screen_info
- Logi sieci zawierają
network_info
Szczegółowy schemat danych
Nazwa pola | Typ | Opis |
---|---|---|
event_timestamp | sygnatura czasowa | Sygnatura czasowa od początku epoki, gdy zdarzenie rozpoczęło się na urządzeniu klienta (początek śledzenia, początek sieci itp.). |
app_display_version | ciąg znaków | Wyświetl wersję aplikacji (np. „4.1.7”).
|
app_build_version | ciąg znaków | Wersja kompilacji aplikacji (np. „1523456”).
|
os_version | ciąg znaków | Wersja systemu operacyjnego urządzenia klienta
|
device_name | ciąg znaków | Nazwa urządzenia klienta (np. „Google Pixel”). |
kraj | ciąg znaków | Dwuliterowy kod kraju, z którego pochodzi zdarzenie (np. „US” lub „ZZ” w przypadku nieznanego kraju). |
przewoźnik | ciąg znaków | Operator sieci komórkowej urządzenia klienta |
radio_type | ciąg znaków | Aktywny typ radia w momencie wystąpienia zdarzenia (np. „WIFI”). |
custom_attributes | ARRAY<RECORD> | Wszystkie atrybuty niestandardowe dołączone do tego wydarzenia |
custom_attributes.key | ciąg znaków | Klucz atrybutu niestandardowego |
custom_attributes.value | ciąg znaków | Wartość atrybutu niestandardowego |
event_type | ciąg znaków | Typ zdarzenia. Możliwe wartości:
|
event_name | ciąg znaków | Nazwa zdarzenia
|
parent_trace_name | ciąg znaków | Nazwa śladu nadrzędnego, który zawiera dane śladu. Występuje tylko w przypadku TRACE_METRIC |
trace_info | REKORD | Występuje tylko w przypadku DURATION_TRACE , SCREEN_TRACE i TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | REKORD | Występuje tylko w przypadku parametru SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Odsetek wolnych klatek w tym śladzie ekranu (wartość od 0 do 1). Na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tym przypadku ekranu trwało ponad 16 ms. |
trace_info.screen_info.frozen_frame_ratio | float64 | Odsetek zablokowanych klatek w tym śledzeniu ekranu (wartość od 0 do 1). Przykład: wartość 0, 05 oznacza, że renderowanie 5% klatek w tym przypadku ekranu trwało ponad 700 ms. |
trace_info.metric_info | REKORD | Występuje tylko w przypadku parametru TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Wartość danych śledzenia |
network_info | REKORD | Występuje tylko w przypadku parametru NETWORK_REQUEST |
network_info.response_code | int64 | Kod odpowiedzi HTTP dla odpowiedzi sieciowej (np. 200, 404). |
network_info.response_mime_type | ciąg znaków | Typ MIME odpowiedzi sieciowej (np. „text/html”). |
network_info.request_http_method | ciąg znaków | 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 | Mikrosekundy po event_timestamp , gdy wysyłanie żądania sieciowego zostanie zakończoneJednostka: mikrosekunda |
network_info.response_initiated_time_us | int64 | Mikrosekundy po event_timestamp , gdy zainicjowana zostanie odpowiedź sieciJednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp zakończeniu odpowiedzi sieciJednostka: mikrosekunda |
Co można zrobić z wyeksportowanymi danymi?
W sekcjach poniżej znajdziesz przykłady zapytań, które możesz uruchomić w BigQuery na podstawie wyeksportowanych danych Performance Monitoring.
Dopasowywanie danych widocznych w konsoli
Panel Firebase agreguje dane dzienne w strefie czasowej America/Los_Angeles
.
Aby dopasować wyniki do tych wyświetlanych w konsoli, funkcje daty powinny jawnie ustawiać strefę czasową America/Los_Angeles
. W przeciwnym razie domyślnie będą używać strefy 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 średniego czasu oczekiwania na uruchomienie aplikacji z podziałem na kraje
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 stosunku zamrożonych klatek w różnych warunkach
Możesz na przykład sprawdzić odsetek zamrożonych klatek oraz czas, jaki użytkownicy spędzają na poszczególnych ekranach aplikacji, gdy korzystają z różnych rodzajów sieci (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
Ta analiza zakłada, że masz instrumentowany niestandardowy log czasu kodu 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 nietrafienia w pamięci podręcznej.
Możesz na przykład obliczyć współczynnik trafień w pamięci podręcznej podczas 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, o której porze dnia 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 swoje Performance Monitoring dane ze sobą wszędzie
Czasami chcesz uzyskać dostęp do danych Performance Monitoring po stronie serwera lub przesłać je do innego rozwiązania innej firmy. Obecnie eksportowanie danych jest bezpłatne.
Dane możesz wyeksportować:
Korzystanie z interfejsu internetowego BigQuery
Uruchamianie polecenia interfejsu wiersza poleceń
bq extract
Przesyłanie zadania wyodrębniania za pomocą interfejsu API lub bibliotek klienta.
Ceny
Eksportowanie danych z Performance Monitoring jest bezpłatne, a BigQuery zapewnia duże bezpłatne limity wykorzystania. Szczegółowe informacje znajdziesz w cenniku lub w BigQuerypiaskownicy.BigQuery