Você pode exportar seus dados do Crashlytics para o BigQuery para análise posterior. O BigQuery permite analisar os dados usando o BigQuery SQL, exportá-los para outro provedor de nuvem e usá-los para visualização e painéis personalizados com o Google Data Studio.
Ativar exportação do BigQuery
- Acesse a página Integrações no console do Firebase.
- No cartão do BigQuery , clique em Link .
- Siga as instruções na tela para ativar o BigQuery.
Ao vincular seu projeto ao BigQuery:
- O Firebase configura sincronizações diárias dos dados do seu projeto do Firebase com o BigQuery.
- Por padrão, todos os aplicativos do seu projeto são vinculados ao BigQuery, e todos os aplicativos adicionados posteriormente ao projeto são automaticamente vinculados ao BigQuery. Você pode gerenciar quais aplicativos enviam dados .
- O Firebase exporta uma cópia dos seus dados existentes para o BigQuery. Para cada aplicativo vinculado, isso inclui uma tabela em lote contendo os dados da sincronização diária.
- Se você ativar a exportação de streaming do Crashlytics BigQuery, todos os aplicativos vinculados também terão uma tabela em tempo real contendo dados em constante atualização.
Para desativar a exportação do BigQuery, desvincule seu projeto no Firebase console.
Quais dados são exportados para o BigQuery?
Os dados do Firebase Crashlytics são exportados para um conjunto de dados do BigQuery chamado firebase_crashlytics
. Por padrão, tabelas individuais serão criadas dentro do conjunto de dados do Crashlytics para cada aplicativo do seu projeto. O Firebase nomeia as tabelas com base no identificador de pacote do aplicativo, com pontos convertidos em sublinhados e um nome de plataforma anexado ao final.
Por exemplo, os dados de um aplicativo com o ID com.google.test
estariam em uma tabela chamada com_google_test_ANDROID
. Esta tabela de lote é atualizada uma vez por dia. Se você ativar a exportação de streaming do Crashlytics BigQuery, os dados do Firebase Crashlytics também serão transmitidos em tempo real para com_google_test_ANDROID_REALTIME
.
Cada linha em uma tabela representa um evento que ocorreu no aplicativo, incluindo falhas, erros não fatais e ANRs.
Ativar exportação de streaming do Crashlytics BigQuery
Você pode transmitir seus dados do Crashlytics em tempo real com BigQueryStreaming . Você pode usá-lo para qualquer finalidade que exija dados em tempo real, como apresentar informações em um painel ao vivo, assistir a uma implementação ao vivo ou monitorar problemas de aplicativos que acionam alertas e fluxos de trabalho personalizados.
A exportação de streaming do Crashlytics BigQuery não está disponível para o sandbox do BigQuery.
Ao ativar a exportação de streaming do Crashlytics BigQuery, além da tabela em lote, você terá uma tabela em tempo real. Aqui estão as diferenças que você deve estar ciente entre as tabelas:
Tabela de lote | Tabela em tempo real |
---|---|
|
|
A tabela de lote é ideal para análise de longo prazo e identificação de tendências ao longo do tempo porque armazenamos eventos de forma duradoura antes de gravá-los e eles podem ser preenchidos na tabela por até 90 dias. Quando gravamos dados na sua tabela em tempo real, nós os gravamos imediatamente no BigQuery e, portanto, é ideal para painéis dinâmicos e alertas personalizados. Essas duas tabelas podem ser combinadas com uma consulta de costura para obter os benefícios de ambas. Consulte o Exemplo de consulta 9 abaixo.
Por padrão, a tabela em tempo real tem um prazo de validade de partição de 30 dias. Para saber como modificar isso, consulte Atualizando a expiração da partição .
Ativar streaming do Crashlytics BigQuery
Para ativar o streaming, navegue até a seção Crashlytics da página de integrações do BigQuery e marque a caixa de seleção Incluir streaming .
Modelo de estúdio de dados
Para ativar dados em tempo real no seu modelo do Data Studio, siga as instruções em Visualização de dados exportados do Crashlytics com o Data Studio .
Visualizações
Você pode transformar os exemplos de consultas abaixo em visualizações usando a IU do BigQuery. Consulte Criando visualizações para obter instruções detalhadas.
O que você pode fazer com os dados exportados?
As exportações do BigQuery contêm dados brutos de falhas, incluindo tipo de dispositivo, sistema operacional, exceções (aplicativos Android) ou erros (aplicativos Apple) e registros do Crashlytics, bem como outros dados.
Trabalhar com dados do Firebase Crashlytics no BigQuery
Os exemplos a seguir demonstram consultas que você pode executar nos dados do Crashlytics. Essas consultas geram relatórios que não estão disponíveis no painel do Crashlytics.
Exemplos de consultas do Crashlytics
Os exemplos a seguir demonstram como gerar relatórios que agregam dados de eventos de colisão em resumos mais fáceis de entender.
Exemplo 1: Falhas por dia
Depois de trabalhar para corrigir o máximo de bugs possível, um desenvolvedor líder acredita que sua equipe está finalmente pronta para lançar seu novo aplicativo de compartilhamento de fotos. Antes de fazer isso, eles querem verificar o número de falhas por dia no último mês, para ter certeza de que o bug-bash tornou o aplicativo mais estável ao longo do tempo:
SELECT COUNT(DISTINCT event_id) AS number_of_crashes, FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` GROUP BY date_of_crashes ORDER BY date_of_crashes DESC LIMIT 30;
Exemplo 2: Encontre as falhas mais generalizadas
Para priorizar adequadamente os planos de produção, um gerente de projeto pondera como apontar as 10 falhas mais generalizadas em seu produto. Eles produzem uma consulta que fornece os pontos de dados pertinentes:
SELECT DISTINCT issue_id, COUNT(DISTINCT event_id) AS number_of_crashes, COUNT(DISTINCT installation_uuid) AS number_of_impacted_user, blame_frame.file, blame_frame.line FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(),INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY issue_id, blame_frame.file, blame_frame.line ORDER BY number_of_crashes DESC LIMIT 10;
Exemplo 3: 10 principais dispositivos com falhas
O outono é a nova temporada de telefones! Um desenvolvedor sabe que isso também significa que é uma nova temporada de problemas específicos do dispositivo. Para se antecipar às preocupações iminentes de compatibilidade, eles montaram uma consulta que identifica os 10 dispositivos que sofreram mais travamentos na semana passada:
SELECT device.model, COUNT(DISTINCT event_id) AS number_of_crashes FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE event_timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 168 HOUR) AND event_timestamp < CURRENT_TIMESTAMP() GROUP BY device.model ORDER BY number_of_crashes DESC LIMIT 10;
Exemplo 4: Filtrar por chave personalizada
Um desenvolvedor de jogos deseja saber qual nível do jogo apresenta mais travamentos. Para ajudá-los a rastrear essa estatística, eles definem uma chave personalizada do Crashlytics current_level
e a atualizam sempre que o usuário atinge um novo nível.
Objetivo-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Rápido
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
Com essa chave na exportação do BigQuery, eles escrevem uma consulta para relatar a distribuição dos valores current_level
associados a cada evento de falha:
SELECT COUNT(DISTINCT event_id) AS num_of_crashes, value FROM `projectId.firebase_crashlytics.package_name_ANDROID` UNNEST(custom_keys) WHERE key = "current_level" GROUP BY key, value ORDER BY num_of_crashes DESC
Exemplo 5: extração de ID de usuário
Um desenvolvedor tem um aplicativo em acesso antecipado. A maioria dos usuários adora, mas três tiveram um número incomum de travamentos. Para chegar ao fundo do problema, eles escrevem uma consulta que extrai todos os eventos de falha desses usuários, usando seus IDs de usuário:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Exemplo 6: Encontre todos os usuários que enfrentam um problema específico de travamento
Um desenvolvedor lançou um bug crítico para um grupo de testadores beta. A equipe conseguiu usar a consulta do Exemplo 2 acima para identificar o ID específico do problema de travamento. Agora eles gostariam de executar uma consulta para extrair a lista de usuários do aplicativo que foram afetados por esta falha:
SELECT user.id as user_id FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE issue_id = "YOUR_ISSUE_ID" AND application.display_version = "" AND user.id != "" ORDER BY user.id;
Exemplo 7: Número de usuários afetados por um problema de travamento, dividido por país
Agora a equipe detectou um bug crítico durante o lançamento de uma nova versão. Eles conseguiram usar a consulta do Exemplo 2 acima para identificar o ID específico do problema de travamento. A equipe gostaria agora de ver se essa falha se espalhou para usuários em diferentes países ao redor do mundo.
Para escrever esta consulta, a equipe precisará:
Ative as exportações do BigQuery para o Google Analytics. Consulte Exportar dados do projeto para o BigQuery .
Atualize o aplicativo para transmitir um ID de usuário ao SDK do Google Analytics e ao SDK do Crashlytics.
Objetivo-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Rápido
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Escreva uma consulta que use o campo de ID do usuário para associar eventos no conjunto de dados do Google Analytics BigQuery com falhas no conjunto de dados do Crashlytics BigQuery:
SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted FROM `projectId.firebase_crashlytics.package_name_ANDROID` c INNER JOIN `projectId.analytics_YOUR_TABLE.events_*` a on c.user.id = a.user_id WHERE c.issue_id = "YOUR_ISSUE_ID" AND a._TABLE_SUFFIX BETWEEN '20190101' AND '20200101' GROUP BY c.issue_id, a.geo.country, c.user.id
Exemplo 8: Os 5 principais problemas até agora
Requer a ativação da exportação de streaming do Crashlytics BigQuery
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` WHERE DATE(event_timestamp) = CURRENT_DATE() GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Exemplo 9: cinco principais problemas desde DATE, incluindo hoje
Requer a ativação da exportação de streaming do Crashlytics BigQuery.
Neste exemplo, combinamos tabelas em lote e em tempo real para adicionar informações em tempo real aos dados confiáveis do lote. Como event_id
é uma chave primária, podemos usar DISTINCT event_id
para desduplicar quaisquer eventos comuns das duas tabelas.
SELECT issue_id, COUNT(DISTINCT event_id) AS events FROM ( SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID_REALTIME` UNION ALL SELECT issue_id, event_id, event_timestamp FROM `your_project.firebase_crashlytics.package_name_ANDROID`) WHERE event_timestamp >= "2020-01-13" GROUP BY issue_id ORDER BY events DESC LIMIT 5;
Noções básicas sobre o esquema do Firebase Crashlytics no BigQuery
Quando você vincula o Crashlytics ao BigQuery, o Firebase exporta eventos recentes (falhas, erros não fatais e ANRs), incluindo eventos de até dois dias antes da vinculação, com a opção de preenchimento de até noventa dias.
Desse ponto até você desativar o link, o Firebase exporta eventos do Crashlytics diariamente. Pode levar alguns minutos para que os dados estejam disponíveis no BigQuery após cada exportação.
Conjuntos de dados
O Firebase Crashlytics cria um novo conjunto de dados no BigQuery para dados do Crashlytics. O conjunto de dados abrange todo o seu projeto, mesmo que tenha vários aplicativos.
Tabelas
O Firebase Crashlytics cria uma tabela no conjunto de dados para cada aplicativo do seu projeto, a menos que você tenha optado por não exportar dados desse aplicativo. O Firebase nomeia as tabelas com base no identificador de pacote do aplicativo, com pontos convertidos em sublinhados e um nome de plataforma anexado ao final.
Por exemplo, os dados de um aplicativo Android com o ID com.google.test
estariam em uma tabela chamada com_google_test_ANDROID
e os dados em tempo real (se ativados) estariam em uma tabela chamada com_google_test_ANDROID_REALTIME
As tabelas contêm um conjunto padrão de dados do Crashlytics, além de quaisquer chaves personalizadas do Crashlytics definidas pelos desenvolvedores.
Linhas
Cada linha em uma tabela representa um erro encontrado pelo aplicativo.
Colunas
As colunas de uma tabela são idênticas para falhas, erros não fatais e ANRs. Se a exportação de streaming do Crashlytics BigQuery estiver ativada, a tabela em tempo real terá as mesmas colunas que a tabela em lote. As colunas na exportação estão listadas abaixo.
Sem rastreamentos de pilha
Colunas presentes em linhas que representam eventos sem rastreamento de pilha.
Nome do campo | Tipo de dados | Descrição |
---|---|---|
plataforma | CORDA | Aplicativos Apple ou Android |
identificador_pacote | CORDA | O ID do pacote, por exemplo, com.google.gmail |
ID_do_evento | CORDA | Um ID exclusivo para o evento |
é_fatal | BOLEANO | Se o aplicativo travou |
tipo_erro | CORDA | Tipo de erro do evento (FATAL, NON_FATAL, ANR) |
issue_id | CORDA | O problema associado ao evento |
variante_id | CORDA | A variante do problema associada a este evento Observe que nem todos os eventos possuem uma variante de problema associada. |
evento_timestamp | TIMESTAMP | Quando o evento ocorreu |
dispositivo | REGISTRO | O dispositivo em que o evento ocorreu |
fabricante do dispositivo | CORDA | O fabricante do dispositivo |
modelo do dispositivo | CORDA | O modelo do dispositivo |
dispositivo.arquitetura | CORDA | X86_32, X86_64, ARMV7, ARM64, ARMV7S ou ARMV7K |
memória | REGISTRO | O status da memória do dispositivo |
memória.usada | INT64 | Bytes de memória usados |
memória.livre | INT64 | Bytes de memória restantes |
armazenar | REGISTRO | O armazenamento persistente do dispositivo |
armazenamento.usado | INT64 | Bytes de armazenamento usados |
armazenamento.gratuito | INT64 | Bytes de armazenamento restantes |
sistema operacional | REGISTRO | Os detalhes do sistema operacional no dispositivo |
sistema_operacional.display_versão | CORDA | A versão do sistema operacional no dispositivo |
sistema_operacional.nome | CORDA | O nome do sistema operacional no dispositivo |
sistema_operacional.modificação_estado | CORDA | Se o dispositivo foi modificado, por exemplo, desbloqueado/enraizado (MODIFICADO ou NÃO MODIFICADO) |
sistema_operacional.type | CORDA | O tipo de sistema operacional em execução no dispositivo (por exemplo, IOS, MACOS); disponível apenas para aplicativos de plataformas Apple |
sistema_operacional.device_type | CORDA | O tipo de dispositivo (por exemplo, CELULAR, TABLET, TV, etc.); também conhecida como "categoria de dispositivo" |
aplicativo | REGISTRO | O aplicativo que gerou o evento |
aplicação.build_version | CORDA | A versão de compilação do aplicativo |
aplicação.display_version | CORDA | |
do utilizador | REGISTRO | Opcional: informações coletadas do usuário do aplicativo |
nome de usuário | CORDA | Opcional: o nome do usuário |
usuário.e-mail | CORDA | Opcional: o endereço de e-mail do usuário |
ID do usuário | CORDA | Opcional: um ID específico do aplicativo associado ao usuário |
chaves_personalizadas | REGISTRO REPETIDO | Pares de valores-chave definidos pelo desenvolvedor |
custom_keys.key | CORDA | Uma chave definida pelo desenvolvedor |
custom_keys.value | CORDA | Um valor definido pelo desenvolvedor |
instalação_uuid | CORDA | Um ID que identifica uma instalação exclusiva de aplicativo e dispositivo |
crashlytics_sdk_versions | CORDA | A versão do SDK do Crashlytics que gerou o evento |
orientação_do_aplicativo | CORDA | RETRATO, PAISAGEM, FACE_UP ou FACE_DOWN |
orientação_do_dispositivo | CORDA | RETRATO, PAISAGEM, FACE_UP ou FACE_DOWN |
estado_processo | CORDA | FUNDO ou PRIMEIRO PLANO |
Histórico | REGISTRO REPETIDO | Mensagens de registro com carimbo de data e hora geradas pelo criador de logs do Crashlytics, se ativado |
registros.timestamp | TIMESTAMP | Quando o log foi feito |
logs.mensagem | CORDA | A mensagem registrada |
Migalhas de pão | REGISTRO REPETIDO | Breadcrumbs do Google Analytics com carimbo de data/hora, se ativado |
migalhas de pão.timestamp | TIMESTAMP | O carimbo de data/hora associado à localização atual |
pão ralado.nome | CORDA | O nome associado à localização atual |
migalhas de pão.params | REGISTRO REPETIDO | Parâmetros associados à localização atual |
breadcrumbs.params.key | CORDA | Uma chave de parâmetro associada à localização atual |
breadcrumbs.params.value | CORDA | Um valor de parâmetro associado à localização atual |
culpa_frame | REGISTRO | O quadro identificado como a causa raiz da falha ou erro |
culpa_frame.line | INT64 | O número da linha do arquivo do quadro |
culpa_frame.file | CORDA | O nome do arquivo do quadro |
culpa_frame.symbol | CORDA | O símbolo hidratado, ou símbolo cru, se não for hidratável |
culpa_frame.offset | INT64 | O deslocamento de bytes na imagem binária que contém o código, não definido para exceções Java |
culpa_frame.endereço | INT64 | O endereço na imagem binária que contém o código, não definido para frames Java |
culpa_frame.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
culpa_frame.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
culpa_frame.blamed | BOLEANO | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
exceções | REGISTRO REPETIDO | Apenas Android: exceções que ocorreram durante este evento. As exceções aninhadas são apresentadas em ordem cronológica inversa (leia-se: o último registro é a primeira exceção lançada) |
exceções.tipo | CORDA | O tipo de exceção, por exemplo, java.lang.IllegalStateException |
exceções.exception_message | CORDA | Uma mensagem associada à exceção |
exceções.nested | BOLEANO | Verdadeiro para todos, exceto para a última exceção lançada (ou seja, o primeiro registro) |
exceções.título | CORDA | O título do tópico |
exceções.subtítulo | CORDA | O subtítulo do tópico |
exceções.culpado | BOLEANO | Verdadeiro se o Crashlytics determinar que a exceção é responsável pelo erro ou falha |
exceções.frames | REGISTRO REPETIDO | Os quadros associados à exceção |
exceções.frames.line | INT64 | O número da linha do arquivo do quadro |
exceções.frames.file | CORDA | O nome do arquivo do quadro |
exceções.frames.symbol | CORDA | O símbolo hidratado, ou símbolo cru, se não for hidratável |
exceções.frames.offset | INT64 | O deslocamento de bytes na imagem binária que contém o código, não definido para exceções Java |
exceções.frames.endereço | INT64 | O endereço na imagem binária que contém o código, não definido para frames Java |
exceções.frames.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
exceções.frames.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
exceções.frames.blamed | BOLEANO | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
erro | REGISTRO REPETIDO | Somente aplicativos Apple: erros não fatais |
erro.queue_name | CORDA | A fila em que o thread estava sendo executado |
Erro de código | INT64 | Código de erro associado ao NSError registrado personalizado do aplicativo |
erro.título | CORDA | O título do tópico |
erro.subtítulo | CORDA | O subtítulo do tópico |
erro.culpado | BOLEANO | Se a análise do Crashlytics determinou que este quadro é a causa do erro |
erro.frames | REGISTRO REPETIDO | Os quadros do stacktrace |
erro.frames.line | INT64 | O número da linha do arquivo do quadro |
erro.frames.file | CORDA | O nome do arquivo do quadro |
erro.frames.symbol | CORDA | O símbolo hidratado, ou símbolo cru, se não for hidratável |
erro.frames.offset | INT64 | O deslocamento de bytes na imagem binária que contém o código |
erro.frames.endereço | INT64 | O endereço na imagem binária que contém o código |
erro.frames.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
erro.frames.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
erro.frames.blamed | BOLEANO | Se a análise do Crashlytics determinou que este quadro é a causa do erro |
tópicos | REGISTRO REPETIDO | Tópicos presentes no momento do evento |
threads.crashed | BOLEANO | Se o tópico travou |
threads.thread_name | CORDA | O nome do tópico |
threads.queue_name | CORDA | Somente aplicativos Apple: a fila em que o thread estava sendo executado |
threads.signal_name | CORDA | O nome do sinal que causou a falha do aplicativo, presente apenas em threads nativos com falha |
threads.signal_code | CORDA | O código do sinal que causou a falha do aplicativo; presente apenas em threads nativos travados |
threads.crash_address | INT64 | O endereço do sinal que causou a falha do aplicativo; presente apenas em threads nativos travados |
threads.código | INT64 | Somente aplicativos Apple: código de erro do NSError registrado personalizado do aplicativo |
tópicos.título | CORDA | O título do tópico |
threads.subtitle | CORDA | O subtítulo do tópico |
tópicos.culpado | BOLEANO | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
threads.frames | REGISTRO REPETIDO | Os quadros do tópico |
threads.frames.line | INT64 | O número da linha do arquivo do quadro |
threads.frames.arquivo | CORDA | O nome do arquivo do quadro |
threads.frames.symbol | CORDA | O símbolo hidratado, ou símbolo cru, se não for hidratável |
threads.frames.offset | INT64 | O deslocamento de byte na imagem binária que contém o código |
threads.frames.endereço | INT64 | O endereço na imagem binária que contém o código |
threads.frames.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
threads.frames.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
threads.frames.blamed | BOLEANO | Se a análise do Crashlytics determinou que este quadro é a causa do erro |
unidade_metadata.unity_version | CORDA | A versão do Unity em execução neste dispositivo |
unidade_metadata.debug_build | BOLEANO | Se esta for uma compilação de depuração |
unidade_metadata.processor_type | CORDA | O tipo de processador |
unidade_metadata.processor_count | INT64 | O número de processadores (núcleos) |
unidade_metadata.processor_frequency_mhz | INT64 | A frequência do(s) processador(es) em MHz |
unidade_metadata.system_memory_size_mb | INT64 | O tamanho da memória do sistema em Mb |
unidade_metadata.graphics_memory_size_mb | INT64 | A memória gráfica em MB |
unidade_metadata.graphics_device_id | INT64 | O identificador do dispositivo gráfico |
unidade_metadata.graphics_device_vendor_id | INT64 | O identificador do fornecedor do processador gráfico |
unidade_metadata.graphics_device_name | CORDA | O nome do dispositivo gráfico |
unidade_metadata.graphics_device_vendor | CORDA | O fornecedor do dispositivo gráfico |
unidade_metadata.graphics_device_version | CORDA | A versão do dispositivo gráfico |
unidade_metadata.graphics_device_type | CORDA | O tipo do dispositivo gráfico |
unidade_metadata.graphics_shader_level | INT64 | O nível de shader dos gráficos |
unidade_metadata.graphics_render_target_count | INT64 | O número de alvos de renderização gráfica |
unidade_metadata.graphics_copy_texture_support | CORDA | Suporte para copiar textura gráfica conforme definido na API Unity |
unidade_metadata.graphics_max_texture_size | INT64 | O tamanho máximo dedicado à renderização de textura |
unidade_metadata.screen_size_px | CORDA | O tamanho da tela em pixels, formatado como largura x altura |
unidade_metadata.screen_resolution_dpi | CORDA | O DPI da tela como um número de ponto flutuante |
unidade_metadata.screen_refresh_rate_hz | INT64 | A taxa de atualização da tela em Hz |
Visualizando dados exportados do Crashlytics com o Data Studio
O Google Data Studio transforma seus conjuntos de dados do Crashlytics no BigQuery em relatórios fáceis de ler, compartilhar e totalmente personalizáveis.
Para saber mais sobre como usar o Data Studio, experimente o guia de início rápido do Data Studio, Bem-vindo ao Data Studio .
Usando um modelo de relatório Crashlytics
O Data Studio tem um relatório de amostra para o Crashlytics que inclui um conjunto abrangente de dimensões e métricas do esquema exportado do Crashlytics BigQuery. Se você tiver ativado a exportação de streaming do Crashlytics BigQuery, poderá visualizar esses dados na página Tendências em tempo real do modelo do Data Studio. Você pode usar o exemplo como modelo para criar rapidamente novos relatórios e visualizações com base nos dados brutos de falhas do seu próprio aplicativo:
- Abra o modelo de painel do Crashlytics Data Studio .
- Clique em Usar modelo no canto superior direito.
- No menu suspenso Nova fonte de dados , selecione Criar nova fonte de dados .
- Clique em Selecionar no cartão do BigQuery .
- Selecione uma tabela contendo dados exportados do Crashlytics escolhendo My Projects > [your-project-name] > firebase_crashlytics > [your-table-name] . Sua tabela de lotes está sempre disponível para seleção; se a exportação de streaming do Crashlytics BigQuery estiver ativada, você poderá selecionar sua tabela em tempo real.
- Em Configuração , defina o nível do modelo do Crashlytics como Padrão .
- Clique em Conectar para criar a nova fonte de dados.
- Clique em Adicionar ao relatório para retornar ao modelo do Crashlytics.
- Por fim, clique em Criar relatório para criar sua cópia do modelo de painel do Crashlytics Data Studio.