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 de seus dados de seu projeto Firebase para o BigQuery.
- Por padrão, todos os aplicativos em seu projeto são vinculados ao BigQuery e todos os aplicativos adicionados posteriormente ao projeto são vinculados automaticamente 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 de lote contendo os dados da sincronização diária.
- Se você ativar a exportação de streaming do BigQuery do Crashlytics, todos os aplicativos vinculados também terão uma tabela em tempo real contendo dados atualizados constantemente.
Para desativar a exportação do BigQuery, 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 aplicativo em 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 BigQuery do Crashlytics, 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 ao vivo, como apresentar informações em um painel ao vivo, 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 BigQuery do Crashlytics não está disponível para o sandbox do BigQuery.
Ao habilitar a exportação de streaming do BigQuery do Crashlytics, além da tabela de 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 batch é ideal para análise de longo prazo e identificação de tendências ao longo do tempo porque armazenamos eventos de forma durável antes de escrevê-los, e eles podem ser preenchidos na tabela por até 90 dias. Quando gravamos dados em sua tabela em tempo real, imediatamente os gravamos no BigQuery, o que a torna ideal para painéis dinâmicos e alertas personalizados. Essas duas tabelas podem ser combinadas com uma consulta de junção para obter os benefícios de ambas. Consulte o Exemplo de consulta 9 abaixo.
Por padrão, a tabela em tempo real tem um tempo de expiração 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 habilitar dados em tempo real em seu modelo do Data Studio, siga as instruções em Como visualizar dados exportados do Crashlytics com o Data Studio .
Visualizações
Você pode transformar as consultas de exemplo abaixo em visualizações usando a IU do BigQuery. Consulte Criando exibiçõ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, além de outros dados.
Trabalhar com dados do Firebase Crashlytics no BigQuery
Os exemplos a seguir demonstram as 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 travamento em resumos mais fáceis de entender.
Exemplo 1: Falhas durante o dia
Depois de trabalhar para corrigir o máximo de bugs possível, uma desenvolvedora líder acha 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 difundidas 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: os 10 principais dispositivos com falhas
O outono é a nova temporada de telefones! Um desenvolvedor sabe que isso também significa que é a nova temporada de problemas específicos do dispositivo. Para se antecipar às preocupações de compatibilidade iminentes, eles montaram uma consulta que identifica os 10 dispositivos que sofreram mais falhas 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 quer saber qual nível de seu 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.
Objective-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 do 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 travamento 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 determinado problema 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 agora gostaria 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 seu aplicativo para passar um ID de usuário para o SDK do Google Analytics e o SDK do Crashlytics.
Objective-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 unir eventos no conjunto de dados Google Analytics BigQuery com falhas no conjunto de dados 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: 5 principais problemas até agora hoje
Requer a ativação da exportação de streaming do BigQuery do Crashlytics
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: 5 principais problemas desde DATE, incluindo hoje
Requer a ativação da exportação de streaming do Crashlytics BigQuery.
Neste exemplo, combinamos tabelas de lote e tempo real para adicionar informações em tempo real aos dados de lote confiáveis. Como event_id
é uma chave primária, podemos usar DISTINCT event_id
para deduplicar 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 do vínculo, com a opção de preenchimento de até noventa dias.
A partir desse ponto, até você desativar o link, o Firebase exporta eventos do Crashlytics diariamente. Pode levar alguns minutos para que os dados fiquem 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 cobre todo o seu projeto, mesmo que tenha vários aplicativos.
Tabelas
O Firebase Crashlytics cria uma tabela no conjunto de dados para cada aplicativo em seu projeto, a menos que você tenha optado por não exportar dados para esse 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 denominada com_google_test_ANDROID
e os dados em tempo real (se ativados) estariam em uma tabela denominada 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 em uma tabela são idênticas para falhas, erros não fatais e ANRs. Se a exportação de streaming do BigQuery do Crashlytics estiver ativada, a tabela em tempo real terá as mesmas colunas da tabela em lote. As colunas dentro da exportação estão listadas abaixo.
Sem rastreamentos de pilha
Colunas presentes em linhas que representam eventos sem rastreamentos de pilha.
Nome do campo | Tipo de dados | Descrição |
---|---|---|
plataforma | CORDA | Aplicativos Apple ou Android |
bundle_identifier | CORDA | O ID do pacote, por exemplo, com.google.gmail |
event_id | CORDA | Um ID exclusivo para o evento |
é_fatal | BOLEANO | Se o aplicativo travou |
error_type | CORDA | Tipo de erro do evento (FATAL, NON_FATAL, ANR) |
id_do problema | CORDA | Um problema associado ao evento |
event_timestamp | TIMESTAMP | Quando o evento ocorreu |
dispositivo | REGISTRO | O dispositivo em que o evento ocorreu |
dispositivo.fabricante | 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 estado da memória do dispositivo |
memória.usada | INT64 | Bytes de memória usados |
memory.free | INT65 | Bytes de memória restantes |
armazenar | REGISTRO | O armazenamento persistente do dispositivo |
armazenamento.usado | INT64 | Bytes de armazenamento usados |
armazenamento.grátis | INT64 | Bytes de armazenamento restantes |
sistema operacional | REGISTRO | Detalhes do sistema operacional do dispositivo |
operating_system.display_version | CORDA | A versão do sistema operacional |
operating_system.name | CORDA | O nome do sistema operacional |
operating_system.modification_state | CORDA | MODIFICADO ou NÃO MODIFICADO, ou seja, se o dispositivo foi desbloqueado/enraizado |
operating_system.type | CORDA | O tipo de sistema operacional no dispositivo. Ex.: IOS, MACOS |
operating_system.device_type | CORDA | O tipo de dispositivo. Ex.: CELULAR, TABLET, TV |
aplicativo | REGISTRO | O aplicativo que gerou o evento |
application.build_version | CORDA | A versão de compilação do aplicativo |
application.display_version | CORDA | |
do utilizador | REGISTRO | Opcional: informações coletadas no usuário do aplicativo |
nome do usuário | CORDA | Opcional: o nome do usuário |
usuário.email | 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 |
custom_keys | 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 |
installation_uuid | CORDA | Um ID que identifica uma instalação exclusiva de aplicativo e dispositivo |
crashlytics_sdk_versions | CORDA | A versão do Crashlytics SDK que gerou o evento |
app_orientation | CORDA | RETRATO, PAISAGEM, FACE_UP ou FACE_DOWN |
device_orientation | CORDA | RETRATO, PAISAGEM, FACE_UP ou FACE_DOWN |
processo_estado | CORDA | FUNDO ou PRIMEIRO PLANO |
Histórico | REGISTRO REPETIDO | Mensagens de log com registro de data e hora geradas pelo logger do Crashlytics, se ativado |
logs.timestamp | TIMESTAMP | Quando o registro foi feito |
logs.message | CORDA | A mensagem registrada |
Migalhas de pão | REGISTRO REPETIDO | Breadcrumbs do Google Analytics com carimbo de data/hora, se ativado |
breadcrumbs.timestamp | TIMESTAMP | O carimbo de data/hora associado ao breadcrumb |
breadcrumbs.name | CORDA | O nome associado ao breadcrumb |
breadcrumbs.params | REGISTRO REPETIDO | Parâmetros associados ao breadcrumb |
breadcrumbs.params.key | CORDA | Uma chave de parâmetro associada à trilha de navegação |
breadcrumbs.params.value | CORDA | Um valor de parâmetro associado à trilha de navegação |
quadro de culpa | 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 |
arquivo_culpa_quadro.arquivo | CORDA | O nome do arquivo de quadro |
culpe_frame.symbol | CORDA | O símbolo hidratado, ou símbolo bruto se não for hidratável |
culpa_frame.offset | INT64 | O deslocamento de byte na imagem binária que contém o código, não definido para exceções Java |
culpa_frame.address | INT64 | O endereço na imagem binária que contém o código, não definido para quadros Java |
culpa_frame.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
culpado_frame.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
culpa_quadro.culpado | BOLEANO | Se a análise do Crashlytics determinou que este frame é a causa da falha ou erro |
exceções | REGISTRO REPETIDO | Somente Android: Exceções que ocorreram durante este evento. 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.aninhadas | BOLEANO | Verdadeiro para todos, exceto a última exceção lançada (ou seja, o primeiro registro) |
exceções.título | CORDA | O título do tópico |
exceções.legenda | 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.quadros | REGISTRO REPETIDO | Os quadros associados à exceção |
exceções.frames.line | INT64 | O número da linha do arquivo do quadro |
exceções.quadros.arquivo | CORDA | O nome do arquivo de quadro |
exceções.quadros.símbolo | CORDA | O símbolo hidratado, ou símbolo bruto se não for hidratável |
exceções.frames.offset | INT64 | O deslocamento de byte na imagem binária que contém o código, não definido para exceções Java |
exceções.quadros.endereço | INT64 | O endereço na imagem binária que contém o código, não definido para quadros Java |
exceções.frames.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
exceções.quadros.proprietário | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
exceções.quadros.culpados | BOLEANO | Se a análise do Crashlytics determinou que este frame é a causa da falha ou erro |
erro | REGISTRO REPETIDO | Somente aplicativos da Apple: erros não fatais |
error.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.legenda | CORDA | O subtítulo do tópico |
erro.culpado | BOLEANO | Se a análise do Crashlytics determinou que esse frame é 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.quadros.arquivo | CORDA | O nome do arquivo de quadro |
erro.quadros.símbolo | CORDA | 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 |
erro.quadros.endereço | INT64 | O endereço na imagem binária que contém o código |
error.frames.library | CORDA | O nome de exibição da biblioteca que inclui o quadro |
error.frames.owner | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
error.frames.blamed | BOLEANO | Se a análise do Crashlytics determinou que esse frame é a causa do erro |
tópicos | REGISTRO REPETIDO | Tópicos presentes na hora do evento |
tópicos.travados | BOLEANO | Se o tópico travou |
threads.thread_name | CORDA | o nome do fio |
threads.queue_name | CORDA | Somente aplicativos da 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 com falha |
threads.crash_address | INT64 | O endereço do sinal que causou a falha do aplicativo; presente apenas em threads nativos com falha |
threads.code | INT64 | Somente aplicativos da Apple: código de erro do NSError personalizado registrado do aplicativo |
tópicos.título | CORDA | O título do tópico |
tópicos.legenda | CORDA | O subtítulo do tópico |
tópicos.culpados | BOLEANO | Se a análise do Crashlytics determinou que este frame é a causa da falha ou erro |
threads.frames | REGISTRO REPETIDO | Os quadros do fio |
threads.frames.line | INT64 | O número da linha do arquivo do quadro |
threads.frames.file | CORDA | O nome do arquivo de quadro |
threads.frames.symbol | CORDA | O símbolo hidratado, ou símbolo 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 | CORDA | O nome de exibição da biblioteca que inclui o quadro |
threads.frames.owner | CORDA | DESENVOLVEDOR, FORNECEDOR, TEMPO DE EXECUÇÃO, PLATAFORMA ou SISTEMA |
threads.frames.blamed | BOLEANO | Se a análise do Crashlytics determinou que esse frame é a causa do erro |
Como visualizar 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, fáceis de 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, Welcome to Data Studio .
Usando um modelo de relatório do 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 BigQuery do Crashlytics. Se você ativou a exportação de streaming do BigQuery do Crashlytics, pode visualizar esses dados na página de tendências em tempo real do modelo do Data Studio. Você pode usar a amostra como um modelo para criar rapidamente novos relatórios e visualizações com base nos dados brutos de falha 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 BigQuery do Crashlytics 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.