คุณส่งออกข้อมูล Crashlytics ไปยัง BigQuery เพื่อการวิเคราะห์เพิ่มเติมได้ BigQuery ช่วยให้คุณวิเคราะห์ข้อมูลโดยใช้ BigQuery SQL ส่งออกข้อมูลไปยังผู้ให้บริการระบบคลาวด์รายอื่น และใช้ข้อมูลดังกล่าวสำหรับการแสดงภาพและแดชบอร์ดที่กำหนดเองด้วย Google Data Studio
เปิดใช้การส่งออก BigQuery
- ไปที่หน้า การรวมระบบ ในคอนโซล Firebase
- ในการ์ด BigQuery ให้คลิก ลิงก์
- ทำตามคำแนะนำบนหน้าจอเพื่อเปิดใช้ 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 นอกเหนือจากตารางแบทช์ คุณจะมีตารางเรียลไทม์ด้วย นี่คือความแตกต่างที่คุณควรทราบระหว่างตาราง:
ตารางแบทช์ | ตารางเรียลไทม์ |
---|---|
|
|
ตารางแบตช์เหมาะสำหรับการวิเคราะห์ในระยะยาวและระบุแนวโน้มในช่วงเวลาหนึ่ง เนื่องจากเราจัดเก็บเหตุการณ์ไว้ก่อนที่จะเขียนเหตุการณ์เหล่านั้นอย่างคงทน และสามารถทดแทนเหตุการณ์เหล่านั้นลงในตารางได้นานถึง 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 ด้านบนเพื่อระบุรหัสปัญหาข้อขัดข้องเฉพาะ ขณะนี้ทีมงานต้องการดูว่าข้อขัดข้องนี้แพร่กระจายไปยังผู้ใช้ในประเทศต่างๆ ทั่วโลกหรือไม่
หากต้องการเขียนแบบสอบถามนี้ ทีมงานจะต้อง:
เปิดใช้การส่งออก BigQuery สำหรับ Google Analytics ดู ส่งออกข้อมูลโครงการไปยัง BigQuery
อัปเดตแอปให้ส่งรหัสผู้ใช้ไปยังทั้ง 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");
เขียนคำค้นหาที่ใช้ช่องรหัสผู้ใช้เพื่อเข้าร่วมเหตุการณ์ในชุดข้อมูล 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 | ไบต์ของหน่วยความจำที่ใช้ |
หน่วยความจำฟรี | INT65 | ไบต์ของหน่วยความจำที่เหลืออยู่ |
พื้นที่จัดเก็บ | บันทึก | พื้นที่เก็บข้อมูลถาวรของอุปกรณ์ |
ที่เก็บของใช้แล้ว | 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 คุณสามารถใช้ตัวอย่างเป็นเทมเพลตเพื่อสร้างรายงานและการแสดงภาพใหม่อย่างรวดเร็วโดยอิงตามข้อมูลข้อขัดข้องดิบของแอปของคุณเอง:
- เปิด เทมเพลตแดชบอร์ด Crashlytics Data Studio
- คลิก ใช้เทมเพลต ที่มุมขวาบน
- ในดรอปดาวน์ แหล่งข้อมูลใหม่ เลือก สร้างแหล่งข้อมูลใหม่
- คลิก เลือก บนการ์ด BigQuery
- เลือกตารางที่มีข้อมูล Crashlytics ที่ส่งออกโดยเลือก โปรเจ็กต์ของฉัน > [ชื่อโปรเจ็กต์ของคุณ] > firebase_crashlytics > [ชื่อตารางของคุณ] ตารางแบตช์ของคุณพร้อมให้เลือกเสมอ หากเปิดใช้การส่งออกแบบสตรีม Crashlytics BigQuery คุณจะเลือกตารางเรียลไทม์แทนได้
- ภายใต้ การกำหนดค่า ให้ตั้งค่า ระดับเทมเพลต Crashlytics เป็น ค่าเริ่มต้น
- คลิก เชื่อมต่อ เพื่อสร้างแหล่งข้อมูลใหม่
- คลิก เพิ่มลงในรายงาน เพื่อกลับไปยังเทมเพลต Crashlytics
- สุดท้าย คลิก สร้างรายงาน เพื่อสร้างสำเนาเทมเพลตแดชบอร์ด Crashlytics Data Studio