ส่งออกข้อมูล 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 Export ยกเลิกการลิงก์โปรเจ็กต์ ในคอนโซล Firebase

ข้อมูลที่ส่งออกไปยัง BigQuery

ข้อมูล Firebase Crashlytics จะส่งออกไปยังชุดข้อมูล BigQuery ที่ชื่อ firebase_crashlytics. โดยค่าเริ่มต้น ระบบจะสร้างแต่ละตารางไว้ภายใน ชุดข้อมูล Crashlytics สำหรับแต่ละแอปในโปรเจ็กต์ Firebase ตั้งชื่อ ตารางตามตัวระบุ Bundle ของแอป โดยมีการแปลงเครื่องหมายจุดเป็น ขีดล่าง และชื่อแพลตฟอร์มต่อท้าย

ตัวอย่างเช่น ข้อมูลสำหรับแอปที่มีรหัส 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
  • สามารถทดแทนข้อมูลได้ ล่วงหน้าไม่เกิน 30 วัน
  • ส่งออกข้อมูลแบบเรียลไทม์แล้ว
  • ไม่มีโฆษณาทดแทน

ตารางแบบกลุ่มเหมาะสำหรับการวิเคราะห์ระยะยาวและระบุแนวโน้มเมื่อเวลาผ่านไป เพราะเราเก็บเหตุการณ์ไว้อย่างคงทนก่อนที่จะเขียน และนำไปทดแทน ในตารางเป็นเวลาสูงสุด 30 วัน เมื่อเราเขียนข้อมูลลงในตารางแบบเรียลไทม์ เราจะ เขียนลงใน BigQuery ทันที จึงเหมาะสำหรับแดชบอร์ดสดและ การแจ้งเตือนที่กำหนดเอง ตาราง 2 ตารางนี้สามารถใช้ร่วมกับการค้นหาการต่อภาพเพื่อดู ของทั้ง 2 อย่าง ดูคำค้นหาตัวอย่างที่ 9 ด้านล่าง

โดยค่าเริ่มต้น ตารางแบบเรียลไทม์จะมีเวลาหมดอายุของพาร์ติชันอยู่ที่ 30 วัน ถึง ดูวิธีแก้ไขได้ที่ การอัปเดตการหมดอายุของพาร์ติชัน

เปิดใช้สตรีมมิง Crashlytics BigQuery

หากต้องการเปิดใช้สตรีมมิง ให้ไปที่ส่วน Crashlytics ของ BigQuery การผสานรวม แล้วเลือกช่องทำเครื่องหมายรวมสตรีมมิง

เทมเพลต Data Studio

หากต้องการเปิดใช้ข้อมูลแบบเรียลไทม์ในเทมเพลต Data Studio ให้ทําตาม วิธีการในการแสดงภาพข้อมูล Crashlytics ที่ส่งออกด้วย Data Studio

ยอดดู

คุณสามารถเปลี่ยนการค้นหาตัวอย่างด้านล่างให้เป็นมุมมองได้โดยใช้ BigQuery UI โปรดดู การสร้างข้อมูลพร็อพเพอร์ตี้

คุณใช้ข้อมูลที่ส่งออกทำอะไรได้บ้าง

การส่งออก BigQuery มีข้อมูลดิบเกี่ยวกับข้อขัดข้อง รวมถึงประเภทอุปกรณ์ ระบบปฏิบัติการ ข้อยกเว้น (แอป Android) หรือข้อผิดพลาด (แอปของ Apple) และบันทึก Crashlytics รวมถึง กับข้อมูลอื่นๆ

การทำงานกับข้อมูล Firebase Crashlytics ใน BigQuery

ตัวอย่างต่อไปนี้แสดงคำค้นหาที่คุณเรียกใช้กับข้อมูล Crashlytics ได้ การค้นหาเหล่านี้จะสร้างรายงานที่ไม่มีใน Crashlytics หน้าแดชบอร์ด

ตัวอย่างการค้นหา Crashlytics

ตัวอย่างต่อไปนี้แสดงวิธีสร้างรายงานที่รวบรวมข้อมูลข้อขัดข้อง ข้อมูลเหตุการณ์ให้เป็นสรุปที่เข้าใจได้ง่ายขึ้น

ตัวอย่างที่ 1: ข้อขัดข้องในแต่ละวัน

หลังจากพยายามแก้ไขข้อบกพร่องให้ได้มากที่สุด หัวหน้านักพัฒนาคิดว่าทีมของเธอ ก็พร้อมเปิดตัวแอปแชร์รูปภาพตัวใหม่ แต่ก่อนที่จะทำเช่นนั้น พวกเขา เพื่อตรวจสอบจำนวนการขัดข้องต่อวันในเดือนที่ผ่านมา เพื่อให้มั่นใจว่า Bug-bash ทำให้แอปมีความเสถียรมากขึ้นเมื่อเวลาผ่านไป:

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 และอัปเดตค่านี้ทุกครั้งที่ผู้ใช้อยู่ในระดับใหม่

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Swift

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

Java

Crashlytics.setInt("current_level", 3);

เมื่อใช้คีย์ดังกล่าวใน BigQuery Export ทีมจะเขียนคำค้นหาเพื่อรายงาน การกระจายของค่า 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: การดึงข้อมูล User ID

นักพัฒนาแอปมีแอปในเวอร์ชันทดลองใช้ก่อนเปิดตัว ผู้ใช้ส่วนใหญ่ชอบแอปแบบนั้น แต่แค่ 3 คน พบการขัดข้องหลายครั้งผิดปกติ หากต้องการไปที่ด้านล่างสุดของ จึงเขียนการค้นหาที่ดึงเหตุการณ์ข้อขัดข้องทั้งหมดสำหรับผู้ใช้เหล่านั้น โดยใช้รหัสผู้ใช้

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. อัปเดตแอปเพื่อส่ง User-ID ไปยัง Google Analytics SDK ทั้ง 2 แอป และ Crashlytics SDK

    Objective-C
    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    
    Swift
    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    
    Java
    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. เขียนคำค้นหาที่ใช้ช่องรหัสผู้ใช้เพื่อเข้าร่วมเหตุการณ์ใน ชุดข้อมูล BigQuery ของ Google Analytics ที่มีข้อขัดข้องใน 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: ปัญหา 5 อันดับแรกนับตั้งแต่ DATE รวมถึงวันนี้

ต้องเปิดใช้การส่งออกแบบสตรีมของ Crashlytics BigQuery

ในตัวอย่างนี้ เรารวมตารางแบบกลุ่มและตารางแบบเรียลไทม์เข้าด้วยกันเพื่อเพิ่มแบบเรียลไทม์ ไปเป็นข้อมูลกลุ่มที่น่าเชื่อถือ เนื่องจาก event_id เป็นคีย์หลัก เราจึง สามารถใช้ DISTINCT event_id เพื่อกรองข้อมูลเหตุการณ์ทั่วไปที่ซ้ำกันออกจากทั้ง 2 ตารางได้

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) รวมถึงเหตุการณ์ที่เกิดขึ้นสูงสุด 2 วัน ก่อนลิงก์ โดยมีตัวเลือกให้ โฆษณาทดแทน ถึง 30 วัน

จากนั้น Firebase จะส่งออก Crashlytics จนกว่าคุณจะปิดใช้ลิงก์ กิจกรรมทุกวัน อาจใช้เวลาสักครู่ข้อมูลจึงจะปรากฏ ใน BigQuery หลังจากการส่งออกแต่ละครั้ง

ชุดข้อมูล

Firebase Crashlytics สร้างชุดข้อมูลใหม่ใน BigQuery สำหรับ Crashlytics ชุดข้อมูลจะครอบคลุมทั้งโปรเจ็กต์ แม้ว่าจะมีหลายแอปก็ตาม

ตาราง

Firebase Crashlytics จะสร้างตารางในชุดข้อมูลสำหรับแต่ละแอปใน ยกเว้นในกรณีที่คุณเลือกไม่ใช้การส่งออกข้อมูลสำหรับแอปดังกล่าว ชื่อ Firebase ตารางตามตัวระบุ Bundle ของแอป โดยมีการแปลงเครื่องหมายจุดเป็น ขีดล่าง และชื่อแพลตฟอร์มต่อท้าย

เช่น ข้อมูลสำหรับแอป Android ที่มีรหัส com.google.test จะอยู่ใน ตารางชื่อ com_google_test_ANDROID และข้อมูลแบบเรียลไทม์ (หากเปิดใช้) จะเป็น ในตารางชื่อ com_google_test_ANDROID_REALTIME

ตารางมีชุดข้อมูล Crashlytics มาตรฐานนอกเหนือจากข้อมูลที่กำหนดเอง คีย์ Crashlytics ที่นักพัฒนาซอฟต์แวร์กำหนด

แถว

แต่ละแถวในตารางแสดงถึงข้อผิดพลาดที่แอปพบ

คอลัมน์

คอลัมน์ในตารางจะเหมือนกันสำหรับข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR ถ้า เปิดใช้การส่งออกสตรีมมิงของ Crashlytics BigQuery จากนั้นจึงเปิดใช้ตารางแบบเรียลไทม์ จะมีคอลัมน์เดียวกับตารางกลุ่ม คอลัมน์ภายในการส่งออกมีดังนี้ ที่ระบุไว้ด้านล่าง

ไม่มีสแต็กเทรซ

คอลัมน์ที่แสดงในแถวซึ่งแสดงถึงเหตุการณ์ที่ไม่มีสแต็กเทรซ

ชื่อช่อง ประเภทข้อมูล คำอธิบาย
platform STRING แอปของ Apple หรือ Android
Bundle_identifier [ Bundle_identifier ] STRING รหัสแพ็กเกจ เช่น com.google.gmail
event_id STRING รหัสที่ไม่ซ้ำกันสำหรับกิจกรรม
ร้ายแรง BOOLEAN แอปขัดข้องหรือไม่
ประเภทข้อผิดพลาด [error_type] STRING ประเภทข้อผิดพลาดของเหตุการณ์ (FATAL, NON_FATAL, ANR)
รหัสปัญหา [ issue_id] STRING ปัญหาที่เชื่อมโยงกับเหตุการณ์
รหัสตัวแปร [Variant_id] STRING รูปแบบของปัญหาที่เชื่อมโยงกับเหตุการณ์นี้
โปรดทราบว่าบางเหตุการณ์ไม่มีตัวแปรของปัญหาที่เชื่อมโยงอยู่
event_timestamp การประทับเวลา เวลาที่เกิดเหตุการณ์
อุปกรณ์ RECORD อุปกรณ์ที่เกิดเหตุการณ์
device.manufacturer STRING ผู้ผลิตอุปกรณ์
รุ่นของอุปกรณ์ STRING รุ่นอุปกรณ์
สถาปัตยกรรมอุปกรณ์ STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S หรือ ARMV7K
หน่วยความจำ RECORD สถานะหน่วยความจำของอุปกรณ์
หน่วยความจำที่ใช้แล้ว INT64 จำนวนไบต์ของหน่วยความจำที่ใช้
Memory.free INT64 จำนวนไบต์ของหน่วยความจำที่เหลืออยู่
พื้นที่เก็บข้อมูล RECORD พื้นที่เก็บข้อมูลถาวรของอุปกรณ์
พื้นที่เก็บข้อมูลที่ใช้ INT64 จำนวนไบต์ของพื้นที่เก็บข้อมูลที่ใช้
พื้นที่เก็บข้อมูลฟรี INT64 จำนวนไบต์ของพื้นที่เก็บข้อมูลที่เหลือ
ระบบปฏิบัติการ RECORD รายละเอียดของระบบปฏิบัติการในอุปกรณ์
Operations_system.display_version STRING เวอร์ชันของระบบปฏิบัติการในอุปกรณ์
operating_system.name STRING ชื่อระบบปฏิบัติการในอุปกรณ์
Operations_system.modification_state STRING อุปกรณ์ได้รับการแก้ไขหรือไม่ เช่น เจลเบรค/ผ่านการรูท (มีการแก้ไขหรือไม่ได้แก้ไข)
Operat_system.type STRING ประเภทของระบบปฏิบัติการในอุปกรณ์ (เช่น IOS, MACOS) เท่านั้น ใช้ได้กับแอปแพลตฟอร์มของ Apple
Operations_system.device_type STRING ประเภทอุปกรณ์ (เช่น อุปกรณ์เคลื่อนที่ แท็บเล็ต ทีวี ฯลฯ) หรือที่เรียกว่า "หมวดหมู่อุปกรณ์"
แอปพลิเคชัน RECORD แอปที่สร้างเหตุการณ์
application.build_version STRING เวอร์ชันบิลด์ของแอป
application.display_version STRING
ผู้ใช้ RECORD ไม่บังคับ: ข้อมูลที่รวบรวมจากผู้ใช้แอป
user.name STRING ไม่บังคับ: ชื่อผู้ใช้
user.email STRING ไม่บังคับ: อีเมลของผู้ใช้
user.id STRING ไม่บังคับ: รหัสเฉพาะแอปที่เชื่อมโยงกับผู้ใช้
คีย์ที่กำหนดเอง บันทึกซ้ำ คู่คีย์-ค่าที่นักพัฒนาแอปกำหนด
คีย์ที่กำหนดเอง [custom_keys.key] STRING คีย์ที่นักพัฒนาแอปกำหนด
คีย์ที่กำหนดเอง [custom_keys.value] STRING ค่าที่นักพัฒนาแอปกำหนด
uuid การติดตั้ง STRING รหัสที่ระบุแอปและ การติดตั้งอุปกรณ์
Crashlytics_sdk_เวอร์ชัน STRING เวอร์ชัน Crashlytics SDK ที่สร้างเหตุการณ์
การวางแนวของแอป STRING PORTRAIT, LANDSCAPE, FACE_UP หรือ FACE_DOWN
การวางแนวของอุปกรณ์ STRING PORTRAIT, LANDSCAPE, FACE_UP หรือ FACE_DOWN
สถานะกระบวนการ STRING ข้อมูลเบื้องต้นหรือเรื่องราวเบื้องหลัง
บันทึก บันทึกซ้ำ การประทับเวลาข้อความบันทึกที่สร้างโดยตัวบันทึก Crashlytics หากเปิดใช้
บันทึกการประทับเวลา การประทับเวลา เวลาที่สร้างบันทึก
log.message STRING ข้อความที่บันทึก
เบรดครัมบ์ บันทึกซ้ำ การแสดงเส้นทางของ Google Analytics ที่มีการประทับเวลา หากเปิดใช้
การแสดงเส้นทาง.การประทับเวลา การประทับเวลา การประทับเวลาที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.name STRING ชื่อที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params บันทึกซ้ำ พารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params.key STRING คีย์พารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params.value STRING ค่าพารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
กรอบโทษ RECORD เฟรมที่ระบุเป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาด
blame_frame.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
blame_frame.file STRING ชื่อไฟล์เฟรม
blame_frame.symbol STRING สัญลักษณ์ความชุ่มชื้น หรือสัญลักษณ์ดิบ หากขาดน้ำ
blame_frame.offset INT64 ออฟเซ็ตไบต์ในอิมเมจไบนารีที่มีรหัส ไม่ได้ตั้งค่าสำหรับ ข้อยกเว้นของ Java
blame_frame.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีโค้ดที่ไม่ได้ตั้งค่าสำหรับ Java เฟรม
blame_frame.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
blame_frame.owner STRING DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
blame_frame.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อขัดข้องหรือข้อผิดพลาด
ข้อยกเว้น บันทึกซ้ำ Android เท่านั้น: ข้อยกเว้นที่เกิดขึ้นระหว่างกิจกรรมนี้ ข้อยกเว้นที่ซ้อนกัน จะแสดงตามลำดับเวลาจากใหม่ไปหาเก่า (อ่าน: บันทึกสุดท้ายคือ ได้รับการยกเว้น)
ประเภทข้อยกเว้น STRING ประเภทข้อยกเว้น เช่น java.lang.IllegalStateException
ข้อยกเว้น_ข้อความ_ยกเว้น STRING ข้อความที่เชื่อมโยงกับข้อยกเว้น
excluded.nested BOOLEAN จริง ยกเว้นข้อยกเว้นสุดท้าย (เช่น ระเบียนแรก)
ชื่อข้อยกเว้น STRING ชื่อชุดข้อความ
คำบรรยายที่เป็นข้อยกเว้น STRING คำบรรยายของชุดข้อความ
ข้อยกเว้น.เบลนด์ BOOLEAN เป็นจริงหาก Crashlytics ระบุว่าข้อยกเว้นเป็นผู้รับผิดชอบต่อ ข้อผิดพลาดหรือข้อขัดข้อง
ข้อยกเว้น.เฟรม บันทึกซ้ำ เฟรมที่เชื่อมโยงกับข้อยกเว้น
excluded.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
excluded.frames.file STRING ชื่อไฟล์เฟรม
excluded.frames.symbol STRING สัญลักษณ์ความชุ่มชื้น หรือสัญลักษณ์ดิบ หากขาดน้ำ
excluded.frames.offset INT64 ออฟเซ็ตไบต์ในอิมเมจไบนารีที่มีรหัส ไม่ได้ตั้งค่าสำหรับ ข้อยกเว้นของ Java
ข้อยกเว้น.frames.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีโค้ดที่ไม่ได้ตั้งค่าสำหรับ Java เฟรม
ข้อยกเว้น.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
excluded.frames.owner STRING DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
ข้อยกเว้น.frames.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อขัดข้องหรือข้อผิดพลาด
ข้อผิดพลาด บันทึกซ้ำ แอป Apple เท่านั้น: ข้อผิดพลาดที่ไม่ร้ายแรง
error.queue_name STRING คิวที่ชุดข้อความทำงานอยู่
error.code INT64 รหัสข้อผิดพลาดที่เชื่อมโยงกับ NSError ที่กำหนดเองที่บันทึกไว้ของแอป
ชื่อข้อผิดพลาด STRING ชื่อชุดข้อความ
ข้อผิดพลาด.คำบรรยาย STRING คำบรรยายของชุดข้อความ
error.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อผิดพลาด
error.frames บันทึกซ้ำ เฟรมของสแต็กเทรซ
error.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
error.frames.file STRING ชื่อไฟล์เฟรม
error.frames.symbol STRING สัญลักษณ์ความชุ่มชื้น หรือสัญลักษณ์ดิบ หากขาดน้ำ
error.frames.offset INT64 ไบต์ออฟเซ็ตในอิมเมจไบนารีที่มีโค้ด
error.frames.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีรหัส
error.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
error.frames.owner STRING DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
error.frames.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อผิดพลาด
ชุดข้อความ บันทึกซ้ำ ชุดข้อความที่มีอยู่เมื่อเกิดเหตุการณ์
ที่เทรด.crash BOOLEAN ชุดข้อความขัดข้องหรือไม่
ชุดข้อความ.ชื่อ_ชุดข้อความ STRING ชื่อชุดข้อความ
ที่เทรด.queue_name STRING แอป Apple เท่านั้น: คิวที่เทรดทำงานอยู่
ชุดข้อความ.signal_name STRING ชื่อของสัญญาณที่ทำให้แอปขัดข้อง ซึ่งแสดงในข้อขัดข้องเท่านั้น ชุดข้อความแบบเนทีฟ
ชุดข้อความ.signal_code STRING รหัสของสัญญาณที่ทำให้แอปขัดข้อง แสดงเมื่อขัดข้องเท่านั้น ชุดข้อความแบบเนทีฟ
ที่เทรด.crash_address INT64 ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง ปัจจุบันเท่านั้น ในชุดข้อความเนทีฟที่ขัดข้อง
ที่เทรด.code INT64 เฉพาะแอป Apple: รหัสข้อผิดพลาดของ NSError ที่กำหนดเองที่บันทึกไว้ของแอปพลิเคชัน
ชื่อชุดข้อความ STRING ชื่อชุดข้อความ
คำบรรยายชุดข้อความ STRING คำบรรยายของชุดข้อความ
ที่เทรด.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อขัดข้องหรือข้อผิดพลาด
เทรด.เฟรม บันทึกซ้ำ เฟรมของชุดข้อความ
ที่เทรด.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
ที่เทรด.frames.file STRING ชื่อไฟล์เฟรม
ที่เทรด.frames.symbol STRING สัญลักษณ์น้ำในร่างกาย หรือสัญลักษณ์ดิบหากขาดน้ำ
ที่เทรด.frames.offset INT64 ไบต์ออฟเซ็ตในอิมเมจไบนารีที่มีโค้ด
ที่เทรด.frames.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีรหัส
ที่เทรด.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
ที่เทรด.frames.owner STRING DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
ที่เทรด.frames.blamed BOOLEAN การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุหรือไม่ ของข้อผิดพลาด
unity_metadata.unity_version STRING เวอร์ชันของ Unity ที่ทำงานอยู่ในอุปกรณ์นี้
unity_metadata.debug_build BOOLEAN หากนี่คือบิลด์การแก้ไขข้อบกพร่อง
unity_metadata.processor_type STRING ประเภทโปรเซสเซอร์
unity_metadata.processor_count INT64 จำนวนโปรเซสเซอร์ (แกน)
unity_metadata.processor_frequency_mhz INT64 ความถี่ของโปรเซสเซอร์ในหน่วย MHz
unity_metadata.system_memory_size_mb INT64 ขนาดของหน่วยความจำของระบบในหน่วย MB
unity_metadata.graphics_memory_size_mb INT64 หน่วยความจำกราฟิกในหน่วย MB
unity_metadata.graphics_device_id INT64 ตัวระบุของอุปกรณ์กราฟิก
unity_metadata.graphics_device_vendor_id INT64 ตัวระบุของผู้ให้บริการกราฟิก
unity_metadata.graphics_device_name STRING ชื่อของอุปกรณ์กราฟิก
unity_metadata.graphics_device_vendor STRING ผู้ให้บริการอุปกรณ์กราฟิก
unity_metadata.graphics_device_version STRING เวอร์ชันของอุปกรณ์กราฟิก
unity_metadata.graphics_device_type STRING ประเภทอุปกรณ์กราฟิก
unity_metadata.graphics_shader_level INT64 ระดับตัวปรับแสงเงาของกราฟิก
unity_metadata.graphics_render_target_count INT64 จำนวนเป้าหมายการแสดงผลแบบกราฟิก
unity_metadata.graphics_copy_texture_support STRING รองรับการคัดลอกพื้นผิวกราฟิกตามที่ระบุไว้ใน Unity API
unity_metadata.graphics_max_texture_size INT64 ขนาดสูงสุดสำหรับการแสดงพื้นผิวเท่านั้น
unity_metadata.screen_size_px STRING ขนาดของหน้าจอเป็นพิกเซล โดยมีการจัดรูปแบบเป็นกว้าง x สูง
unity_metadata.screen_Resolution_dpi STRING DPI ของหน้าจอเป็นตัวเลขทศนิยม
unity_metadata.screen_refresh_rate_hz INT64 อัตราการรีเฟรชหน้าจอเป็น Hz

การแสดงภาพข้อมูล Crashlytics ที่ส่งออกด้วย Data Studio

Google Data Studio เปลี่ยน ชุดข้อมูล Crashlytics ใน BigQuery ลงในรายงานซึ่งอ่านง่าย ที่จะแชร์ และปรับแต่งได้อย่างเต็มรูปแบบ

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Data Studio ให้ลองอ่านคู่มือเริ่มใช้งานฉบับย่อของ Data Studio ยินดีต้อนรับสู่ Data Studio

การใช้เทมเพลตรายงาน Crashlytics

Data Studio มีรายงานตัวอย่างสำหรับ Crashlytics ที่มีรายงาน ชุดมิติข้อมูลและเมตริกจากสคีมา Crashlytics BigQuery ที่ส่งออก ถ้า คุณเปิดใช้การส่งออกแบบสตรีมของ Crashlytics BigQuery แล้ว คุณจะดูได้ว่า ในหน้าเทรนด์แบบเรียลไทม์ของเทมเพลต Data Studio คุณสามารถใช้ ตัวอย่างเป็นเทมเพลต เพื่อสร้างรายงานและการแสดงข้อมูลผ่านภาพอย่างรวดเร็ว ข้อมูลดิบของข้อขัดข้องในแอปของคุณเอง

  1. เปิดเทมเพลตแดชบอร์ด Data Studio ของ Crashlytics
  2. คลิกใช้เทมเพลตที่มุมขวาบน
  3. ในเมนูแบบเลื่อนลงแหล่งข้อมูลใหม่ ให้เลือกสร้างแหล่งข้อมูลใหม่
  4. คลิกเลือกในการ์ด BigQuery
  5. เลือกตารางที่มีข้อมูล Crashlytics ที่ส่งออกโดยเลือก โปรเจ็กต์ของฉัน > [ชื่อโปรเจ็กต์ของคุณ] > firebase_crashlytics > [your-table-name] ตารางกลุ่มจะพร้อมเลือกเสมอ ถ้า เปิดใช้การส่งออกแบบสตรีมของ Crashlytics BigQuery แล้ว คุณสามารถเลือก ตารางแบบเรียลไทม์แทน
  6. ในส่วนการกำหนดค่า ให้ตั้งค่าระดับเทมเพลต Crashlytics เป็นค่าเริ่มต้น
  7. คลิกเชื่อมต่อเพื่อสร้างแหล่งข้อมูลใหม่
  8. คลิกเพิ่มลงในรายงานเพื่อกลับไปยังเทมเพลต Crashlytics
  9. สุดท้าย ให้คลิกสร้างรายงานเพื่อสร้างสำเนาของ Crashlytics เทมเพลตแดชบอร์ด Data Studio