本页介绍了 BigQuery 中导出的 Crashlytics 数据和 Firebase 会话数据的数据集架构。
Firebase 会在 BigQuery 中为导出的数据创建新数据集:
Firebase 会话数据集(如果已启用导出会话数据)
Crashlytics 个数据集
Crashlytics 数据会导出到名为 firebase_crashlytics 的 BigQuery 数据集。该数据集涵盖整个项目,即使该项目包含多个应用。
表
默认情况下,Firebase 会在 Crashlytics 数据集内为项目中每个已关联至 BigQuery 的应用分别创建单独的表。
这些表的命名基于应用的标识符(将句点转换为下划线),并在末尾附加应用平台(_IOS 或 _ANDROID)。例如,软件包名称为 com.google.test 的 Android 应用的数据将存储在名为 com_google_test_ANDROID 的表中。
如果启用了向 BigQuery 的流式导出,则数据也将实时流式传输到附加了
_REALTIME的表中(例如com_google_test_ANDROID_REALTIME)。表中的每一行均表示应用中发生的事件,包括崩溃、非严重错误和 ANR。
除了您在应用(iOS+ | Android | Flutter | Unity)中定义的任何自定义 Crashlytics 键之外,这些表还包含一组标准的 Crashlytics 数据。
行
表中的每一行都表示应用遇到的一个错误。
列
对于崩溃、非严重错误和 ANR,表中的列完全相同。
如果启用了 BigQuery 流式导出,则实时表中的列与批处理表中的列相同。
行中可能存在表示无堆栈轨迹的事件的列。
下表列出了导出的 Crashlytics 数据表中的字段:
| 字段名称 | 数据类型 | 说明 |
|---|---|---|
app_orientation |
STRING | 例如,PORTRAIT、LANDSCAPE、FACE_UP、FACE_DOWN 等。 |
application |
RECORD | 引发事件的应用 |
application.build_version |
STRING | 应用的版本号 |
application.display_version |
STRING | |
blame_frame |
RECORD | 被确定为崩溃或错误根本原因的帧 |
blame_frame.address |
INT64 | 包含代码的二进制图片中的地址 Java 帧未设置 |
blame_frame.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致崩溃或错误的原因 |
blame_frame.file |
STRING | 帧文件的名称 |
blame_frame.library |
STRING | 包含帧的库的显示名 |
blame_frame.line |
INT64 | 帧文件的行号 |
blame_frame.offset |
INT64 | 包含代码的二进制图片中的字节偏移量 Java 异常未设置 |
blame_frame.owner |
STRING | 例如 DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM |
blame_frame.symbol |
STRING | 水化合符号,或原始符号(如果无法水化合) |
breadcrumbs |
REPEATED RECORD | 带有时间戳的 Google Analytics 路径(如果已启用) |
breadcrumbs.name |
STRING | 与路径关联的名称 |
breadcrumbs.params |
REPEATED RECORD | 与路径关联的参数 |
breadcrumbs.params.key |
STRING | 与路径关联的参数键 |
breadcrumbs.params.value |
STRING | 与路径关联的参数值 |
breadcrumbs.timestamp |
TIMESTAMP | 与路径关联的时间戳 |
bundle_identifier |
STRING | 在 Firebase 项目中注册的应用的唯一标识符(例如 com.google.gmail对于 Apple 平台应用,这是应用的软件包 ID。 对于 Android 应用,这是应用的软件包名称。 |
crashlytics_sdk_versions |
STRING | 生成事件的 Crashlytics SDK 版本 |
custom_keys |
REPEATED RECORD | 开发者定义的键值对 |
custom_keys.key |
STRING | 开发者定义的密钥 |
custom_keys.value |
STRING | 开发者定义的值 |
device |
RECORD | 发生事件的设备 |
device_orientation |
STRING | 例如,PORTRAIT、LANDSCAPE、FACE_UP、FACE_DOWN 等。 |
device.architecture |
STRING | 例如 X86_32、X86_64、ARMV7、ARM64、ARMV7S 或 ARMV7K |
device.manufacturer |
STRING | 设备制造商 |
device.model |
STRING | 设备型号 |
error |
REPEATED RECORD | (仅限 Apple 应用)非严重错误 |
error_type |
STRING | 事件的错误类型(例如 FATAL、NON_FATAL、ANR 等) |
error.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致错误的原因 |
error.code |
INT64 | 与应用自定义记录的 NSError 关联的错误代码 |
error.frames |
REPEATED RECORD | 堆栈轨迹的帧 |
error.frames.address |
INT64 | 包含代码的二进制图片中的地址 |
error.frames.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致错误的原因 |
error.frames.file |
STRING | 帧文件的名称 |
error.frames.library |
STRING | 包含帧的库的显示名 |
error.frames.line |
INT64 | 帧文件的行号 |
error.frames.offset |
INT64 | 包含代码的二进制图片中的字节偏移量 |
error.frames.owner |
STRING | 例如 DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM |
error.frames.symbol |
STRING | 水化合符号,或原始符号(如果无法水化合) |
error.queue_name |
STRING | 线程正在运行的队列 |
error.subtitle |
STRING | 线程的副标题 |
error.title |
STRING | 线程的标题 |
event_id |
STRING | 事件的唯一 ID |
event_timestamp |
TIMESTAMP | 事件发生的时间 |
exceptions |
REPEATED RECORD | (仅适用于 Android)此事件期间发生的异常。嵌套异常以反向时间顺序呈现,这意味着最后一条记录是抛出的第一个异常 |
exceptions.blamed |
BOOLEAN | 如果 Crashlytics 确定异常导致错误或崩溃,则为 true |
exceptions.exception_message |
STRING | 与异常关联的消息 |
exceptions.frames |
REPEATED RECORD | 与异常关联的帧 |
exceptions.frames.address |
INT64 | 包含代码的二进制图片中的地址 Java 帧未设置 |
exceptions.frames.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致崩溃或错误的原因 |
exceptions.frames.file |
STRING | 帧文件的名称 |
exceptions.frames.library |
STRING | 包含帧的库的显示名 |
exceptions.frames.line |
INT64 | 帧文件的行号 |
exceptions.frames.offset |
INT64 | 包含代码的二进制图片中的字节偏移量 Java 异常未设置 |
exceptions.frames.owner |
STRING | 例如 DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM |
exceptions.frames.symbol |
STRING | 水化合符号,或原始符号(如果无法水化合) |
exceptions.nested |
BOOLEAN | 对于除最后抛出的异常(即第一条记录)之外的所有异常都为 true |
exceptions.subtitle |
STRING | 线程的副标题 |
exceptions.title |
STRING | 线程的标题 |
exceptions.type |
STRING | 异常类型(例如 java.lang.IllegalStateException) |
firebase_session_id |
STRING | 与来自 Crashlytics 的事件对应的 Firebase 会话的自动生成的 ID |
installation_uuid |
STRING | 标识唯一应用和设备安装的 ID |
is_fatal |
BOOLEAN | 应用是否崩溃 |
issue_id |
STRING | 与事件相关的问题 |
logs |
REPEATED RECORD | 由 Crashlytics 日志记录器生成的带时间戳的日志消息(如果已启用) |
logs.message |
STRING | 记录的消息 |
logs.timestamp |
TIMESTAMP | 日志创建时间 |
memory |
RECORD | 设备的内存状态 |
memory.free |
INT64 | 剩余的内存字节数 |
memory.used |
INT64 | 使用的内存字节数 |
operating_system |
RECORD | 设备上的操作系统的详细信息 |
operating_system.device_type |
STRING | 设备的类型(例如 MOBILE、TABLET、TV 等);也称为“设备类别” |
operating_system.display_version |
STRING | 设备上的操作系统的版本 |
operating_system.modification_state |
STRING | 设备是否已经过修改(例如,越狱应用为 MODIFIED,而已启用 root 权限的应用为 UNMODIFIED) |
operating_system.name |
STRING | 设备上的操作系统的名称 |
operating_system.type |
STRING | (仅限 Apple 应用)设备上运行的操作系统类型(例如 IOS、MACOS 等) |
platform |
STRING | 在 Firebase 项目中注册的应用平台(有效值:IOS 或 ANDROID) |
process_state |
STRING | BACKGROUND 或 FOREGROUND |
storage |
RECORD | 设备的永久性存储空间 |
storage.free |
INT64 | 剩余的存储空间字节数 |
storage.used |
INT64 | 使用的存储空间字节数 |
threads |
REPEATED RECORD | 事件发生时显示的线程 |
threads.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致崩溃或错误的原因 |
threads.code |
INT64 | (仅限 Apple 应用)应用的自定义记录 NSError 的错误代码 |
threads.crash_address |
INT64 | 导致应用崩溃的信号的地址;仅出现在崩溃的原生线程上 |
threads.crashed |
BOOLEAN | 线程是否崩溃 |
threads.frames |
REPEATED RECORD | 线程帧 |
threads.frames.address |
INT64 | 包含代码的二进制图片中的地址 |
threads.frames.blamed |
BOOLEAN | Crashlytics 是否已确定此帧是导致错误的原因 |
threads.frames.file |
STRING | 帧文件的名称 |
threads.frames.library |
STRING | 包含帧的库的显示名 |
threads.frames.line |
INT64 | 帧文件的行号 |
threads.frames.offset |
INT64 | 包含代码的二进制图片中的字节偏移量 |
threads.frames.owner |
STRING | 例如 DEVELOPER、VENDOR、RUNTIME、PLATFORM 或 SYSTEM |
threads.frames.symbol |
STRING | 水化合符号,或原始符号(如果无法水化合) |
threads.queue_name |
STRING | (仅限 Apple 应用)运行线程的队列 |
threads.signal_code |
STRING | 导致应用崩溃的信号的代码;仅出现在崩溃的原生线程上 |
threads.signal_name |
STRING | 导致应用崩溃的信号的名称,仅出现在崩溃的原生线程上 |
threads.subtitle |
STRING | 线程的副标题 |
threads.thread_name |
STRING | 线程的名称 |
threads.title |
STRING | 线程的标题 |
unity_metadata.debug_build |
BOOLEAN | 指示该 build 是否为调试 build |
unity_metadata.graphics_copy_texture_support |
STRING | 支持以 Unity API 中定义的方式复制图形纹理 |
unity_metadata.graphics_device_id |
INT64 | 图形设备的标识符 |
unity_metadata.graphics_device_name |
STRING | 图形设备的名称 |
unity_metadata.graphics_device_type |
STRING | 图形设备的类型 |
unity_metadata.graphics_device_vendor_id |
INT64 | 图形处理器供应商的标识符 |
unity_metadata.graphics_device_vendor |
STRING | 图形设备的供应商 |
unity_metadata.graphics_device_version |
STRING | 图形设备的版本 |
unity_metadata.graphics_max_texture_size |
INT64 | 纹理渲染专用大小上限 |
unity_metadata.graphics_memory_size_mb |
INT64 | 图形内存(以 MB 为单位) |
unity_metadata.graphics_render_target_count |
INT64 | 图形渲染目标的数量 |
unity_metadata.graphics_shader_level |
INT64 | 图形着色器级别 |
unity_metadata.processor_count |
INT64 | 处理器(内核)数量 |
unity_metadata.processor_frequency_mhz |
INT64 | 处理器的频率(以 MHz 为单位) |
unity_metadata.processor_type |
STRING | 处理器类型 |
unity_metadata.screen_refresh_rate_hz |
INT64 | 屏幕的刷新率(以 Hz 为单位) |
unity_metadata.screen_resolution_dpi |
STRING | 屏幕的 DPI(以浮点数表示) |
unity_metadata.screen_size_px |
STRING | 屏幕大小(以像素为单位),格式为“宽 x 高” |
unity_metadata.system_memory_size_mb |
INT64 | 系统内存的大小(以 Mb 为单位) |
unity_metadata.unity_version |
STRING | 此设备上运行的 Unity 版本 |
user |
RECORD | (可选)收集的应用用户信息 |
user.email |
STRING | (可选)用户的电子邮件地址 |
user.id |
STRING | (可选)与用户关联的特定应用的 ID |
user.name |
STRING | (可选)用户的姓名 |
variant_id |
STRING | 与此事件相关的问题变体 请注意,并非所有事件都有关联的问题变体。 |
Firebase 会话数据集
Firebase 会话数据会导出到名为 firebase_sessions 的 BigQuery 数据集。该数据集涵盖整个项目,即使该项目包含多个应用。
表
默认情况下,Firebase 会在 Firebase 会话数据集内为项目中每个已关联至 BigQuery 的应用分别创建单独的表。
这些表的命名基于应用的标识符(将句点转换为下划线),并在末尾附加应用平台(_IOS 或 _ANDROID)。例如,软件包名称为 com.google.test 的 Android 应用的数据将存储在名为 com_google_test_ANDROID 的表中。
行
表中的每一行都表示发生过的一个会话事件。
列
如果启用了 BigQuery 流式导出,则实时表中的列与批处理表中的列相同。
下表列出了导出的 Firebase 会话数据表中的列:
| 字段名称 | 数据类型 | 说明 |
|---|---|---|
instance_id |
STRING | 设备中的 Firebase 安装 ID (FID)。标识唯一应用 + 设备安装 |
session_id |
STRING | 相应会话的唯一 ID |
first_session_id |
STRING |
自应用冷启动以来,相应会话所属的一系列会话中的第一个 ID。可用于对自冷启动以来发生的所有会话进行分组。如果相应会话是首次会话,则此字段将与 session_id 相同。
|
session_index |
INTEGER |
相应会话在应用冷启动后按顺序排列的位置。对于冷启动后的第一个会话,此值为 0。每次生成会话时,如果未发生冷启动(例如,在不活动 30 分钟后),该指数都会递增。
|
event_type |
STRING |
会话中发生的事件的类型(例如 SESSION_START)
|
event_timestamp |
TIMESTAMP | 事件发生的时间 |
received_timestamp |
TIMESTAMP | 服务器从设备接收到事件的时间 |
performance_data_collection_enabled |
BOOLEAN | 会话期间是否启用了 Firebase Performance Monitoring SDK 数据收集功能 |
crashlytics_data_collection_enabled |
BOOLEAN | 会话期间是否启用了 Firebase Crashlytics SDK 数据收集功能 |
application |
RECORD | 描述应用 |
application.build_version |
STRING |
应用的版本号(例如 1523456)
|
application.display_version |
STRING |
应用的显示版本(例如 4.1.7)
|
device |
RECORD | 发生事件的设备 |
device.model |
STRING | 设备的型号 |
device.manufacturer |
STRING |
设备的制造商。对于 Apple 平台应用,此值将为 NULL。
|
operating_system |
RECORD | 描述设备的操作系统 |
operating_system.display_version |
STRING |
操作系统的显示版本(例如 10.2.1)
|
operating_system.name |
STRING | 操作系统的名称 |
operating_system.type |
STRING |
操作系统的类型(例如 IOS)。此字段仅针对 Apple 设备设置。
|
operating_system.device_type |
STRING |
设备的类型(例如 MOBILE、TABLET、TV)
|