É possível exportar seus dados do Crashlytics para o BigQuery se quiser uma análise mais detalhada. Com ele, é possível analisar os dados usando o SQL do BigQuery, exportá-los para outro provedor de nuvem e usá-los em visualizações e painéis personalizados com o Google Data Studio.
Ativar o BigQuery Export
- Acesse a página Integrações no console do Firebase.
- No cartão BigQuery, clique em Vincular.
- Siga as instruções na tela para ativar o BigQuery.
Quando você vincula seu projeto ao BigQuery:
- O Firebase configura as sincronizações diárias de seus dados do projeto do Firebase para o BigQuery.
- Todos os apps no projeto são vinculados ao BigQuery por padrão, e todos os apps adicionados posteriormente ao projeto são vinculados automaticamente ao BigQuery. É possível gerenciar quais apps enviam dados.
- O Firebase exporta uma cópia dos seus dados para o BigQuery. Em cada app vinculado, é incluída uma tabela em lote com os dados da sincronização diária.
- Se você ativar a exportação de streaming do Crashlytics para BigQuery, todos os apps vinculados também vão ter uma tabela em tempo real contendo dados sempre atualizados.
Para desativar o BigQuery Export, desvincule seu projeto no console do Firebase.
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 app no seu projeto. O Firebase nomeia as
tabelas com base no identificador do pacote do app, com pontos convertidos em sublinhados e um nome de plataforma anexado ao final.
Por exemplo, os dados de um app com o ID com.google.test
estariam em uma tabela chamada com_google_test_ANDROID
. Essa tabela em lote é atualizada uma vez por dia. Se você ativar a exportação de streaming do Crashlytics para 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 app, incluindo falhas, erros não fatais e ANRs.
Ativar a exportação de streaming do Crashlytics para o BigQuery
É possível transmitir seus dados do Crashlytics em tempo real com o BigQueryStreaming. Use esse recurso sempre que precisar de dados em tempo real, como apresentar informações em um painel ativo, assistir a um lançamento ao vivo ou monitorar problemas de aplicativos que acionam alertas e fluxos de trabalho personalizados.
A exportação de streaming do Crashlytics para o BigQuery não está disponível no sandbox do BigQuery.
Ao ativar a exportação de streaming do Crashlytics para o BigQuery, além da tabela em lote, você terá uma tabela em tempo real. Veja abaixo as diferenças entre as tabelas:
Tabela em lote | Tabela em tempo real |
---|---|
|
|
A tabela em lote é ideal para análise de longo prazo e identificação de tendências ao longo do tempo, porque armazenamos eventos de maneira durável antes de gravá-los. Além disso, eles podem ser preenchidos na tabela por até 30 dias. Quando gravamos dados na sua tabela em tempo real, eles são gravados imediatamente no BigQuery e, por isso, é ideal para painéis ao vivo e alertas personalizados. Essas duas tabelas podem ser combinadas com uma consulta de agrupamento para fornecer os benefícios de ambas. Veja a consulta Exemplo 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 Como atualizar a expiração da partição.
Ativar o streaming do Crashlytics para BigQuery
Para ativar o streaming, navegue até a seção do Crashlytics da página integrações do BigQuery e marque a caixa de seleção Incluir streaming.
Modelo do Data Studio
Para ativar os dados em tempo real no seu modelo do Data Studio, siga as instruções em Como visualizar dados exportados do Crashlytics com o Data Studio.
Visualizações
É possível transformar as consultas de exemplo abaixo em visualizações usando a interface do BigQuery. Consulte Como criar visualizações para instruções detalhadas.
O que você pode fazer com os dados exportados?
As exportações do BigQuery contêm dados de falhas brutos, incluindo tipo de dispositivo, sistema operacional, exceções (apps Android) ou erros (apps Apple) e registros do Crashlytics, além de outros dados.
Trabalhar com dados do Firebase Crashlytics no BigQuery
Nos exemplos a seguir, mostramos consultas que podem ser executadas nos dados do Crashlytics. Essas consultas geram relatórios não disponíveis no painel do Crashlytics.
Exemplos de consultas Crashlytics
Nos exemplos abaixo, veja como gerar relatórios que agregam dados de eventos com falha em resumos mais fáceis de entender.
Exemplo 1: número de falhas por dia
Depois de trabalhar para corrigir o máximo de bugs possível, um desenvolvedor líder acredita que a equipe dele está finalmente pronta para lançar o novo app de compartilhamento de fotos. Antes disso, eles verificam o número de falhas por dia, durante o último mês, para ter certeza de que a busca por bugs tornou o app 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: encontrar falhas mais abrangentes
Para priorizar corretamente os planos de produção, um gerente de projetos avalia como apontar as 10 falhas mais abrangentes nos produtos da empresa. Então, eles criam uma consulta que fornece 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: os 10 dispositivos que apresentam mais falhas
O outono é a temporada de lançamento de novos smartphones. Um desenvolvedor sabe que isso também significa uma nova temporada de problemas específicos de cada dispositivo. Para superar as preocupações relacionadas a compatibilidade, eles criaram uma consulta que identifica os 10 dispositivos que apresentaram mais falhas na última semana:
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 quer saber em qual nível o jogo apresenta mais
falhas. Para ajudá-lo a rastrear essa estatística, ele configura uma chave Crashlytics
current_level
personalizada e a atualiza cada vez que o usuário atinge um novo nível.
Objective-C
CrashlyticsKit setIntValue:3 forKey:@"current_level";
Swift
Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");
Java
Crashlytics.setInt("current_level", 3);
Com essa chave na respectiva exportação do BigQuery, uma consulta é gravada para registrar a
distribuição dos valores de current_level
associados a cada evento com 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 do usuário
Um desenvolvedor tem um app no acesso antecipado. A maioria dos usuários adorou, mas três vivenciaram uma quantidade incomum de falhas. Para encontrar a raiz do problema, ele gravou uma consulta para extrair todos os eventos com falha ocorridos com esses usuários, usando o ID do usuário correspondente:
SELECT * FROM `projectId.firebase_crashlytics.package_name_ANDROID` WHERE user.id IN ("userid1", "userid2", "userid3") ORDER BY user.id
Exemplo 6: localizar todos os usuários que enfrentam uma falha específica
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 da falha. Agora, eles querem executar uma consulta para extrair a lista de usuários do app que foram afetados por essa 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 uma falha discriminados 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 da falha. A equipe agora quer ver se essa falha se espalhou para usuários em diferentes países ao redor do mundo.
Para criar essa consulta, a equipe precisará realizar estas ações:
Ativar as exportações do BigQuery para o Google Analytics. Consulte Exportar dados do projeto para o BigQuery.
Atualizar o app para transmitir um ID de usuário para o SDK do Google Analytics e o do Crashlytics.
Objective-C
CrashlyticsKit setUserIdentifier:@"123456789"; FIRAnalytics setUserID:@"12345678 9";
Swift
Crashlytics.sharedInstance().setUserIdentifier("123456789"); Analytics.setUserID("123456789");
Java
Crashlytics.setUserIdentifier("123456789"); mFirebaseAnalytics.setUserId("123456789");
Criar uma consulta que use o campo "ID do usuário" para participar de eventos no conjunto de dados do BigQuery para Google Analytics que apresentam falhas no conjunto de dados do Crashlytics para o 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 cinco principais problemas até agora
Exige a ativação da exportação de streaming do Crashlytics para o 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
Exige a ativação da exportação de streaming do Crashlytics para o BigQuery.
Neste exemplo, combinamos tabelas em lote e em tempo real para adicionar informações em tempo real aos dados em lote confiáveis. Como event_id
é uma chave primária, podemos usar DISTINCT event_id
para eliminar os 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é 30 dias.
Enquanto a vinculação estiver ativada, os eventos do Crashlytics serão exportados diariamente pelo Firebase. Após cada exportação, levará alguns minutos para que os dados estejam disponíveis no BigQuery.
Conjuntos de dados
O Firebase Crashlytics cria um novo conjunto no BigQuery para os dados do Crashlytics. O conjunto de dados abrange todo o projeto, mesmo que tenha vários apps.
Tabelas
No Firebase Crashlytics, é criada uma tabela no conjunto de dados para cada app no seu projeto, a não ser que você opte por não exportar dados para esse app. O Firebase nomeia as tabelas com base no identificador do pacote do app, com pontos convertidos em sublinhados e um nome de plataforma anexado ao final.
Por exemplo, os dados de um app para 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 app.
Colunas
As colunas em uma tabela são idênticas para falhas, erros não fatais e ANRs. Se a exportação de streaming do Crashlytics para o BigQuery estiver ativada, a tabela em tempo real terá as mesmas colunas da tabela em lote. As colunas da exportação estão listadas abaixo.
Sem stack traces
Colunas presentes em linhas que representam eventos sem rastreamentos de pilha.
Nome do campo | Tipo de dado | Descrição |
---|---|---|
platform | STRING | Apps para Apple ou Android |
bundle_identifier | STRING | O ID do pacote, como com.google.gmail |
event_id | STRING | Um código exclusivo do evento |
is_fatal | BOOLEAN | Se o app apresentou uma falha |
error_type | STRING | Tipo de erro do evento (FATAL, NON_FATAL, ANR) |
issue_id | STRING | O problema associado ao evento |
variant_id | STRING | A variante do problema associada a este evento Nem todos os eventos têm uma variante do problema associada. |
event_timestamp | TIMESTAMP | Quando o evento ocorreu |
device | RECORD | O dispositivo em que o evento ocorreu |
device.manufacturer | STRING | O fabricante do dispositivo |
device.model | STRING | O modelo do dispositivo |
device.architecture | STRING | X86_32, X86_64, ARMV7, ARM64, ARMV7S ou ARMV7K |
memory | RECORD | O status da memória do dispositivo |
memory.used | INT64 | Bytes de memória usados |
memory.free | INT64 | Bytes de memória restantes |
storage | RECORD | Armazenamento permanente do dispositivo |
storage.used | INT64 | Bytes de armazenamento usados |
storage.free | INT64 | Bytes de armazenamento restantes |
operating_system | RECORD | Os detalhes do SO no dispositivo |
operating_system.display_version | STRING | A versão do SO no dispositivo |
operating_system.name | STRING | O nome do SO no dispositivo |
operating_system.modification_state | STRING | Se o dispositivo foi modificado, por exemplo, com jailbreak/com acesso root (MODIFIED ou UNMODIFIED) |
operating_system.type | STRING | O tipo de SO em execução no dispositivo (por exemplo, IOS, MACOS); disponível apenas para apps das plataformas da Apple |
operating_system.device_type | STRING | O tipo de dispositivo (por exemplo, CELULAR, TABLET, TV etc.); também conhecido como "categoria de dispositivo" |
application | RECORD | O app que gerou o evento |
application.build_version | STRING | A versão de compilação do app |
application.display_version | STRING | |
user | RECORD | Opcional: informações coletadas no usuário do app |
user.name | STRING | Opcional: o nome do usuário |
user.email | STRING | Opcional: o endereço de e-mail do usuário |
user.id | STRING | Opcional: um código específico do app associado ao usuário |
custom_keys | REGISTRO REPETIDO | Pares de chave-valor definidos pelo desenvolvedor |
custom_keys.key | STRING | Uma chave definida pelo desenvolvedor |
custom_keys.value | STRING | Um valor definido pelo desenvolvedor |
installation_uuid | STRING | Um código que identifica um app e uma instalação exclusivos no dispositivo |
crashlytics_sdk_versions | STRING | A versão do SDK do Crashlytics que gerou o evento |
app_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP ou FACE_DOWN |
device_orientation | STRING | PORTRAIT, LANDSCAPE, FACE_UP ou FACE_DOWN |
process_state | STRING | BACKGROUND ou FOREGROUND |
logs | REGISTRO REPETIDO | Mensagens de registro com um carimbo de data/hora geradas pelo registrador do Crashlytics, se ativadas |
logs.timestamp | TIMESTAMP | Quando o registro foi feito |
logs.message | STRING | A mensagem registrada |
breadcrumbs | REGISTRO REPETIDO | Localização atual com carimbo de data/hora do Google Analytics, se ativado |
breadcrumbs.timestamp | TIMESTAMP | O carimbo de data/hora associado à localização atual |
breadcrumbs.name | STRING | O nome associado à localização atual |
breadcrumbs.params | REGISTRO REPETIDO | Parâmetros associados à localização atual |
breadcrumbs.params.key | STRING | Uma chave de parâmetro associada à localização atual |
breadcrumbs.params.value | STRING | Um valor de parâmetro associado à localização atual |
blame_frame | RECORD | O frame identificado como a causa raiz da falha ou do erro |
blame_frame.line | INT64 | O número da linha no arquivo do frame |
blame_frame.file | STRING | O nome do arquivo do frame |
blame_frame.symbol | STRING | O símbolo hidratado, ou símbolo bruto, se não for hidratável |
blame_frame.offset | INT64 | O deslocamento de byte na imagem binária que contém o código, não configurado para exceções Java |
blame_frame.address | INT64 | O endereço na imagem binária que contém o código, não configurado para quadros Java |
blame_frame.library | STRING | O nome de exibição da biblioteca que inclui o frame |
blame_frame.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM ou SYSTEM |
blame_frame.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
exceptions | REGISTRO REPETIDO | Apenas Android: exceções que ocorreram durante este evento. As exceções aninhadas são apresentadas em ordem cronológica inversa, ou seja, o último registro é a primeira exceção lançada |
exceptions.type | STRING | O tipo de exceção, como java.lang.IllegalStateException |
exceptions.exception_message | STRING | Uma mensagem associada à exceção |
exceptions.nested | BOOLEAN | Verdadeiro para todas, exceto a última exceção lançada (ou seja, o primeiro registro) |
exceptions.title | STRING | O título da thread |
exceptions.subtitle | STRING | A legenda da thread |
exceptions.blamed | BOOLEAN | Verdadeiro se o Crashlytics determinar que a exceção é responsável pelo erro ou pela falha |
exceptions.frames | REGISTRO REPETIDO | Os frames associados à exceção |
exceptions.frames.line | INT64 | O número da linha no arquivo do frame |
exceptions.frames.file | STRING | O nome do arquivo do frame |
exceptions.frames.symbol | STRING | O símbolo hidratado, ou símbolo bruto, se não for hidratável |
exceptions.frames.offset | INT64 | O deslocamento de byte na imagem binária que contém o código, não configurado para exceções Java |
exceptions.frames.address | INT64 | O endereço na imagem binária que contém o código, não configurado para quadros Java |
exceptions.frames.library | STRING | O nome de exibição da biblioteca que inclui o frame |
exceptions.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM ou SYSTEM |
exceptions.frames.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
error | REGISTRO REPETIDO | Apenas apps da Apple: erros não fatais |
error.queue_name | STRING | A fila em que a thread estava sendo executada |
error.code | INT64 | Código de erro associado ao NSError personalizado registrado no app |
error.title | STRING | O título da thread |
error.subtitle | STRING | A legenda da thread |
error.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse frame é a causa do erro |
error.frames | REGISTRO REPETIDO | Os frames do rastreamento de pilha |
error.frames.line | INT64 | O número da linha no arquivo do frame |
error.frames.file | STRING | O nome do arquivo do frame |
error.frames.symbol | STRING | O símbolo hidratado, ou símbolo bruto, se não for hidratável |
error.frames.offset | INT64 | O deslocamento de byte na imagem binária que contém o código |
error.frames.address | INT64 | O endereço na imagem binária que contém o código |
error.frames.library | STRING | O nome de exibição da biblioteca que inclui o frame |
error.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM ou SYSTEM |
error.frames.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse frame é a causa do erro |
threads | REGISTRO REPETIDO | Threads presentes no momento em que ocorreu o evento |
threads.crashed | BOOLEAN | Se a thread apresentou uma falha |
threads.thread_name | STRING | O nome da thread |
threads.queue_name | STRING | Apenas apps da Apple: a fila em que a thread estava sendo executada |
threads.signal_name | STRING | O nome do sinal que causou a falha do app. Presente apenas em threads nativas com falha |
threads.signal_code | STRING | O código do sinal que causou a falha do app. Presente apenas em threads nativas com falha |
threads.crash_address | INT64 | O endereço do sinal que causou a falha do app. Presente apenas em threads nativas com falha |
threads.code | INT64 | Apenas apps da Apple: código de erro do NSError registrado no app |
threads.title | STRING | O título da thread |
threads.subtitle | STRING | A legenda da thread |
threads.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse quadro é a causa da falha ou do erro |
threads.frames | REGISTRO REPETIDO | Os frames da thread |
threads.frames.line | INT64 | O número da linha no arquivo do frame |
threads.frames.file | STRING | O nome do arquivo do frame |
threads.frames.symbol | STRING | O símbolo hidratado, ou bruto, 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.address | INT64 | O endereço na imagem binária que contém o código |
threads.frames.library | STRING | O nome de exibição da biblioteca que inclui o frame |
threads.frames.owner | STRING | DEVELOPER, VENDOR, RUNTIME, PLATFORM ou SYSTEM |
threads.frames.blamed | BOOLEAN | Se a análise do Crashlytics determinou que esse frame é a causa do erro |
unity_metadata.unity_version | STRING | A versão do Unity em execução no dispositivo |
unity_metadata.debug_build | BOOLEAN | Se esse for um build de depuração |
unity_metadata.processor_type | STRING | O tipo de processador |
unity_metadata.processor_count | INT64 | O número de processadores (núcleos) |
unity_metadata.processor_frequency_mhz | INT64 | A frequência dos processadores em MHz |
unity_metadata.system_memory_size_mb | INT64 | O tamanho da memória do sistema em MBs |
unity_metadata.graphics_memory_size_mb | INT64 | A memória gráfica em MBs |
unity_metadata.graphics_device_id | INT64 | O identificador do dispositivo gráfico |
unity_metadata.graphics_device_vendor_id | INT64 | O identificador do fornecedor do processador gráfico |
unity_metadata.graphics_device_name | STRING | O nome do dispositivo gráfico |
unity_metadata.graphics_device_vendor | STRING | O fornecedor do dispositivo gráfico |
unity_metadata.graphics_device_version | STRING | A versão do dispositivo gráfico |
unity_metadata.graphics_device_type | STRING | O tipo de dispositivo gráfico |
unity_metadata.graphics_shader_level | INT64 | O nível de sombreador dos gráficos |
unity_metadata.graphics_render_target_count | INT64 | O número de destinos de renderização gráfica |
unity_metadata.graphics_copy_texture_support | STRING | Suporte à cópia de texturas gráficas, conforme definido na API Unity (em inglês) |
unity_metadata.graphics_max_texture_size | INT64 | O tamanho máximo dedicado à renderização da textura |
unity_metadata.screen_size_px | STRING | O tamanho da tela em pixels, formatado como largura x altura |
unity_metadata.screen_resolution_dpi | STRING | O DPI da tela como um número de ponto flutuante |
unity_metadata.screen_refresh_rate_hz | INT64 | Taxa de atualização da tela em Hz |
Visualizar com o Data Studio os dados exportados do Crashlytics
Com o Google Data Studio, você transforma os conjuntos de dados do Crashlytics no BigQuery em relatórios totalmente personalizáveis, fáceis de ler e de compartilhar.
Para saber mais sobre como usar o Data Studio, leia o Guia de início rápido.
Como usar um modelo de relatório do Crashlytics
No Data Studio, há um relatório de amostra do Crashlytics que inclui um conjunto abrangente de dimensões e métricas do esquema exportado do Crashlytics para o BigQuery. Se você ativou a exportação de streaming do Crashlytics para o BigQuery, poderá visualizar esses dados na página Tendências em tempo real do modelo do Data Studio. É possível usar a amostra como modelo para criar rapidamente novos relatórios e visualizações com base nos dados brutos de falhas do próprio app:
- Abra o modelo do Painel do Data Studio do Crashlytics.
- 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.
- Para selecionar uma tabela com os dados do Crashlytics exportados, escolha Meus projetos > [nome-do-projeto] > firebase_crashlytics > [nome-da-tabela]. Sua tabela em lote está sempre disponível para seleção. Se a exportação de streaming do Crashlytics para o BigQuery estiver ativada, será possível selecionar sua tabela em tempo real.
- Em Configuração, defina o Nível do modelo Crashlytics como Padrão.
- Clique em Conectar para criar a nova origem de dados.
- Clique em Adicionar ao relatório para retornar ao modelo do Crashlytics.
- Para concluir, clique em Criar relatório e crie uma cópia do modelo do Painel do Data Studio do Crashlytics.