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