Экспорт данных Firebase Crashlytics в BigQuery

Вы можете экспортировать данные Crashlytics в BigQuery для дальнейшего анализа. BigQuery позволяет анализировать данные с помощью BigQuery SQL, экспортировать их в другой облачный провайдер и использовать для визуализации и настраиваемых информационных панелей с помощью Google Data Studio.

Включить экспорт BigQuery

  1. Перейдите на страницу интеграции в консоли Firebase.
  2. В карточке BigQuery нажмите Ссылка .
  3. Следуйте инструкциям на экране, чтобы включить BigQuery.

Когда вы связываете свой проект с BigQuery:

  • Firebase настраивает ежедневную синхронизацию ваших данных из вашего проекта Firebase с BigQuery.
  • По умолчанию все приложения в вашем проекте связаны с BigQuery, а любые приложения, которые вы позже добавите в проект, будут автоматически связаны с BigQuery. Вы можете управлять тем, какие приложения отправляют данные .
  • Firebase экспортирует копию ваших существующих данных в BigQuery. Для каждого связанного приложения это включает пакетную таблицу, содержащую данные ежедневной синхронизации.
  • Если вы включите потоковый экспорт Crashlytics BigQuery, все связанные приложения также будут иметь таблицу в реальном времени , содержащую постоянно обновляемые данные.

Чтобы отключить экспорт BigQuery, отсоедините проект в консоли Firebase.

Какие данные экспортируются в BigQuery?

Данные Firebase Crashlytics экспортируются в набор данных BigQuery с именем firebase_crashlytics . По умолчанию в наборе данных Crashlytics будут созданы отдельные таблицы для каждого приложения в вашем проекте. Firebase называет таблицы на основе идентификатора пакета приложения с точками, преобразованными в символы подчеркивания, и названием платформы, добавленным в конце.

Например, данные для приложения с идентификатором com.google.test будут находиться в таблице с именем com_google_test_ANDROID . Эта пакетная таблица обновляется один раз в день. Если вы включите экспорт потоковой передачи Crashlytics BigQuery, данные Firebase Crashlytics также будут передаваться в режиме реального времени в com_google_test_ANDROID_REALTIME .

Каждая строка в таблице представляет событие, произошедшее в приложении, включая сбои, нефатальные ошибки и ошибки ANR.

Включить экспорт потоковой передачи Crashlytics BigQuery

Вы можете передавать свои данные Crashlytics в режиме реального времени с помощью BigQueryStreaming . Вы можете использовать его для любых целей, требующих оперативных данных, таких как представление информации на интерактивной информационной панели, просмотр развертывания в реальном времени или мониторинг проблем приложений, которые вызывают оповещения и настраиваемые рабочие процессы.

Экспорт потоковой передачи Crashlytics BigQuery недоступен для песочницы BigQuery.

Когда вы включаете потоковый экспорт Crashlytics BigQuery, в дополнение к пакетной таблице у вас будет таблица в реальном времени. Вот различия, о которых вы должны знать между таблицами:

Пакетная таблица Таблица реального времени
  • Данные экспортируются один раз в день
  • События надежно хранятся перед пакетной записью в BigQuery
  • Возможна обратная засыпка до 90 дней.
  • Данные экспортируются в режиме реального времени
  • Обратная засыпка недоступна

Пакетная таблица идеально подходит для долгосрочного анализа и выявления тенденций с течением времени, поскольку мы надежно сохраняем события перед их записью, и их можно заносить в таблицу на срок до 90 дней. Когда мы записываем данные в вашу таблицу в реальном времени, мы сразу же записываем их в BigQuery, поэтому они идеально подходят для интерактивных информационных панелей и настраиваемых оповещений. Эти две таблицы можно комбинировать с запросом на сшивку, чтобы получить преимущества обеих. См. пример запроса 9 ниже.

По умолчанию таблица реального времени имеет срок действия раздела 30 дней. Чтобы узнать, как это изменить, см. Обновление срока действия раздела .

Включить потоковую передачу Crashlytics BigQuery

Чтобы включить потоковую передачу, перейдите в раздел Crashlytics на странице интеграции BigQuery и установите флажок «Включить потоковую передачу» .

Шаблон студии данных

Чтобы включить данные в реальном времени в шаблоне Data Studio, следуйте инструкциям в разделе Визуализация экспортированных данных Crashlytics с помощью Data Studio .

Взгляды

Вы можете преобразовать приведенные ниже примеры запросов в представления с помощью пользовательского интерфейса BigQuery. Подробные инструкции см. в разделе Создание представлений .

Что можно сделать с экспортированными данными?

Экспорт BigQuery содержит необработанные данные о сбоях, включая тип устройства, операционную систему, исключения (приложения Android) или ошибки (приложения Apple), а также журналы Crashlytics, а также другие данные.

Работа с данными Firebase Crashlytics в BigQuery

В следующих примерах демонстрируются запросы, которые вы можете выполнять с данными Crashlytics. Эти запросы создают отчеты, недоступные на панели мониторинга Crashlytics.

Примеры запросов Crashlytics

В следующих примерах показано, как создавать отчеты, объединяющие данные о событиях сбоев в более понятные сводки.

Пример 1: Сбои по дням

Поработав над исправлением как можно большего количества ошибок, ведущий разработчик считает, что ее команда наконец-то готова запустить свое новое приложение для обмена фотографиями. Прежде чем они это сделают, они хотят проверить количество сбоев в день за последний месяц, чтобы убедиться, что их сообщения об ошибках сделали приложение более стабильным с течением времени:

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;

Пример 2. Найдите наиболее распространенные сбои

Чтобы правильно расставить приоритеты в производственных планах, руководитель проекта обдумывает, как выделить 10 самых распространенных сбоев в своем продукте. Они создают запрос, который предоставляет соответствующие точки данных:

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;

Пример 3: 10 наиболее часто вызывающих сбои устройств

Осень — новый сезон телефонов! Разработчик знает, что это также означает, что наступил сезон проблем, связанных с конкретными устройствами. Чтобы опередить надвигающиеся проблемы совместимости, они составили запрос, который идентифицирует 10 устройств, которые испытали наибольшее количество сбоев за последнюю неделю:

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;

Пример 4. Фильтрация по пользовательскому ключу

Разработчик игры хочет знать, на каком уровне его игры происходит больше всего сбоев. Чтобы помочь им отслеживать эту статистику, они устанавливают собственный ключ Crashlytics current_level и обновляют его каждый раз, когда пользователь достигает нового уровня.

Цель-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Быстрый

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Джава

Crashlytics.setInt("current_level", 3);

Используя этот ключ в своем экспорте BigQuery, они затем пишут запрос, чтобы сообщить о распределении значений current_level , связанных с каждым событием сбоя:

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

Пример 5: Извлечение идентификатора пользователя

У разработчика есть приложение в раннем доступе. Большинству их пользователей это нравится, но трое столкнулись с необычным количеством сбоев. Чтобы добраться до сути проблемы, они пишут запрос, который извлекает все события сбоев для этих пользователей, используя их идентификаторы пользователей:

SELECT *
FROM
  `projectId.firebase_crashlytics.package_name_ANDROID`
WHERE
  user.id IN ("userid1", "userid2", "userid3")
ORDER BY
  user.id
 

Пример 6. Поиск всех пользователей, столкнувшихся с определенной проблемой сбоя

Разработчик сообщил о критической ошибке группе бета-тестеров. Команда смогла использовать запрос из примера 2 выше, чтобы определить идентификатор конкретной проблемы сбоя. Теперь они хотели бы выполнить запрос для извлечения списка пользователей приложения, на которых повлиял этот сбой:

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;

Пример 7. Количество пользователей, затронутых сбоем, с разбивкой по странам

Теперь команда обнаружила критическую ошибку во время развертывания нового релиза. Они смогли использовать запрос из примера 2 выше, чтобы определить идентификатор конкретной проблемы сбоя. Теперь команда хотела бы узнать, распространился ли этот сбой на пользователей в разных странах мира.

Чтобы написать этот запрос, команде потребуется:

  1. Включите экспорт BigQuery для Google Analytics. См. раздел Экспорт данных проекта в BigQuery .

  2. Обновите их приложение, чтобы передать идентификатор пользователя как в SDK Google Analytics, так и в SDK Crashlytics.

    Цель-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Быстрый
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Джава
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. Напишите запрос, который использует поле идентификатора пользователя для объединения событий в наборе данных Google Analytics BigQuery со сбоями в наборе данных 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
    

Пример 8: Топ-5 проблем на сегодняшний день

Требуется включить потоковый экспорт 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;

Пример 9. Пять основных проблем с DATE, включая сегодняшний день

Требуется включить потоковый экспорт Crashlytics BigQuery.

В этом примере мы объединяем пакетные таблицы и таблицы реального времени, чтобы добавить информацию в реальном времени к надежным пакетным данным. Поскольку event_id является первичным ключом, мы можем использовать DISTINCT event_id для дедупликации любых общих событий из двух таблиц.

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;

Понимание схемы Firebase Crashlytics в BigQuery

Когда вы связываете Crashlytics с BigQuery, Firebase экспортирует последние события (сбои, нефатальные ошибки и ANR), в том числе события, произошедшие за два дня до связывания, с возможностью обратного заполнения до девяноста дней.

С этого момента, пока вы не отключите ссылку, Firebase ежедневно экспортирует события Crashlytics. Доступность данных в BigQuery после каждого экспорта может занять несколько минут.

Наборы данных

Firebase Crashlytics создает новый набор данных в BigQuery для данных Crashlytics. Набор данных охватывает весь ваш проект, даже если в нем несколько приложений.

Столы

Firebase Crashlytics создает таблицу в наборе данных для каждого приложения в вашем проекте, если только вы не отключили экспорт данных для этого приложения. Firebase называет таблицы на основе идентификатора пакета приложения с точками, преобразованными в символы подчеркивания, и названием платформы, добавленным в конце.

Например, данные для приложения Android с идентификатором com.google.test будут находиться в таблице с именем com_google_test_ANDROID , а данные в реальном времени (если они включены) будут в таблице с именем com_google_test_ANDROID_REALTIME .

Таблицы содержат стандартный набор данных Crashlytics в дополнение к любым пользовательским ключам Crashlytics, определенным разработчиками.

Ряды

Каждая строка в таблице представляет ошибку, с которой столкнулось приложение.

Столбцы

Столбцы в таблице идентичны для сбоев, нефатальных ошибок и ошибок ANR. Если экспорт потоковой передачи Crashlytics BigQuery включен, в таблице реального времени будут те же столбцы, что и в пакетной таблице. Столбцы в экспорте перечислены ниже.

Без трассировки стека

Столбцы присутствуют в строках, которые представляют события без трассировки стека.

Имя поля Тип данных Описание
Платформа НИТЬ Приложения Apple или Android
bundle_identifier НИТЬ Идентификатор пакета, например com.google.gmail
event_id НИТЬ Уникальный идентификатор события
is_fatal логическое значение Сбой приложения
тип_ошибки НИТЬ Тип ошибки события (FATAL, NON_FATAL, ANR)
issue_id НИТЬ Проблема, связанная с событием
вариант_идентификатор НИТЬ Вариант задачи, связанный с этим событием
Обратите внимание, что не все события имеют связанный вариант задачи.
event_timestamp TIMESTAMP Когда произошло событие
устройство ЗАПИСЫВАТЬ Устройство, на котором произошло событие
устройство.производитель НИТЬ Производитель устройства
устройство.модель НИТЬ Модель устройства
устройство.архитектура НИТЬ X86_32, X86_64, ARMV7, ARM64, ARMV7S или ARMV7K
Память ЗАПИСЫВАТЬ Состояние памяти устройства
память.используется INT64 Байты используемой памяти
память.бесплатно INT65 Осталось байт памяти
хранилище ЗАПИСЫВАТЬ Постоянное хранилище устройства
хранилище.используется INT64 Байты используемого хранилища
хранение.бесплатно INT64 Осталось байт памяти
Операционная система ЗАПИСЫВАТЬ Подробная информация об ОС на устройстве
операционная_система.display_version НИТЬ Версия ОС на устройстве
имя_операционной_системы.имя НИТЬ Название ОС на устройстве
Operating_system.modification_state НИТЬ Было ли устройство модифицировано, например взломано/рутировано (МОДИФИЦИРОВАНО или НЕМОДИФИЦИРОВАНО)
операционная_система.тип НИТЬ Тип ОС, работающей на устройстве (например, IOS, MACOS); доступно только для приложений платформ Apple
Operating_system.device_type НИТЬ Тип устройства (например, МОБИЛЬНЫЙ, ПЛАНШЕТ, ТВ и т. д.); также известная как "категория устройства"
приложение ЗАПИСЫВАТЬ Приложение, сгенерировавшее событие
application.build_version НИТЬ Версия сборки приложения
application.display_version НИТЬ
пользователь ЗАПИСЫВАТЬ Необязательно: информация, собранная о пользователе приложения.
имя пользователя НИТЬ Необязательно: имя пользователя
user.email НИТЬ Необязательно: адрес электронной почты пользователя.
ID пользователя НИТЬ Необязательно: идентификатор приложения, связанный с пользователем.
custom_keys ПОВТОРНАЯ ЗАПИСЬ Определенные разработчиком пары "ключ-значение"
custom_keys.key НИТЬ Ключ, определенный разработчиком
custom_keys.value НИТЬ Значение, определенное разработчиком
install_uuid НИТЬ Идентификатор, который идентифицирует уникальную установку приложения и устройства.
crashlytics_sdk_versions НИТЬ Версия Crashlytics SDK, сгенерировавшая событие
приложение_ориентация НИТЬ ПОРТРЕТ, ЛАНДШАФТ, ЛИЦО_ВВЕРХ или ЛИЦО_ВНИЗ
ориентация_устройства НИТЬ ПОРТРЕТ, ЛАНДШАФТ, ЛИЦО_ВВЕРХ или ЛИЦО_ВНИЗ
процесс_состояние НИТЬ ФОН или ПЕРЕДНИЙ ПЛАН
журналы ПОВТОРНАЯ ЗАПИСЬ Сообщения журнала с метками времени, созданные регистратором Crashlytics, если он включен
logs.timestamp TIMESTAMP Когда журнал был сделан
logs.message НИТЬ Зарегистрированное сообщение
панировочные сухари ПОВТОРНАЯ ЗАПИСЬ Хлебные крошки Google Analytics с временными метками, если они включены
хлебные крошки. временная метка TIMESTAMP Временная метка, связанная с хлебной крошкой
хлебные крошки.название НИТЬ Имя, связанное с панировочными сухарями
хлебные крошки.params ПОВТОРНАЯ ЗАПИСЬ Параметры, связанные с навигационной цепочкой
хлебные крошки.params.key НИТЬ Ключ параметра, связанный с навигационной цепочкой
хлебные крошки.params.value НИТЬ Значение параметра, связанное с навигационной цепочкой
виноват_кадр ЗАПИСЫВАТЬ Фрейм, идентифицированный как основная причина сбоя или ошибки
виноват_frame.line INT64 Номер строки файла кадра
вину_frame.file НИТЬ Имя файла кадра
виноват_frame.symbol НИТЬ Символ гидратации или необработанный символ, если он не гидратируется.
виноват_frame.offset INT64 Байтовое смещение в двоичном изображении, которое содержит код, не установленный для исключений Java.
виноват_кадр.адрес INT64 Адрес в бинарном образе, который содержит код, не заданный для фреймов Java
виноват_frame.library НИТЬ Отображаемое имя библиотеки, включающей кадр
виноват_frame.owner НИТЬ РАЗРАБОТЧИК, ПОСТАВЩИК, СРЕДА ВЫПОЛНЕНИЯ, ПЛАТФОРМА ИЛИ СИСТЕМА
виноват_frame.blamed логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной сбоя или ошибки
исключения ПОВТОРНАЯ ЗАПИСЬ Только для Android: исключения, возникшие во время этого события. Вложенные исключения представлены в обратном хронологическом порядке (читай: последняя запись — первое исключение).
исключения.тип НИТЬ Тип исключения, например java.lang.IllegalStateException
исключения.exception_message НИТЬ Сообщение, связанное с исключением
исключения.вложенные логическое значение Истинно для всех, кроме последнего выброшенного исключения (т. е. первой записи)
исключения.название НИТЬ Название темы
исключения.subtitle НИТЬ Подзаголовок темы
исключения.обвиняемый логическое значение Истинно, если Crashlytics определяет, что причиной ошибки или сбоя является исключение.
исключения.кадры ПОВТОРНАЯ ЗАПИСЬ Кадры, связанные с исключением
исключения.frames.line INT64 Номер строки файла кадра
исключения.frames.file НИТЬ Имя файла кадра
исключения.кадры.символ НИТЬ Символ гидратации или необработанный символ, если он не гидратируется.
исключения.frames.offset INT64 Байтовое смещение в двоичном изображении, которое содержит код, не установленный для исключений Java.
исключения.кадры.адрес INT64 Адрес в бинарном образе, который содержит код, не заданный для фреймов Java
исключения.frames.library НИТЬ Отображаемое имя библиотеки, включающей кадр
исключения.frames.owner НИТЬ РАЗРАБОТЧИК, ПОСТАВЩИК, СРЕДА ВЫПОЛНЕНИЯ, ПЛАТФОРМА ИЛИ СИСТЕМА
исключения.кадры.обвиняемые логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной сбоя или ошибки
ошибка ПОВТОРНАЯ ЗАПИСЬ Только приложения Apple: некритические ошибки
error.queue_name НИТЬ Очередь, в которой выполнялся поток
код ошибки INT64 Код ошибки, связанный с пользовательской регистрацией NSError приложения
ошибка.название НИТЬ Название темы
ошибка.подзаголовок НИТЬ Подзаголовок темы
ошибка.обвинение логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной ошибки
ошибки.кадры ПОВТОРНАЯ ЗАПИСЬ Кадры трассировки стека
ошибка.frames.line INT64 Номер строки файла кадра
ошибка.frames.file НИТЬ Имя файла кадра
error.frames.symbol НИТЬ Символ гидратации или необработанный символ, если он не гидратируется.
ошибка.frames.offset INT64 Байтовое смещение в двоичном изображении, содержащем код
ошибка.кадры.адрес INT64 Адрес в бинарном образе, который содержит код
error.frames.library НИТЬ Отображаемое имя библиотеки, включающей кадр
error.frames.owner НИТЬ РАЗРАБОТЧИК, ПОСТАВЩИК, СРЕДА ВЫПОЛНЕНИЯ, ПЛАТФОРМА ИЛИ СИСТЕМА
error.frames.blamed логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной ошибки
потоки ПОВТОРНАЯ ЗАПИСЬ Темы, присутствующие на момент события
threads.crashed логическое значение Разбился ли поток
threads.thread_name НИТЬ Название потока
threads.queue_name НИТЬ Только приложения Apple: очередь, в которой выполнялся поток
threads.signal_name НИТЬ Имя сигнала, вызвавшего сбой приложения, присутствует только в сбойных собственных потоках.
threads.signal_code НИТЬ Код сигнала, вызвавшего сбой приложения; присутствует только в разбитых собственных потоках
threads.crash_address INT64 Адрес сигнала, вызвавшего сбой приложения; присутствует только в разбитых собственных потоках
threads.code INT64 Только приложения Apple: код ошибки пользовательского журнала NSError приложения.
темы.название НИТЬ Название темы
threads.subtitle НИТЬ Подзаголовок темы
threads.blamed логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной сбоя или ошибки
потоки.кадры ПОВТОРНАЯ ЗАПИСЬ Рамки из нити
threads.frames.line INT64 Номер строки файла кадра
threads.frames.file НИТЬ Имя файла кадра
threads.frames.symbol НИТЬ Гидратированный символ или необработанный символ, если он не поддается увлажнению.
threads.frames.offset INT64 Байтовое смещение в двоичном изображении, содержащем код
threads.frames.address INT64 Адрес в бинарном образе, который содержит код
threads.frames.library НИТЬ Отображаемое имя библиотеки, включающей кадр
threads.frames.owner НИТЬ РАЗРАБОТЧИК, ПОСТАВЩИК, СРЕДА ВЫПОЛНЕНИЯ, ПЛАТФОРМА ИЛИ СИСТЕМА
threads.frames.blamed логическое значение Определен ли анализ Crashlytics, что этот кадр является причиной ошибки
unity_metadata.unity_version НИТЬ Версия Unity, работающая на этом устройстве.
unity_metadata.debug_build логическое значение Если это отладочная сборка
unity_metadata.processor_type НИТЬ Тип процессора
unity_metadata.processor_count INT64 Количество процессоров (ядер)
unity_metadata.processor_frequency_mhz INT64 Частота процессора(ов) в МГц
unity_metadata.system_memory_size_mb INT64 Размер системной памяти в Mb
unity_metadata.graphics_memory_size_mb INT64 Графическая память в МБ
unity_metadata.graphics_device_id INT64 Идентификатор графического устройства
unity_metadata.graphics_device_vendor_id INT64 Идентификатор производителя графического процессора
unity_metadata.graphics_device_name НИТЬ Имя графического устройства
unity_metadata.graphics_device_vendor НИТЬ Производитель графического устройства
unity_metadata.graphics_device_version НИТЬ Версия графического устройства
unity_metadata.graphics_device_type НИТЬ Тип графического устройства
unity_metadata.graphics_shader_level INT64 Уровень шейдера графики
unity_metadata.graphics_render_target_count INT64 Количество целей графического рендеринга
unity_metadata.graphics_copy_texture_support НИТЬ Поддержка копирования графической текстуры, как определено в Unity API.
unity_metadata.graphics_max_texture_size INT64 Максимальный размер, предназначенный для рендеринга текстуры
unity_metadata.screen_size_px НИТЬ Размер экрана в пикселях в формате ширина x высота
unity_metadata.screen_resolution_dpi НИТЬ DPI экрана как число с плавающей запятой
unity_metadata.screen_refresh_rate_hz INT64 Частота обновления экрана в Гц

Визуализация экспортированных данных Crashlytics с помощью Data Studio

Google Data Studio превращает ваши наборы данных Crashlytics в BigQuery в отчеты, которые легко читать, ими легко делиться и которые полностью настраиваются.

Чтобы узнать больше об использовании Студии данных, ознакомьтесь с кратким руководством по началу работы с Студией данных Добро пожаловать в Студию данных .

Использование шаблона отчета Crashlytics

В Data Studio есть образец отчета для Crashlytics, который включает полный набор параметров и показателей из экспортированной схемы Crashlytics BigQuery. Если вы включили экспорт потоковой передачи Crashlytics BigQuery, вы можете просматривать эти данные на странице трендов в реальном времени шаблона Data Studio. Вы можете использовать образец в качестве шаблона для быстрого создания новых отчетов и визуализаций на основе необработанных данных о сбоях вашего собственного приложения:

  1. Откройте шаблон информационной панели Crashlytics Data Studio .
  2. Нажмите «Использовать шаблон» в правом верхнем углу.
  3. В раскрывающемся списке «Новый источник данных» выберите «Создать новый источник данных» .
  4. Нажмите Выбрать на карточке BigQuery .
  5. Выберите таблицу, содержащую экспортированные данные Crashlytics, выбрав «Мои проекты» > [имя-вашего-проекта] > firebase_crashlytics > [имя-вашей-таблицы] . Ваша пакетная таблица всегда доступна для выбора; если экспорт потоковой передачи Crashlytics BigQuery включен, вместо этого вы можете выбрать свою таблицу в реальном времени.
  6. В разделе «Конфигурация» установите для уровня шаблона Crashlytics значение «По умолчанию» .
  7. Щелкните Подключить , чтобы создать новый источник данных.
  8. Нажмите «Добавить в отчет» , чтобы вернуться к шаблону Crashlytics.
  9. Наконец, нажмите «Создать отчет» , чтобы создать копию шаблона панели мониторинга Crashlytics Data Studio.