Exportar dados do Firebase Crashlytics para o BigQuery

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

  1. Acesse a página Integrações no console do Firebase.
  2. No cartão do BigQuery , clique em Link .
  3. 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
  • Dados exportados uma vez por dia
  • Eventos armazenados de forma durável antes da gravação em lote no BigQuery
  • Pode ser preenchido até 90 dias antes
  • Dados exportados em tempo real
  • Nenhum preenchimento disponível

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á:

  1. Ative as exportações do BigQuery para o Google Analytics. Consulte Exportar dados do projeto para o BigQuery .

  2. 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");
    
  3. 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:

  1. Abra o modelo de painel do Crashlytics Data Studio .
  2. Clique em Usar modelo no canto superior direito.
  3. No menu suspenso Nova fonte de dados , selecione Criar nova fonte de dados .
  4. Clique em Selecionar no cartão do BigQuery .
  5. 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.
  6. Em Configuração , defina o nível do modelo do Crashlytics como Padrão .
  7. Clique em Conectar para criar a nova fonte de dados.
  8. Clique em Adicionar ao relatório para retornar ao modelo do Crashlytics.
  9. Por fim, clique em Criar relatório para criar sua cópia do modelo de painel do Crashlytics Data Studio.