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