Вы можете экспортировать данные Performance Monitoring из приложений Apple и Android в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их другому облачному провайдеру и даже использовать данные для ваших пользовательских моделей машинного обучения.
Включить экспорт BigQuery
Перейдите на страницу «Интеграции» в консоли Firebase , затем нажмите «Ссылка» на карточке BigQuery .
Следуйте инструкциям на экране, чтобы включить BigQuery .
Когда вы включаете экспорт BigQuery для Performance Monitoring , происходит следующее:
Firebase экспортирует копию существующих данных в BigQuery . Первоначальное распространение данных для экспорта может занять до 48 часов.
- Вы можете вручную запланировать заполнение данных за последние 30 дней или на самую последнюю дату, когда вы включили экспорт BigQuery (в зависимости от того, что наступит позже).
После создания набора данных его местоположение невозможно изменить, но вы можете скопировать набор данных в другое место или вручную переместить (воссоздать) набор данных в другом месте. Дополнительные сведения см. в разделе Изменение местоположения набора данных .
Firebase настраивает регулярную синхронизацию ваших данных из вашего проекта Firebase с BigQuery . Эти ежедневные экспортные операции обычно завершаются через 24 часа после запланированного срока.
По умолчанию все приложения в вашем проекте связаны с BigQuery . Любые приложения, которые вы позже добавите в проект, автоматически связываются с BigQuery . Вы можете управлять тем, какие приложения отправляют данные .
Чтобы деактивировать экспорт BigQuery , отсоедините свой проект в консоли Firebase .
Какие данные экспортируются в BigQuery ?
Для каждого приложения в проекте при экспорте создается таблица, включающая все зафиксированные события производительности. Каждая строка в таблице представляет собой одно событие производительности, которое может быть одним из следующих:
Трассировка продолжительности — трассировки, которые по умолчанию собирают метрику «длительности», включающую запуск приложения, приложение на переднем плане и приложение в фоновом режиме, а также любые трассировки пользовательского кода, настроенные разработчиком.
-
event_type
:DURATION_TRACE
-
event_name
совпадает с именем трассировки
-
Метрика трассировки — пользовательские метрики, связанные с трассировкой пользовательского кода, созданной разработчиком.
-
event_type
:TRACE_METRIC
-
event_name
— имя метрики. -
parent_trace_name
— имя трассировки, содержащей эту метрику.
-
Трассировка экрана — трассировки, охватывающие время жизни экрана (следы рендеринга экрана).
-
event_type
:SCREEN_TRACE
-
event_name
— это префикс_st_
плюс фактическое имя пользователя.
-
Сетевой запрос — трассировки, охватывающие время существования сетевого запроса (трассировки сетевых запросов HTTP).
-
event_type
—NETWORK_REQUEST
-
event_name
— это классифицированный шаблон URL-адреса сетевого запроса.
-
Каждое событие производительности содержит атрибуты события (например, страну и оператора клиентского устройства), а также информацию, специфичную для события:
- Трассировки продолжительности, метрики трассировки и трассировки экрана содержат
trace_info
- Метрики трассировки содержат
trace_info.metric_info
- Трассировки экрана содержат
trace_info.screen_info
- Сетевые трассировки содержат
network_info
Подробная схема данных
Имя поля | Тип | Описание |
---|---|---|
event_timestamp | временная метка | Временная метка с момента начала события на клиентском устройстве (начало трассировки, запуск сети и т. д.) |
app_display_version | нить | Отображение версии приложения (например, «4.1.7»)
|
app_build_version | нить | Версия сборки приложения (например, «1523456»)
|
os_version | нить | Версия ОС клиентского устройства
|
имя_устройства | нить | Имя клиентского устройства (например, «Google Pixel») |
страна | нить | Двухбуквенный код страны, в которой произошло событие (например, «США» или «ZZ» для неизвестной страны). |
перевозчик | нить | Оператор клиентского устройства |
радио_тип | нить | Тип активного радио, когда произошло событие (например, «WIFI») |
custom_attributes | МАССИВ<ЗАПИСЬ> | Все пользовательские атрибуты, прикрепленные к этому событию |
custom_attributes.key | нить | Ключ пользовательского атрибута |
custom_attributes.value | нить | Значение пользовательского атрибута |
тип_события | нить | Тип мероприятия; возможные значения:
|
имя_события | нить | Название мероприятия
|
родительское_имя_трассировки | нить | Имя родительской трассы, содержащей метрику трассировки. Присутствует только для TRACE_METRIC |
трассировка_информация | ЗАПИСЫВАТЬ | Присутствует только для DURATION_TRACE , SCREEN_TRACE и TRACE_METRIC |
трассировка_info.duration_us | int64 |
|
трассировка_info.screen_info | ЗАПИСЫВАТЬ | Присутствует только для SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Коэффициент медленных кадров для этой трассировки экрана от 0 до 1 (например, значение 0,05 означает, что 5% кадров для этого экземпляра экрана отображались более 16 мс). |
trace_info.screen_info.frozen_frame_ratio | float64 | Коэффициент замороженных кадров для этой трассировки экрана от 0 до 1 (например, значение 0,05 означает, что для рендеринга 5 % кадров этого экземпляра экрана потребовалось более 700 мс). |
трассировка_информация.metric_info | ЗАПИСЫВАТЬ | Присутствует только для TRACE_METRIC |
трассировка_информация.metric_info.metric_value | int64 | Значение метрики трассировки |
network_info | ЗАПИСЫВАТЬ | Присутствует только для NETWORK_REQUEST |
network_info.response_code | int64 | Код ответа HTTP для ответа сети (например, 200, 404) |
network_info.response_mime_type | нить | MIME-тип сетевого ответа (например, «text/html») |
network_info.request_http_method | нить | HTTP-метод сетевого запроса (например, «GET» или «POST») |
network_info.request_payload_bytes | int64 | Размер полезной нагрузки сетевого запроса Единица измерения: байт |
network_info.response_payload_bytes | int64 | Размер полезной нагрузки сетевого ответа Единица: байт |
network_info.request_completed_time_us | int64 | Микросекунды после event_timestamp , когда отправка сетевого запроса завершенаЕдиница: микросекунда |
network_info.response_initiated_time_us | int64 | Микросекунды после event_timestamp когда инициируется ответ сетиЕдиница: микросекунда |
network_info.response_completed_time_us | int64 | Микросекунды после event_timestamp , когда ответ сети завершенЕдиница: микросекунда |
Что можно делать с экспортированными данными?
В следующих разделах представлены примеры запросов, которые вы можете выполнить в BigQuery к экспортированным данным Performance Monitoring .
Сопоставьте данные, отображаемые на консоли
Панель управления Firebase объединяет ежедневные данные в часовом поясе America/Los_Angeles
. Чтобы соответствовать тому, что было видно на консоли, функции даты должны явно установить America/Los_Angeles
в качестве часового пояса, иначе функция даты по умолчанию будет использовать 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;
Просмотр средней задержки запуска приложения в разбивке по странам
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;
Проверьте соотношение замороженных кадров в различных условиях.
Например, вы можете проверить соотношение замороженных кадров и количество времени, которое пользователи проводят на каждом экране вашего приложения при использовании разных типов радиосвязи (WiFi, 4G и т. д.).
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;
Вычислить частоту попаданий в кэш для загрузки определенных типов файлов с диска
В этом анализе предполагается, что вы внедрили специальную трассировку кода для загрузки с диска с настраиваемым атрибутом с именем file-extension
и настраиваемой метрикой ( TRACE_METRIC
) с именем cache-hit
, которой присваивается значение 1
в случае попадания в кэш и 0
в случае промаха в кэше.
Например, вы можете вычислить частоту попадания в кеш при загрузке файлов PNG с диска:
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);
Проверьте время суток, когда пользователи отправляют сетевые запросы.
Например, вы можете проверить, в какое время суток пользователи из США отправляют сетевые запросы из вашего приложения:
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;
Возьмите данные Performance Monitoring куда угодно
Иногда вам нужно получить доступ к серверу данных Performance Monitoring или передать их другому стороннему решению. В настоящее время плата за экспорт данных не взимается.
Вы можете экспортировать свои данные следующим образом:
Использование веб-интерфейса BigQuery
Выполнение
bq extract
из интерфейса командной строкиОтправка задания на извлечение через API или клиентские библиотеки.
Цены
За экспорт данных из Performance Monitoring плата не взимается, а BigQuery предоставляет щедрые бесплатные ограничения на использование. Подробную информацию можно найти в ценах BigQuery или в песочнице BigQuery .