ส่งออกข้อมูล 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 มีข้อมูลข้อขัดข้องดิบ รวมถึงประเภทอุปกรณ์ ระบบปฏิบัติการ ข้อยกเว้น (แอป 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. เขียนคำค้นหาที่ใช้ช่องรหัสผู้ใช้เพื่อเข้าร่วมเหตุการณ์ในชุดข้อมูล 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 ใน 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 ID ชุด เช่น com.google.gmail
event_id STRING รหัสเฉพาะสำหรับกิจกรรม
เป็น_ร้ายแรง บูลีน ไม่ว่าแอพจะขัดข้องหรือไม่
error_type STRING ประเภทข้อผิดพลาดของเหตุการณ์ (FATAL, NON_FATAL, ANR)
issue_id STRING ปัญหาที่เกี่ยวข้องกับเหตุการณ์
ตัวแปร_id STRING ตัวแปรของปัญหาที่เกี่ยวข้องกับเหตุการณ์นี้
โปรดทราบว่าไม่ใช่ทุกเหตุการณ์จะมีปัญหาที่เกี่ยวข้องกัน
เหตุการณ์_การประทับเวลา การประทับเวลา เมื่อเกิดเหตุการณ์
อุปกรณ์ บันทึก อุปกรณ์ที่เกิดเหตุการณ์
อุปกรณ์.ผู้ผลิต STRING ผู้ผลิตอุปกรณ์
อุปกรณ์.รุ่น STRING รุ่นของอุปกรณ์
อุปกรณ์.สถาปัตยกรรม STRING X86_32, X86_64, ARMV7, ARM64, ARMV7S หรือ ARMV7K
หน่วยความจำ บันทึก สถานะหน่วยความจำของอุปกรณ์
หน่วยความจำใช้แล้ว INT64 ไบต์ของหน่วยความจำที่ใช้
หน่วยความจำฟรี INT64 ไบต์ของหน่วยความจำที่เหลืออยู่
พื้นที่จัดเก็บ บันทึก พื้นที่เก็บข้อมูลถาวรของอุปกรณ์
ที่เก็บของใช้แล้ว INT64 ไบต์ของพื้นที่เก็บข้อมูลที่ใช้
พื้นที่เก็บข้อมูลฟรี INT64 ไบต์ของพื้นที่เก็บข้อมูลที่เหลืออยู่
ระบบปฏิบัติการ บันทึก รายละเอียดของระบบปฏิบัติการบนอุปกรณ์
Operating_system.display_version STRING เวอร์ชันของระบบปฏิบัติการบนอุปกรณ์
Operating_system.name STRING ชื่อของระบบปฏิบัติการบนอุปกรณ์
Operating_system.modification_state STRING ไม่ว่าอุปกรณ์ได้รับการแก้ไขหรือไม่ เช่น เจลเบรค/รูท (MODIFIED หรือ UNMODIFIED)
Operating_system.type STRING ประเภทของระบบปฏิบัติการที่ทำงานบนอุปกรณ์ (เช่น IOS, MACOS) ใช้ได้เฉพาะกับแอปแพลตฟอร์ม Apple เท่านั้น
Operating_system.device_type STRING ประเภทอุปกรณ์ (เช่น โทรศัพท์มือถือ แท็บเล็ต ทีวี ฯลฯ) หรือที่เรียกว่า "หมวดหมู่อุปกรณ์"
แอปพลิเคชัน บันทึก แอปที่สร้างกิจกรรม
แอปพลิเคชัน build_version STRING เวอร์ชันบิลด์ของแอป
แอปพลิเคชัน display_version STRING
ผู้ใช้ บันทึก ทางเลือก: ข้อมูลที่รวบรวมจากผู้ใช้แอป
ชื่อผู้ใช้ STRING ทางเลือก: ชื่อผู้ใช้
ผู้ใช้.อีเมล์ STRING ทางเลือก: ที่อยู่อีเมลของผู้ใช้
ผู้ใช้.id STRING ทางเลือก: รหัสเฉพาะแอปที่เชื่อมโยงกับผู้ใช้
กำหนดเอง_คีย์ บันทึกซ้ำ คู่คีย์-ค่าที่นักพัฒนากำหนด
custom_keys.key STRING คีย์ที่นักพัฒนากำหนด
custom_keys.value STRING ค่าที่นักพัฒนากำหนด
การติดตั้ง_uuid STRING รหัสที่ระบุการติดตั้งแอปและอุปกรณ์ที่ไม่ซ้ำกัน
Crashlytics_sdk_versions STRING เวอร์ชัน Crashlytics SDK ที่สร้างเหตุการณ์
app_orientation STRING ภาพบุคคล ภูมิทัศน์ FACE_UP หรือ FACE_DOWN
อุปกรณ์_การวางแนว STRING ภาพบุคคล ภูมิทัศน์ FACE_UP หรือ FACE_DOWN
กระบวนการ_สถานะ STRING พื้นหลังหรือเบื้องหน้า
บันทึก บันทึกซ้ำ ข้อความบันทึกการประทับเวลาที่สร้างโดยตัวบันทึก Crashlytics หากเปิดใช้งาน
บันทึก.ประทับเวลา การประทับเวลา เมื่อทำบันทึกแล้ว
บันทึก.ข้อความ STRING ข้อความที่บันทึกไว้
เกล็ดขนมปัง บันทึกซ้ำ Breadcrumbs ของ Google Analytics ที่ประทับเวลา หากเปิดใช้งาน
breadcrumbs.ประทับเวลา การประทับเวลา การประทับเวลาที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.name STRING ชื่อที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.params บันทึกซ้ำ พารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.params.key STRING คีย์พารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
breadcrumbs.params.value STRING ค่าพารามิเตอร์ที่เกี่ยวข้องกับเบรดครัมบ์
ตำหนิ_เฟรม บันทึก เฟรมที่ระบุเป็นสาเหตุหลักของการขัดข้องหรือข้อผิดพลาด
ตำหนิ_frame.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
ตำหนิ_frame.file STRING ชื่อของไฟล์เฟรม
ตำหนิ_frame.สัญลักษณ์ STRING สัญลักษณ์ไฮเดรต หรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
ตำหนิ_frame.offset INT64 ไบต์ที่ออฟเซ็ตลงในอิมเมจไบนารี่ที่มีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับข้อยกเว้น Java
ตำหนิ_frame.ที่อยู่ INT64 ที่อยู่ในอิมเมจไบนารีซึ่งมีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับเฟรม Java
ตำหนิ_frame.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
ตำหนิ_frame.owner STRING นักพัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
ตำหนิ_เฟรม.ตำหนิ บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
ข้อยกเว้น บันทึกซ้ำ Android เท่านั้น: ข้อยกเว้นที่เกิดขึ้นระหว่างกิจกรรมนี้ ข้อยกเว้นที่ซ้อนกันจะแสดงตามลำดับเวลาย้อนกลับ (อ่าน: บันทึกสุดท้ายคือข้อยกเว้นแรกที่ถูกส่งออกไป)
ข้อยกเว้น ประเภท STRING ประเภทข้อยกเว้น เช่น java.lang.IllegalStateException
ข้อยกเว้น.ข้อยกเว้น_ข้อความ STRING ข้อความที่เกี่ยวข้องกับข้อยกเว้น
ข้อยกเว้นซ้อนกัน บูลีน เป็นจริงสำหรับทุกคน ยกเว้นข้อยกเว้นที่เกิดครั้งสุดท้าย (เช่น บันทึกแรก)
ข้อยกเว้นชื่อเรื่อง STRING ชื่อเรื่องของเธรด
ข้อยกเว้น คำบรรยาย STRING คำบรรยายของเธรด
ข้อยกเว้นตำหนิ บูลีน เป็นจริงหาก Crashlytics พิจารณาว่าข้อยกเว้นต้องรับผิดชอบต่อข้อผิดพลาดหรือข้อขัดข้อง
ข้อยกเว้นเฟรม บันทึกซ้ำ เฟรมที่เกี่ยวข้องกับข้อยกเว้น
ข้อยกเว้น.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
ข้อยกเว้น.frames.file STRING ชื่อของไฟล์เฟรม
ข้อยกเว้น กรอบ สัญลักษณ์ STRING สัญลักษณ์ไฮเดรต หรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
ข้อยกเว้น.frames.offset INT64 ไบต์ที่ออฟเซ็ตลงในอิมเมจไบนารี่ที่มีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับข้อยกเว้น Java
ข้อยกเว้น.frames.address INT64 ที่อยู่ในอิมเมจไบนารีซึ่งมีโค้ด ซึ่งไม่ได้ตั้งค่าสำหรับเฟรม Java
ข้อยกเว้น.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
ข้อยกเว้น.frames.owner STRING นักพัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
ข้อยกเว้นเฟรมตำหนิ บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
ข้อผิดพลาด บันทึกซ้ำ แอปของ Apple เท่านั้น: ข้อผิดพลาดที่ไม่ร้ายแรง
ข้อผิดพลาด.queue_name STRING คิวที่เธรดกำลังทำงานอยู่
ข้อผิดพลาด.รหัส INT64 รหัสข้อผิดพลาดที่เกี่ยวข้องกับ NSError ที่บันทึกไว้แบบกำหนดเองของแอป
error.title STRING ชื่อเรื่องของเธรด
error.คำบรรยาย STRING คำบรรยายของเธรด
error.ตำหนิ บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
ข้อผิดพลาด.เฟรม บันทึกซ้ำ เฟรมของสแต็กเทรซ
error.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
error.frames.file STRING ชื่อของไฟล์เฟรม
error.frames.สัญลักษณ์ STRING สัญลักษณ์ไฮเดรต หรือสัญลักษณ์ดิบหากไม่สามารถไฮเดรตได้
ข้อผิดพลาด frames.offset INT64 ไบต์ออฟเซ็ตลงในอิมเมจไบนารี่ที่มีโค้ด
error.frames.address INT64 ที่อยู่ในภาพไบนารีซึ่งมีรหัส
error.frames.library STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
error.frames.owner STRING นักพัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
error.frames.blamed บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
กระทู้ บันทึกซ้ำ หัวข้อที่นำเสนอในช่วงเวลาของเหตุการณ์
กระทู้ขัดข้อง บูลีน ไม่ว่าด้ายจะขาด
เธรด.thread_name STRING ชื่อกระทู้
threads.queue_name STRING แอพของ Apple เท่านั้น: คิวที่เธรดกำลังทำงานอยู่
เธรด.signal_name STRING ชื่อของสัญญาณที่ทำให้แอปขัดข้อง จะแสดงเฉพาะในเธรดดั้งเดิมที่ขัดข้องเท่านั้น
เธรด.signal_code STRING รหัสสัญญาณที่ทำให้แอปขัดข้อง ปรากฏบนเธรดดั้งเดิมที่ขัดข้องเท่านั้น
threads.crash_address INT64 ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง ปรากฏบนเธรดดั้งเดิมที่ขัดข้องเท่านั้น
เธรด.รหัส INT64 แอปของ Apple เท่านั้น: รหัสข้อผิดพลาดของ NSError ที่บันทึกไว้แบบกำหนดเองของแอปพลิเคชัน
กระทู้.หัวข้อ STRING ชื่อเรื่องของเธรด
กระทู้.คำบรรยาย STRING คำบรรยายของเธรด
กระทู้.ตำหนิ บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือข้อผิดพลาดหรือไม่
เธรด.เฟรม บันทึกซ้ำ เฟรมของเธรด
threads.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
เธรด.เฟรม.ไฟล์ STRING ชื่อของไฟล์เฟรม
threads.frames.สัญลักษณ์ STRING สัญลักษณ์ไฮเดรต หรือสัญลักษณ์ดิบ หากไม่สามารถกินได้
เธรด.เฟรม.ออฟเซ็ต INT64 ไบต์ออฟเซ็ตลงในอิมเมจไบนารี่ที่มีโค้ด
threads.frames.ที่อยู่ INT64 ที่อยู่ในภาพไบนารีซึ่งมีรหัส
เธรด.เฟรม.ไลบรารี STRING ชื่อที่แสดงของไลบรารีที่มีเฟรม
เธรด.เฟรม.เจ้าของ STRING นักพัฒนา ผู้จำหน่าย รันไทม์ แพลตฟอร์ม หรือระบบ
threads.frames.ตำหนิ บูลีน การวิเคราะห์ของ Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
unity_metadata.unity_version STRING เวอร์ชันของ Unity ที่ทำงานบนอุปกรณ์นี้
unity_metadata.debug_build บูลีน ถ้านี่เป็นบิลด์การดีบัก
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_solution_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. เปิด เทมเพลตแดชบอร์ด Crashlytics Data Studio
  2. คลิก ใช้เทมเพลต ที่มุมขวาบน
  3. ในดรอปดาวน์ แหล่งข้อมูลใหม่ เลือก สร้างแหล่งข้อมูลใหม่
  4. คลิก เลือก บนการ์ด BigQuery
  5. เลือกตารางที่มีข้อมูล Crashlytics ที่ส่งออกโดยเลือก โปรเจ็กต์ของฉัน > [ชื่อโปรเจ็กต์ของคุณ] > firebase_crashlytics > [ชื่อตารางของคุณ] ตารางแบตช์ของคุณพร้อมให้เลือกเสมอ หากเปิดใช้การส่งออกแบบสตรีม Crashlytics BigQuery คุณจะเลือกตารางเรียลไทม์แทนได้
  6. ภายใต้ การกำหนดค่า ให้ตั้งค่า ระดับเทมเพลต Crashlytics เป็น ค่าเริ่มต้น
  7. คลิก เชื่อมต่อ เพื่อสร้างแหล่งข้อมูลใหม่
  8. คลิก เพิ่มลงในรายงาน เพื่อกลับไปยังเทมเพลต Crashlytics
  9. สุดท้าย คลิก สร้างรายงาน เพื่อสร้างสำเนาเทมเพลตแดชบอร์ด Crashlytics Data Studio