Dane Performance Monitoring z aplikacji Apple i Androida możesz wyeksportować do BigQuery, aby przeanalizować je dokładniej. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy usług w chmurze, a nawet wykorzystywanie tych danych w niestandardowych modelach ML.
Włącz eksport BigQuery
W konsoli Firebase otwórz stronę Integracje, a następnie na karcie BigQuery kliknij Połącz.
Aby włączyć BigQuery, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
Gdy włączysz eksport BigQuery w przypadku Performance Monitoring, nastąpi:
Firebase wyeksportuje kopię Twoich dotychczasowych danych do BigQuery. Początkowa propagacja danych na potrzeby eksportu może potrwać do 48 godzin.
- Możesz ręcznie zaplanować uzupełnianie danych z ostatnich 30 dni lub do ostatniej daty włączenia eksportu BigQuery (w zależności od tego, która z tych dat jest najnowsza).
Po utworzeniu zbioru danych jego lokalizacji nie można już zmienić. Możesz natomiast skopiować zbiór danych do innej lokalizacji lub ręcznie przenieść (ponownie utworzyć) zbiór danych w innej lokalizacji. Więcej informacji znajdziesz w artykule Zmiana lokalizacji zbioru danych.
Firebase skonfiguruje regularne synchronizowanie danych z Twojego projektu Firebase z kontem 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, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
Aby dezaktywować eksport BigQuery, rozłą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 dotyczące wydajności. Każdy wiersz w tabeli to pojedyncze zdarzenie związane z skutecznością, które może być jednym z tych:
Śledzenie czasu trwania – śledzenie, które domyślnie zbiera dane o „czasie trwania” i obejmujące uruchamianie aplikacji, aplikację na pierwszym planie i aplikację w tle, a także dowolne ścieżki kodu niestandardowego z użyciem narzędzia dewelopera.
event_type
toDURATION_TRACE
event_name
jest taka sama jak nazwa śledzenia
Dane z wykrywania – dane niestandardowe powiązane z niestandardowymi logami kodu z dodatkiem kodu dla programistów.
event_type
toTRACE_METRIC
event_name
to nazwa danychparent_trace_name
to nazwa logu czasu zawierającego ten wskaźnik.
Ślad ekranu – ścieżki obejmujące cały czas trwania ekranu (ścieżki renderowania ekranu).
event_type
toSCREEN_TRACE
event_name
to prefiks_st_
plus rzeczywista nazwa ekranu
Żądanie sieciowe – logi obejmujące cały czas trwania żądania sieciowego (logi żądań sieciowych HTTP).
event_type
toNETWORK_REQUEST
event_name
to podział według wzoru adresu URL żądania sieciowego
Każde zdarzenie dotyczące wydajności zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienta), a także informacje dotyczące zdarzenia:
- Tracingi czasu, dane z tracingu i tracingi ekranu zawierają
trace_info
- Dane z wykrywania zawierają
trace_info.metric_info
- Logs ekranu zawierają
trace_info.screen_info
- Ścieżki sieciowe zawierają
network_info
Szczegółowy schemat danych
Nazwa pola | Typ | Opis |
---|---|---|
event_timestamp | sygnatura czasowa | sygnatura czasowa od początku okresu Epoch, gdy zdarzenie zaczęło się na urządzeniu klienta (rozpoczęcie śledzenia, rozpoczęcie działania sieci itp.); |
app_display_version | ciąg znaków | Wyświetlana wersja 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”) |
country | ciąg znaków | Dwuliterowy kod kraju, z którego pochodziło zdarzenie (np. „US” lub „ZZ” w przypadku nieznanego kraju) |
przewoźnik | ciąg znaków | Operator urządzenia klienta |
radio_type | ciąg znaków | Aktywny typ sieci komórkowej w momencie wystąpienia zdarzenia (np. „WIFI”) |
custom_attributes | ARRAY<RECORD> | Wszystkie atrybuty niestandardowe powiązane z tym zdarzeniem |
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 ścieżki nadrzędnej, która zawiera dane ścieżki Dostępna tylko w przypadku TRACE_METRIC |
trace_info | REKORD | Dostępne tylko w przypadku aplikacji DURATION_TRACE ,
SCREEN_TRACE i TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | REKORD | Tylko w przypadku SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Stosunek liczby klatek o wolnym renderowaniu w tym śladzie ekranu (wartość od 0 do 1). (Na przykład wartość 0, 05 oznacza, że w przypadku tego śladu ekranu renderowanie 5% klatek trwało ponad 16 ms). |
trace_info.screen_info.frozen_frame_ratio | float64 | Stosunek liczby zablokowanych klatek w tym śladzie ekranu (wartość od 0 do 1). (Na przykład wartość 0, 05 oznacza, że renderowanie 5% klatek w tym przypadku trwało ponad 700 ms) |
trace_info.metric_info | REKORD | Tylko w przypadku TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Wartość danych śledzonych |
network_info | REKORD | Tylko w przypadku NETWORK_REQUEST |
network_info.response_code | int64 | Kod odpowiedzi HTTP dla odpowiedzi sieci (np. 200, 404) |
network_info.response_mime_type | ciąg znaków | Typ MIME odpowiedzi sieci (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 sieci Jednostka: bajt |
network_info.response_payload_bytes | int64 | Rozmiar ładunku odpowiedzi sieci Jednostka: bajt |
network_info.request_completed_time_us | int64 | Mikrosekundy po event_timestamp , gdy wysłano żądanie siecioweJednostka: mikrosekunda |
network_info.response_initiated_time_us | int64 | Mikrosekundy po event_timestamp , gdy rozpoczyna się odpowiedź sieciJednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp , gdy odpowiedź sieci została zakończonaJednostka: mikrosekunda |
Co można zrobić z wyeksportowanymi danymi?
W następnych sekcjach znajdziesz przykłady zapytań, które możesz wykonać w BigQuery na podstawie wyeksportowanych danych Performance Monitoring.
Dopasowanie danych do danych widocznych w konsoli
Panel Firebase agreguje dane dzienne w strefie czasowej America/Los_Angeles
.
Aby dopasować to, co widać na konsoli, funkcje daty powinny wyraźnie ustawiać strefę czasową America/Los_Angeles
. W przeciwnym razie funkcja daty domyślnie będzie używać 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 podziału ś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 stosunku liczby zablokowanych klatek do różnych warunków
Możesz na przykład sprawdzić stosunek liczby zablokowanych klatek do czasu, jaki użytkownicy spędzają na poszczególnych ekranach aplikacji w różnych sieciach (Wi-Fi, 4G itd.).
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 w przypadku wczytywania określonych typów plików z dysku
Ta analiza zakłada, że masz instrumentowany niestandardowy ślad kodu służący 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
, jeśli wystąpiło trafienie do pamięci podręcznej, i 0
, jeśli nie.
Możesz na przykład obliczyć współczynnik trafień do 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);
Sprawdź, o której porze dnia użytkownicy wysyłają żądania sieciowe.
Możesz np. sprawdzić, o której godzinie użytkownicy z USA wysyłają żądania sieci 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;
Zabieraj dane Performance Monitoring ze sobą wszędzie
Czasami możesz chcieć uzyskać dostęp do danych Performance Monitoring po stronie serwera lub przesłać je do innego rozwiązania zewnętrznego. Obecnie eksportowanie danych jest bezpłatne.
Dane możesz wyeksportować w ten sposób:
Korzystanie z interfejsu internetowego BigQuery
Uruchamianie polecenia w interfejsie 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 oferuje duże bezpłatne limity użytkowania. Szczegółowe informacje znajdziesz w cenniku BigQuery lub w BigQuerysandboksie.