Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Exportar dados do Firebase Crashlytics para o BigQuery

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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

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

  2. 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");
    
  3. 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
inscrição 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 de 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:

  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 BigQuery do Crashlytics 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.