Catch up on highlights from Firebase at Google I/O 2023. Learn more

ส่งออกข้อมูล 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

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

มุมมอง

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

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

การส่งออก BigQuery มีข้อมูลข้อขัดข้องแบบ Raw ซึ่งรวมถึงประเภทอุปกรณ์ ระบบปฏิบัติการ ข้อยกเว้น (แอป 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: การแยก ID ผู้ใช้

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

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. อัปเดตแอปเพื่อส่งรหัสผู้ใช้ไปยังทั้ง Google Analytics SDK และ Crashlytics SDK

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

เมื่อคุณลิงก์ Crashlytics กับ BigQuery แล้ว Firebase จะส่งออกเหตุการณ์ล่าสุด (ข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR) รวมถึงเหตุการณ์ตั้งแต่ 2 วันก่อนการลิงก์ โดยมีตัวเลือกให้ แสดงโฆษณาทดแทน ได้สูงสุด 90 วัน

จากจุดนั้นจนกว่าคุณจะปิดใช้ลิงก์ 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 ตารางเรียลไทม์จะมีคอลัมน์เดียวกับตารางแบทช์ คอลัมน์ภายในการส่งออกแสดงไว้ด้านล่าง

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

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

ชื่อฟิลด์ ประเภทข้อมูล คำอธิบาย
แพลตฟอร์ม STRING แอป Apple หรือ Android
bundle_identifier STRING รหัสบันเดิล เช่น com.google.gmail
รหัสเหตุการณ์ STRING รหัสเฉพาะสำหรับเหตุการณ์
is_fatal บูลีน ไม่ว่าแอพจะพัง
error_type STRING ประเภทข้อผิดพลาดของเหตุการณ์ (FATAL, NON_FATAL, ANR)
ปัญหา_id STRING ปัญหาที่เกี่ยวข้องกับเหตุการณ์
ตัวแปร_id STRING รูปแบบปัญหาที่เกี่ยวข้องกับเหตุการณ์นี้
โปรดทราบว่าไม่ใช่ทุกกิจกรรมที่มีรูปแบบปัญหาที่เกี่ยวข้อง
เหตุการณ์_timestamp ประทับเวลา เมื่อเกิดเหตุการณ์
อุปกรณ์ บันทึก อุปกรณ์ที่เหตุการณ์เกิดขึ้น
อุปกรณ์.ผู้ผลิต STRING ผู้ผลิตอุปกรณ์
อุปกรณ์.รุ่น STRING รุ่นของอุปกรณ์
อุปกรณ์. สถาปัตยกรรม STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S หรือ ARMV7K
หน่วยความจำ บันทึก สถานะหน่วยความจำของอุปกรณ์
หน่วยความจำที่ใช้ INT64 ไบต์ของหน่วยความจำที่ใช้
หน่วยความจำฟรี INT65 จำนวนไบต์ของหน่วยความจำที่เหลืออยู่
พื้นที่จัดเก็บ บันทึก พื้นที่เก็บข้อมูลถาวรของอุปกรณ์
ที่เก็บข้อมูลใช้แล้ว INT64 ไบต์ของพื้นที่เก็บข้อมูลที่ใช้
ที่เก็บข้อมูลฟรี INT64 ไบต์ของพื้นที่เก็บข้อมูลที่เหลืออยู่
ระบบปฏิบัติการ บันทึก รายละเอียด OS ของอุปกรณ์
ระบบปฏิบัติการ.display_version STRING เวอร์ชันระบบปฏิบัติการ
operation_system.name STRING ชื่อระบบปฏิบัติการ
operation_system.modification_state STRING MODIFIED หรือ UNMODIFIED กล่าวคืออุปกรณ์ได้รับการเจลเบรค/รูทหรือไม่
operation_system.type STRING ประเภทของระบบปฏิบัติการบนอุปกรณ์ เช่น IOS, MACOS
ระบบปฏิบัติการ.device_type STRING ประเภทของอุปกรณ์ เช่น มือถือ แท็บเล็ต ทีวี
แอปพลิเคชัน บันทึก แอปที่สร้างกิจกรรม
แอปพลิเคชัน build_version STRING เวอร์ชันบิลด์ของแอป
แอปพลิเคชัน. display_version STRING
ผู้ใช้ บันทึก ไม่บังคับ: ข้อมูลที่รวบรวมจากผู้ใช้แอป
ชื่อผู้ใช้ STRING ทางเลือก: ชื่อผู้ใช้
user.email STRING ทางเลือก: ที่อยู่อีเมลของผู้ใช้
user.id STRING ไม่บังคับ: ID เฉพาะแอปที่เชื่อมโยงกับผู้ใช้
custom_keys บันทึกซ้ำ คู่คีย์-ค่าที่กำหนดโดยนักพัฒนาซอฟต์แวร์
custom_keys.key STRING คีย์ที่กำหนดโดยนักพัฒนาซอฟต์แวร์
custom_keys.value STRING ค่าที่กำหนดโดยนักพัฒนา
installation_uuid STRING รหัสที่ระบุการติดตั้งแอปและอุปกรณ์ที่ไม่ซ้ำกัน
crashlytics_sdk_versions STRING เวอร์ชัน SDK ของ Crashlytics ที่สร้างเหตุการณ์
app_orientation STRING PORTRAIT, LANDSCAPE, FACE_UP หรือ FACE_DOWN
อุปกรณ์_orientation STRING PORTRAIT, LANDSCAPE, FACE_UP หรือ FACE_DOWN
กระบวนการ_state STRING พื้นหลังหรือเบื้องหน้า
บันทึก บันทึกซ้ำ ข้อความบันทึกการประทับเวลาที่สร้างโดยตัวบันทึก Crashlytics หากเปิดใช้งาน
บันทึก.ประทับเวลา ประทับเวลา เมื่อบันทึกถูกสร้างขึ้น
บันทึกข้อความ STRING ข้อความที่บันทึกไว้
เกล็ดขนมปัง บันทึกซ้ำ เบรดครัมบ์ Google Analytics ที่ประทับเวลาหากเปิดใช้งาน
breadcrumbs.timestamp ประทับเวลา การประทับเวลาที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.name STRING ชื่อที่เกี่ยวข้องกับเกล็ดขนมปัง
breadcrumbs.params บันทึกซ้ำ พารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.params.key STRING คีย์พารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.params.value STRING ค่าพารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
ตำหนิ_กรอบ บันทึก เฟรมที่ระบุว่าเป็นสาเหตุหลักของข้อขัดข้องหรือข้อผิดพลาด
ตำหนิ_frame.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
ตำหนิ_frame.file STRING ชื่อของไฟล์เฟรม
ตำหนิ_กรอบ.สัญลักษณ์ STRING สัญลักษณ์ไฮเดรตหรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
ตำหนิ_frame.offset INT64 ไบต์ออฟเซ็ตลงในอิมเมจไบนารีที่มีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับข้อยกเว้นของ Java
ตำหนิ_frame.address INT64 ที่อยู่ในอิมเมจไบนารีซึ่งมีรหัส ไม่ถูกตั้งค่าสำหรับเฟรม Java
ตำหนิ_frame.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
ตำหนิ_frame.owner STRING ผู้พัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
Blame_frame.blamed บูลีน ไม่ว่าการวิเคราะห์ของ Crashlytics จะระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
ข้อยกเว้น บันทึกซ้ำ Android เท่านั้น: ข้อยกเว้นที่เกิดขึ้นระหว่างกิจกรรมนี้ ข้อยกเว้นที่ซ้อนกันจะแสดงตามลำดับเวลาย้อนกลับ (อ่าน: บันทึกสุดท้ายคือข้อยกเว้นแรกที่ถูกโยนทิ้ง)
ข้อยกเว้นประเภท STRING ประเภทข้อยกเว้น เช่น java.lang.IllegalStateException
exceptions.exception_message STRING ข้อความที่เกี่ยวข้องกับข้อยกเว้น
ข้อยกเว้นซ้อนกัน บูลีน จริงสำหรับทั้งหมดยกเว้นการโยนครั้งสุดท้าย (เช่น เร็กคอร์ดแรก)
ข้อยกเว้น.ชื่อ STRING ชื่อเรื่องของเธรด
ข้อยกเว้นคำบรรยาย STRING คำบรรยายของเธรด
ข้อยกเว้นโทษ บูลีน เป็นจริงหาก Crashlytics ระบุว่าข้อยกเว้นรับผิดชอบต่อข้อผิดพลาดหรือข้อขัดข้อง
ข้อยกเว้นเฟรม บันทึกซ้ำ กรอบที่เกี่ยวข้องกับข้อยกเว้น
exceptions.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
exceptions.frames.file STRING ชื่อของไฟล์เฟรม
ข้อยกเว้น กรอบ สัญลักษณ์ STRING สัญลักษณ์ไฮเดรตหรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
exceptions.frames.offset INT64 ไบต์ออฟเซ็ตลงในอิมเมจไบนารีที่มีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับข้อยกเว้นของ Java
ข้อยกเว้น.กรอบ.ที่อยู่ INT64 ที่อยู่ในอิมเมจไบนารีซึ่งมีรหัส ไม่ถูกตั้งค่าสำหรับเฟรม Java
exceptions.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
exceptions.frames.owner STRING ผู้พัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
exceptions.frames.blamed บูลีน ไม่ว่าการวิเคราะห์ของ Crashlytics จะระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
ข้อผิดพลาด บันทึกซ้ำ แอป Apple เท่านั้น: ข้อผิดพลาดที่ไม่ร้ายแรง
error.queue_name STRING คิวที่เธรดทำงานอยู่
error.code INT64 รหัสข้อผิดพลาดที่เกี่ยวข้องกับ NSError ที่บันทึกแบบกำหนดเองของแอป
error.title STRING ชื่อเรื่องของเธรด
error.subtitle STRING คำบรรยายของเธรด
error.blamed บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
error.frames บันทึกซ้ำ เฟรมของ stacktrace
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 ผู้พัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
error.frames.blamed บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
หัวข้อ บันทึกซ้ำ หัวข้อนำเสนอในช่วงเวลาของเหตุการณ์
กระทู้ขัดข้อง บูลีน ไม่ว่าจะเป็นเธรดที่ล้มเหลว
threads.thread_name STRING ชื่อเธรด
threads.queue_name STRING แอป Apple เท่านั้น: คิวที่เธรดทำงานอยู่
threads.signal_name STRING ชื่อของสัญญาณที่ทำให้แอปขัดข้อง แสดงเฉพาะในเธรดเนทีฟที่ขัดข้องเท่านั้น
เธรด.signal_code STRING รหัสของสัญญาณที่ทำให้แอปขัดข้อง แสดงเฉพาะในเธรดเนทีฟที่ขัดข้องเท่านั้น
threads.crash_address INT64 ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง แสดงเฉพาะในเธรดเนทีฟที่ขัดข้องเท่านั้น
เธรดรหัส INT64 แอป Apple เท่านั้น: รหัสข้อผิดพลาดของ NSError ที่บันทึกแบบกำหนดเองของแอปพลิเคชัน
threads.title STRING ชื่อเรื่องของเธรด
หัวข้อ.คำบรรยาย STRING คำบรรยายของเธรด
กระทู้.ตำหนิ บูลีน ไม่ว่าการวิเคราะห์ของ Crashlytics จะระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
เธรดเฟรม บันทึกซ้ำ กรอบของด้าย
threads.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
threads.frames.file STRING ชื่อของไฟล์เฟรม
เธรด กรอบ สัญลักษณ์ STRING สัญลักษณ์ไฮเดรตหรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
threads.frames.offset INT64 ไบต์ชดเชยในรูปไบนารีที่มีรหัส
threads.frames.address INT64 ที่อยู่ในรูปไบนารีที่มีรหัส
threads.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
threads.frames.owner STRING ผู้พัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
threads.frames.blamed บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
unity_metadata.unity_version STRING เวอร์ชันของ Unity ที่ทำงานบนอุปกรณ์นี้
unit_metadata.debug_build บูลีน หากนี่คือการสร้างการดีบัก
unit_metadata.processor_type STRING ประเภทของโปรเซสเซอร์
unit_metadata.processor_count INT64 จำนวนโปรเซสเซอร์ (คอร์)
unit_metadata.processor_frequency_mhz INT64 ความถี่ของโปรเซสเซอร์เป็น MHz
unity_metadata.system_memory_size_mb INT64 ขนาดหน่วยความจำของระบบเป็น Mb
unity_metadata.graphics_memory_size_mb INT64 หน่วยความจำกราฟิกเป็น MB
unit_metadata.graphics_device_id INT64 ตัวระบุของอุปกรณ์กราฟิก
unity_metadata.graphics_device_vendor_id INT64 ตัวระบุของผู้จำหน่ายโปรเซสเซอร์กราฟิก
unit_metadata.graphics_device_name STRING ชื่อของอุปกรณ์กราฟิก
united_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 สูง
เอกภาพ_เมตาดาต้า.หน้าจอ_ความละเอียด_dpi STRING DPI ของหน้าจอเป็นตัวเลขทศนิยม
unit_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. เปิด เทมเพลตแดชบอร์ด Crashlytics Data Studio
  2. คลิก ใช้เทมเพลต ที่มุมขวาบน
  3. ในดร็อปดาวน์ แหล่งข้อมูลใหม่ เลือก สร้างแหล่งข้อมูลใหม่
  4. คลิก เลือก บนการ์ด BigQuery
  5. เลือกตารางที่มีข้อมูล Crashlytics ที่ส่งออกโดยเลือก My Projects > [your-project-name] > firebase_crashlytics > [your-table-name] ตารางแบทช์ของคุณพร้อมให้เลือกเสมอ หากเปิดใช้การส่งออกการสตรีม Crashlytics BigQuery คุณจะเลือกตารางเรียลไทม์แทนได้
  6. ภายใต้ การกำหนดค่า ตั้งค่า ระดับเทมเพลต Crashlytics เป็น ค่าเริ่มต้น
  7. คลิก เชื่อมต่อ เพื่อสร้างแหล่งข้อมูลใหม่
  8. คลิก เพิ่มในรายงาน เพื่อกลับไปที่เทมเพลต Crashlytics
  9. สุดท้าย ให้คลิก สร้างรายงาน เพื่อสร้างสำเนาเทมเพลต Dashboard ของ Crashlytics Data Studio