É possível exportar os dados do Monitoramento de desempenho de apps da Apple e Android para o BigQuery para análise posterior. Com isso, é possível fazer análises usando o BigQuery SQL, exportar os dados para outro provedor de nuvem ou usá-los para seus modelos personalizados de ML.
Ativar o BigQuery Export
Acesse a página Integrações no Console do Firebase e, em seguida, clique em Vincular no card do BigQuery.
Siga as instruções na tela para ativar o BigQuery.
Ao ativar o BigQuery Export para o Monitoramento de desempenho, as seguintes ações ocorrem:
O Firebase exporta uma cópia dos seus dados para o BigQuery.
No início da vinculação, o Firebase configura automaticamente suas tabelas do BigQuery para preencher os dados dos últimos sete dias e possibilitar o início imediato dos experimentos. Aguarde algumas horas para que os dados iniciais fiquem disponíveis no BigQuery.
Também é possível configurar manualmente o preenchimento de dados dos últimos 30 dias.
Após a criação do banco de dados, o local não pode ser alterado, mas é possível mover (recriar) ou copiar o conjunto de dados para um local diferente. Para saber mais, consulte Mudar local do conjunto de dados.
O Firebase configura sincronizações regulares dos dados do projeto do Firebase para o BigQuery. Essas operações de exportação diárias começam às 8h, horário de Brasília, e geralmente terminam em 24 horas.
Todos os apps no projeto são vinculados ao BigQuery por padrão, e qualquer app adicionado posteriormente ao projeto também vai ser vinculado automaticamente. É possível gerenciar quais apps enviam dados.
Para desativar a exportação do BigQuery, desvincule seu projeto no Console do Firebase.
Quais dados são exportados para o BigQuery?
Para cada aplicativo no projeto, a exportação cria uma tabela que inclui todos os eventos de desempenho registrados. Cada linha na tabela é um evento único de desempenho que pode ser de um dos seguintes tipos:
Trace de duração: traces que coletam, por padrão, a métrica de "duração", que inclui inicialização do app, app em primeiro plano e app em segundo plano, bem como qualquer trace de código personalizado instrumentado pelo desenvolvedor.
event_type
éDURATION_TRACE
event_name
é igual ao nome do trace
Métrica de trace: métricas personalizadas associadas aos traces de código personalizados instrumentados pelo desenvolvedor.
event_type
éTRACE_METRIC
event_name
é o nome da métricaparent_trace_name
é o nome do trace que contém essa métrica
Trace de tela: traces que abrangem o ciclo de vida de uma tela (traces de renderização de tela).
event_type
éSCREEN_TRACE
event_name
é um prefixo_st_
junto do nome real da tela
Solicitação de rede: traces que abrangem o ciclo de vida de uma solicitação de rede (traces de solicitação de rede HTTP).
event_type
éNETWORK_REQUEST
event_name
é o padrão categorizado do URL de solicitação de rede
Cada evento de desempenho contém atributos do evento, como país e operadora do dispositivo cliente, além de informações específicas do evento:
- Trace de duração, métricas de trace e traces de tela contêm
trace_info
- As métricas de traces contêm
trace_info.metric_info
- Os traces de tela contêm
trace_info.screen_info
- Os traces de rede contêm
network_info
Esquema detalhado de dados
Nome do campo | Tipo | Descrição |
---|---|---|
event_timestamp | timestamp | Carimbo de data/hora que marca o período em que o evento foi iniciado no dispositivo cliente (início da geração de trace, início da rede etc.) |
app_display_version | string | A versão de exibição do aplicativo (por exemplo, "4.1.7")
|
app_build_version | string | A versão do aplicativo (por exemplo, "1523456")
|
os_version | string | A versão do SO do dispositivo cliente
|
device_name | string | Nome do dispositivo cliente (por exemplo, "Google Pixel") |
country | string | Código de duas letras do país em que o evento ocorreu (por exemplo, "US" para os EUA, ou "ZZ" para país desconhecido) |
carrier | string | Operadora do dispositivo cliente |
radio_type | string | Tipo de rádio ativo quando o evento ocorreu (por exemplo, "WIFI") |
custom_attributes | ARRAY<RECORD> | Todos os atributos personalizados associados a este evento |
custom_attributes.key | string | Chave do atributo personalizado |
custom_attributes.value | string | Valor do atributo personalizado |
event_type | string | Tipo do evento e valores possíveis:
|
event_name | string | Nome do evento
|
parent_trace_name | string | Nome do trace pai que transporta a métrica de trace Presente apenas para TRACE_METRIC |
trace_info | RECORD | Apenas presente para DURATION_TRACE , SCREEN_TRACE e TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | Presente apenas para SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | A proporção de frames lentos para este trace de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos frames para essa instância de tela levaram mais de 16 ms para serem renderizados) |
trace_info.screen_info.frozen_frame_ratio | float64 | A proporção de frames congelados para este trace de tela, entre 0 e 1 (por exemplo, um valor de 0,05 significa que 5% dos frames para essa instância de tela levaram mais de 700 ms para serem renderizados) |
trace_info.metric_info | RECORD | Apenas presente para TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Valor da métrica de trace |
network_info | RECORD | Apenas presente para NETWORK_REQUEST |
network_info.response_code | int64 | Código de resposta HTTP para a resposta de rede. Por exemplo, 200 ou 404 |
network_info.response_mime_type | string | Resposta de rede tipo MIME, por exemplo, "text/html" |
network_info.request_http_method | string | Método HTTP da solicitação de rede, por exemplo, "GET" ou "POST" |
network_info.request_payload_bytes | int64 | Tamanho do payload de solicitação de rede Unidade: byte |
network_info.response_payload_bytes | int64 | Tamanho do payload de resposta de rede Unidade: byte |
network_info.request_completed_time_us | int64 | Microssegundos após event_timestamp quando o envio da solicitação de rede estiver concluídoUnidade: microssegundo |
network_info.response_initiated_time_us | int64 | Microssegundos após event_timestamp quando a resposta da rede for iniciadaUnidade: microssegundo |
network_info.response_completed_time_us | int64 | Microssegundos após event_timestamp quando a resposta de rede estiver completaUnidade: microssegundo |
O que você pode fazer com os dados exportados?
As seções a seguir oferecem exemplos de consultas que podem ser executadas no BigQuery em comparação com os dados exportados do Monitoramento de desempenho
Visualizar a média da latência de início de aplicativo filtrada por país
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;
Verifique a proporção de frames congelados em várias condições
Por exemplo, é possível verificar a proporção de frames congelados junto com o tempo que os usuários passam em cada tela do seu aplicativo quando estão em diferentes tipos de rádio (Wi-Fi, 4G etc.).
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;
Calcular a taxa de ocorrência em cache ao carregar certos tipos de arquivos a partir do disco
Esta análise pressupõe que você instrumentou um trace de código personalizado para ser carregado a partir do disco
com um atributo personalizado denominado file-extension
e uma métrica personalizada (um
TRACE_METRIC
) denominada cache-hit
que está definida como 1
em casos de ocorrência em cache e como 0
em casos de ausência no cache.
Por exemplo, é possível calcular a taxa de ocorrência em cache ao carregar arquivos PNG a partir do disco:
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);
Verificar a hora do dia em que os usuários emitem solicitações de rede
Por exemplo, é possível verificar a hora do dia em que os usuários dos Estados Unidos emitem solicitações de rede do seu app:
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;
Levar os dados do Monitoramento de desempenho para qualquer lugar
Às vezes, você quer acessar o servidor de dados do Monitoramento de desempenho ou enviá-lo para outra solução de terceiros. No momento, não há cobrança para exportação de dados.
É possível exportar seus dados ao:
usar a IU da Web do BigQuery;
executar o comando
bq extract
da CLI;enviar um job de extração por meio da API ou de bibliotecas do cliente.
Preços
Não há custos para exportar dados do Monitoramento de desempenho. Além disso, o BigQuery fornece limites generosos e sem custos. Para mais informações, consulte preços do BigQuery ou o sandbox do BigQuery.