ส่งออกข้อมูล Firebase Crashlytics ไปยัง BigQuery

คุณสามารถส่งออกข้อมูล Firebase Crashlytics ไปยัง BigQuery สำหรับ การวิเคราะห์เพิ่มเติม BigQuery ช่วยให้คุณวิเคราะห์ข้อมูลได้โดยใช้ BigQuery ส่งออก SQL ไปยังผู้ให้บริการคลาวด์รายอื่นและใช้สำหรับ การแสดงผลและแดชบอร์ดที่กำหนดเองด้วย Google Data Studio

เปิดใช้การส่งออกไปยัง BigQuery

  1. ในคอนโซล Firebase ให้ไปที่ หน้าการผสานรวม
  2. คลิกลิงก์ในการ์ด BigQuery
  3. ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้การส่งออกไปยัง BigQuery

ต่อไปนี้เป็นสิ่งที่จะเกิดขึ้นเมื่อคุณเปิดใช้การส่งออกไปยัง BigQuery

  • โดยค่าเริ่มต้น แอปทั้งหมดในโปรเจ็กต์จะลิงก์กับ BigQuery และทุกๆ แอปที่คุณเพิ่มในโปรเจ็กต์ในภายหลังจะลิงก์โดยอัตโนมัติ BigQuery คุณสามารถจัดการแอปที่ส่งข้อมูลได้

  • Firebase จะตั้งค่าการซิงค์ข้อมูลของคุณจากโปรเจ็กต์ Firebase กับ BigQuery ทุกวัน

  • Firebase ส่งออกสำเนาข้อมูลที่มีอยู่ ไปยัง BigQuery ข้อมูลนี้จะแสดงตารางกลุ่มสำหรับแอปที่ลิงก์แต่ละแอป ที่มีข้อมูลจากการซิงค์รายวัน

  • หากคุณ เปิดใช้การส่งออกแบบสตรีม Crashlytics ไปยัง BigQuery แอปที่เชื่อมโยงทั้งหมดจะมีตารางแบบเรียลไทม์ที่อัปเดตอย่างต่อเนื่องด้วย

หากต้องการปิดใช้งานการส่งออกไปยัง BigQuery ให้ยกเลิกการลิงก์โปรเจ็กต์ในคอนโซล Firebase

ข้อมูลใดบ้างที่ส่งออกไปยัง BigQuery

ระบบจะส่งออกข้อมูล Firebase Crashlytics ไปยังชุดข้อมูล BigQuery ชื่อ firebase_crashlytics โดยค่าเริ่มต้น ระบบจะสร้างแต่ละตารางไว้ภายใน ชุดข้อมูล Crashlytics สำหรับแต่ละแอปในโปรเจ็กต์ Firebase ตั้งชื่อ ตารางตามตัวระบุของแอป พร้อมแปลงจุดเป็นขีดล่าง และ ชื่อแพลตฟอร์มที่ต่อท้าย

เช่น ข้อมูลสําหรับแอป Android ที่มีชื่อแพ็กเกจ com.google.test จะอยู่ในตารางชื่อ com_google_test_ANDROID อัปเดตตารางกลุ่มนี้แล้ว วันละ 1 ครั้ง หากคุณเปิดใช้การส่งออกแบบสตรีม Crashlytics ไปยัง BigQuery ระบบจะสตรีมข้อมูล Crashlytics แบบเรียลไทม์ไปยังตารางชื่อ com_google_test_ANDROID_REALTIME ด้วย

แต่ละแถวในตารางแสดงถึงเหตุการณ์ที่เกิดขึ้นในแอป ซึ่งรวมถึงข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR

การส่งออกแบบสตรีม Crashlytics รายการไปยัง BigQuery

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

เมื่อคุณเปิดใช้การส่งออกแบบสตรีม Crashlytics ไปยัง BigQuery นอกเหนือจากตารางกลุ่มแล้ว คุณจะมีตารางแบบเรียลไทม์ด้วย ต่อไปนี้คือ ความแตกต่างที่ควรทราบระหว่างตารางต่อไปนี้

ตารางกลุ่ม ตารางแบบเรียลไทม์
  • ระบบจะส่งออกข้อมูลวันละครั้ง
  • ระบบจะจัดเก็บเหตุการณ์อย่างถาวรก่อนที่จะเขียนเป็นกลุ่มไปยัง BigQuery
  • ข้อมูลสามารถทดแทนได้สูงสุด 30 วันก่อนหน้า
  • ระบบจะส่งออกข้อมูลแบบเรียลไทม์
  • ไม่มีการทดแทน

ตารางกลุ่มเหมาะสําหรับการวิเคราะห์ระยะยาวและระบุแนวโน้มเมื่อเวลาผ่านไป เนื่องจากเราจัดเก็บเหตุการณ์ไว้อย่างถาวรก่อนที่จะเขียน และสามารถทดแทนข้อมูลเหตุการณ์ลงในตารางได้สูงสุด 30 วัน เมื่อเราเขียนข้อมูลลงในตารางแบบเรียลไทม์ เราจะ เขียนลงใน BigQuery ทันที จึงเหมาะสำหรับการถ่ายทอดสด หน้าแดชบอร์ดและการแจ้งเตือนที่กำหนดเอง ตารางทั้ง 2 ตารางนี้สามารถรวมเข้ากับการค้นหาแบบต่อตะเข็บเพื่อให้ได้รับประโยชน์จากทั้ง 2 รายการ

โดยค่าเริ่มต้น ตารางแบบเรียลไทม์จะมีเวลาหมดอายุของพาร์ติชันอยู่ที่ 30 วัน ถึง เรียนรู้วิธีแก้ไขสิ่งนี้ ตั้งค่าการหมดอายุของพาร์ติชัน ในเอกสารประกอบของ BigQuery

เปิดใช้การส่งออกสตรีมมิง Crashlytics ไปยัง BigQuery

  1. ในคอนโซล Firebase ให้ไปที่หน้าการผสานรวม
  2. คลิกจัดการในการ์ด BigQuery
  3. เลือกช่องทําเครื่องหมายรวมสตรีมมิง

การดำเนินการนี้จะเปิดใช้การสตรีมสำหรับแอปที่ลิงก์ทั้งหมด

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

การส่งออกไปยัง BigQuery จะมีข้อมูลข้อขัดข้องดิบ ซึ่งรวมถึงประเภทอุปกรณ์ ระบบปฏิบัติการ ข้อยกเว้น (แอป Android) หรือข้อผิดพลาด (แอป Apple) และบันทึก Crashlytics รวมถึงข้อมูลอื่นๆ

ตรวจสอบข้อมูล Crashlytics ที่ส่งออกและสคีมาของตารางในหน้านี้ในภายหลัง

ใช้เทมเพลต Data Studio

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

สร้างมุมมอง

คุณเปลี่ยนคําค้นหาเป็นมุมมองได้โดยใช้ UI ของ BigQuery โปรดดูวิธีการโดยละเอียดที่หัวข้อสร้างมุมมองในเอกสารประกอบBigQuery

เรียกใช้การค้นหา

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

ตัวอย่างที่ 1: ข้อขัดข้องตามวัน

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

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสกลุ่มและ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT
  COUNT(DISTINCT event_id) AS number_of_crashes,
  FORMAT_TIMESTAMP("%F", event_timestamp) AS date_of_crashes
FROM
 `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
GROUP BY
  date_of_crashes
ORDER BY
  date_of_crashes DESC
LIMIT 30;

ตัวอย่างที่ 2: ค้นหาข้อขัดข้องที่พบบ่อยที่สุด

หากต้องการจัดลำดับความสำคัญของแผนการผลิตอย่างเหมาะสม คุณต้องค้นหา 10 อันดับแรก เกิดข้อขัดข้องที่มักเกิดขึ้นในแอป คุณสร้าง Query ที่ระบุข้อมูลที่เกี่ยวข้อง จุดข้อมูลเท่านั้น

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสชุดของแอปนั้น และ IOS (แทนชื่อแพ็กเกจและ ANDROID)

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
  `PROJECT_ID.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 อันดับแรก

ฤดูใบไม้ร่วงเป็นฤดูแห่งโทรศัพท์เครื่องใหม่ บริษัทของคุณทราบดีว่านี่ยังหมายถึงช่วงที่มีปัญหาใหม่เฉพาะอุปกรณ์ โดยเฉพาะสำหรับ Android เตรียมตัวให้พร้อม ความกังวลเกี่ยวกับความเข้ากันได้ที่เพิ่มขึ้น คุณได้รวบรวมคำค้นหาที่ระบุ อุปกรณ์ 10 เครื่องที่พบข้อขัดข้องมากที่สุดในสัปดาห์ที่ผ่านมา (168 ชั่วโมง)

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสชุดของแอปนั้น และ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT
  device.model,
COUNT(DISTINCT event_id) AS number_of_crashes
FROM
  `PROJECT_ID.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 และอัปเดตทุกครั้งที่ผู้ใช้ขึ้นถึงระดับใหม่

Swift

Crashlytics.sharedInstance().setIntValue(3, forKey: "current_level");

Objective-C

CrashlyticsKit setIntValue:3 forKey:@"current_level";

Java

Crashlytics.setInt("current_level", 3);

เมื่อใช้คีย์ดังกล่าวในการส่งออกไปยัง BigQuery แล้ว คุณจะเขียนการค้นหาเพื่อรายงานการแจกแจงค่า current_level ที่เชื่อมโยงกับเหตุการณ์ข้อขัดข้องแต่ละรายการได้

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสชุดของแอปนั้น และ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT
COUNT(DISTINCT event_id) AS num_of_crashes,
  value
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
UNNEST(custom_keys)
WHERE
  key = "current_level"
GROUP BY
  key,
  value
ORDER BY
  num_of_crashes DESC

ตัวอย่างที่ 5: การสกัดรหัสผู้ใช้

คุณมีแอป Android ในการทดลองใช้ก่อนเปิดตัว ผู้ใช้ส่วนใหญ่ชื่นชอบแอป แต่ผู้ใช้ 3 คนพบการขัดข้องมากกว่าปกติ หากต้องการหาสาเหตุของปัญหา ให้เขียนการค้นหาที่ดึงเหตุการณ์ข้อขัดข้องทั้งหมดของผู้ใช้เหล่านั้นโดยใช้รหัสผู้ใช้

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสกลุ่มและ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT *
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  user.id IN ("USER_ID_1", "USER_ID_2", "USER_ID_3")
ORDER BY
  user.id
 

ตัวอย่างที่ 6: ค้นหาผู้ใช้ทั้งหมดที่ประสบปัญหาการขัดข้องที่เฉพาะเจาะจง

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

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสชุดของแอปนั้น และ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT user.id as user_id
FROM
  `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`
WHERE
  issue_id = "ISSUE_ID"
  AND application.display_version = "APP_VERSION"
  AND user.id != ""
ORDER BY
  user.id;

ตัวอย่างที่ 7: จํานวนผู้ใช้ที่ได้รับผลกระทบจากปัญหาข้อขัดข้อง โดยแยกตามประเทศ

ทีมของคุณตรวจพบข้อบกพร่องร้ายแรงในระหว่างการเปิดตัวรุ่นใหม่ คุณใช้การค้นหาจากตัวอย่าง"ค้นหาข้อขัดข้องที่พบบ่อยที่สุด" ด้านบนเพื่อระบุรหัสปัญหาข้อขัดข้องที่ต้องการได้ ขณะนี้ทีมของคุณต้องการดู หากข้อขัดข้องนี้แพร่กระจายไปยังผู้ใช้ในประเทศต่างๆ ทั่วโลก

ในการเขียนการค้นหานี้ ทีมของคุณจะต้องทําดังนี้

  1. เปิดใช้การส่งออกข้อมูล Google Analytics ไปยัง BigQuery โปรดดูหัวข้อส่งออกข้อมูลโปรเจ็กต์ไปยัง BigQuery

  2. อัปเดตแอปของคุณเพื่อส่งรหัสผู้ใช้ไปยัง SDK ของ Google Analytics ทั้ง 2 รายการ และ Crashlytics SDK

    Swift

    Crashlytics.sharedInstance().setUserIdentifier("123456789");
    Analytics.setUserID("123456789");
    

    Objective-C

    CrashlyticsKit setUserIdentifier:@"123456789";
    FIRAnalytics setUserID:@"12345678 9";
    

    Java

    Crashlytics.setUserIdentifier("123456789");
    mFirebaseAnalytics.setUserId("123456789");
    
  3. เขียนคำค้นหาที่ใช้ช่องรหัสผู้ใช้เพื่อเข้าร่วมเหตุการณ์ใน ชุดข้อมูล Google Analytics ที่มีข้อขัดข้องในชุดข้อมูล Crashlytics

    ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสชุดและ IOS (แทนชื่อแพ็กเกจและ ANDROID)

    SELECT DISTINCT c.issue_id, a.geo.country, COUNT(DISTINCT c.user.id) as num_users_impacted
    FROM `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID` c
    INNER JOIN  `PROJECT_ID.analytics_TABLE_NAME.events_*` a on c.user.id = a.user_id
    WHERE
      c.issue_id = "ISSUE_ID"
      AND a._TABLE_SUFFIX BETWEEN '20190101'
      AND '20200101'
    GROUP BY
      c.issue_id,
      a.geo.country,
      c.user.id

ตัวอย่างที่ 8: 5 ประเด็นแรกนับตั้งแต่วันนี้

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสกลุ่มและ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM
  `PROJECT_ID.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 รวมถึงวันนี้

นอกจากนี้ คุณยังรวมตารางกลุ่มและตารางแบบเรียลไทม์เข้ากับการค้นหาการต่อข้อมูลเพื่อเพิ่มข้อมูลแบบเรียลไทม์ลงในข้อมูลกลุ่มที่เชื่อถือได้ได้ด้วย เนื่องจาก event_id เป็นประเทศหลัก คุณสามารถใช้ DISTINCT event_id เพื่อกรองข้อมูลเหตุการณ์ทั่วไปที่ซ้ำกันจากทั้ง 2 เหตุการณ์ ตาราง

ต่อไปนี้คือตัวอย่างการค้นหาสำหรับแอป Android สำหรับแอป iOS ให้ใช้รหัสกลุ่มและ IOS (แทนชื่อแพ็กเกจและ ANDROID)

SELECT
  issue_id,
  COUNT(DISTINCT event_id) AS events
FROM (
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID_REALTIME`
  UNION ALL
  SELECT
    issue_id,
    event_id,
    event_timestamp
  FROM
    `PROJECT_ID.firebase_crashlytics.PACKAGE_NAME_ANDROID`)
WHERE
  event_timestamp >= "YYYY_MM_DD"
GROUP BY
  issue_id
ORDER BY
  events DESC
LIMIT
  5;

ทำความเข้าใจสคีมา Crashlytics ใน BigQuery

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

จากจุดนั้นจนกว่าคุณจะปิดใช้งานการส่งออก Firebase จะส่งออก Crashlytics กิจกรรมทุกวัน อาจใช้เวลา 2-3 นาทีสำหรับข้อมูล เพื่อให้พร้อมใช้งานใน BigQuery หลังการส่งออกแต่ละครั้ง

ชุดข้อมูล

Crashlytics สร้างชุดข้อมูลใหม่ใน BigQuery สําหรับข้อมูล Crashlytics ชุดข้อมูลจะครอบคลุมทั้งโปรเจ็กต์ แม้ว่าจะมีแอปหลายแอปก็ตาม

ตาราง

Crashlytics จะสร้างตารางในชุดข้อมูลสําหรับแต่ละแอปในโปรเจ็กต์ เว้นแต่คุณจะเลือกไม่ส่งออกข้อมูลสําหรับแอปนั้น Firebase จะตั้งชื่อตารางตามตัวระบุของแอป โดยแปลงเครื่องหมายจุดเป็นขีดล่าง และใส่ชื่อแพลตฟอร์มต่อท้าย

เช่น ข้อมูลสําหรับแอป Android ที่มีชื่อแพ็กเกจ com.google.test จะอยู่ในตารางชื่อ com_google_test_ANDROID และข้อมูลแบบเรียลไทม์ (หากเปิดใช้) จะอยู่ในตารางชื่อ com_google_test_ANDROID_REALTIME

ตารางมีชุดข้อมูล Crashlytics มาตรฐานนอกเหนือจาก คีย์ Crashlytics ที่กำหนดเอง ซึ่งคุณกำหนดไว้ในแอป

แถว

แต่ละแถวในตารางแสดงข้อผิดพลาดที่แอปพบ

คอลัมน์

คอลัมน์ในตารางจะเหมือนกันสำหรับข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR ถ้า เปิดใช้การส่งออกแบบสตรีม Crashlytics ไปยัง BigQuery แล้ว จากนั้น ตารางแบบเรียลไทม์จะมีคอลัมน์เดียวกับตารางกลุ่ม โปรดทราบว่าคุณอาจ มีคอลัมน์ในแถวที่แสดงเหตุการณ์ที่ไม่มีสแต็กเทรซ

คอลัมน์ภายในการส่งออกแสดงรายการอยู่ในตารางนี้

ชื่อช่อง ประเภทข้อมูล คำอธิบาย
platform STRING แพลตฟอร์มของแอปตามที่ลงทะเบียนไว้ในโปรเจ็กต์ Firebase (ค่าที่ถูกต้อง: IOS หรือ ANDROID)
bundle_identifier STRING ตัวระบุที่ไม่ซ้ำกันสำหรับแอปตามที่ลงทะเบียนไว้ในโปรเจ็กต์ Firebase (เช่น com.google.gmail)
สำหรับแอปแพลตฟอร์ม Apple นี่คือรหัสชุดของแอป
สําหรับแอป Android นี่คือชื่อแพ็กเกจของแอป
event_id STRING รหัสที่ไม่ซ้ำกันสำหรับเหตุการณ์
is_fatal BOOLEAN แอปขัดข้องหรือไม่
error_type STRING ประเภทข้อผิดพลาดของเหตุการณ์ (เช่น FATAL NON_FATAL, ANR ฯลฯ)
issue_id STRING ปัญหาที่เชื่อมโยงกับเหตุการณ์
variant_id STRING ตัวแปรปัญหาที่เชื่อมโยงกับเหตุการณ์นี้
โปรดทราบว่าเหตุการณ์บางรายการอาจไม่มีตัวแปรปัญหาที่เชื่อมโยง
event_timestamp การประทับเวลา เวลาที่เกิดเหตุการณ์
device RECORD อุปกรณ์ที่เกิดเหตุการณ์
device.manufacturer STRING ผู้ผลิตอุปกรณ์
device.model STRING รุ่นอุปกรณ์
device.architecture STRING เช่น X86_32, X86_64, ARMV7 ARM64, ARMV7S หรือ ARMV7K
memory RECORD สถานะหน่วยความจำของอุปกรณ์
memory.used INT64 จำนวนไบต์ของหน่วยความจำที่ใช้
memory.free INT64 จำนวนไบต์ของหน่วยความจำที่เหลือ
storage RECORD พื้นที่เก็บข้อมูลถาวรของอุปกรณ์
storage.used INT64 จำนวนไบต์ของพื้นที่เก็บข้อมูลที่ใช้
storage.free INT64 จำนวนไบต์ของพื้นที่เก็บข้อมูลที่เหลือ
operating_system RECORD รายละเอียดของระบบปฏิบัติการในอุปกรณ์
operating_system.display_version STRING เวอร์ชันของระบบปฏิบัติการในอุปกรณ์
operating_system.name STRING ชื่อระบบปฏิบัติการในอุปกรณ์
operating_system.modification_state STRING อุปกรณ์ได้รับการแก้ไขหรือไม่ (ตัวอย่างเช่น แอปที่เจลเบรคแล้วคือ MODIFIED และแอปที่รูท UNMODIFIED)
operating_system.type STRING (แอปของ Apple เท่านั้น) ประเภทของระบบปฏิบัติการในอุปกรณ์ (เช่น IOS, MACOS ฯลฯ)
operating_system.device_type STRING ประเภทอุปกรณ์ (เช่น MOBILE, TABLET, TV ฯลฯ) หรือที่เรียกว่า "หมวดหมู่อุปกรณ์"
application RECORD แอปที่สร้างเหตุการณ์
application.build_version STRING เวอร์ชันบิลด์ของแอป
application.display_version STRING
user RECORD (ไม่บังคับ) ข้อมูลที่เก็บรวบรวมเกี่ยวกับผู้ใช้แอป
user.name STRING (ไม่บังคับ) ชื่อผู้ใช้
user.email STRING (ไม่บังคับ) อีเมลของผู้ใช้
user.id STRING (ไม่บังคับ) รหัสเฉพาะแอปที่เชื่อมโยงกับผู้ใช้
custom_keys RECORD ซ้ำ คู่คีย์-ค่าที่นักพัฒนาแอปกำหนด
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 ฯลฯ
device_orientation STRING เช่น PORTRAIT, LANDSCAPE FACE_UP, FACE_DOWN ฯลฯ
process_state STRING BACKGROUND หรือ FOREGROUND
logs บันทึกซ้ำ ข้อความบันทึกที่มีการประทับเวลาซึ่งสร้างโดยCrashlytics Logger หากเปิดใช้
logs.timestamp การประทับเวลา เวลาที่สร้างบันทึก
logs.message STRING ข้อความที่บันทึก
breadcrumbs RECORD ซ้ำ Google Analyticsเบรดครัมบ์ที่มีการประทับเวลา หากเปิดใช้
breadcrumbs.timestamp การประทับเวลา การประทับเวลาที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.name STRING ชื่อที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params บันทึกซ้ำ พารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params.key STRING คีย์พารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params.value STRING ค่าพารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
blame_frame 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 ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือไม่ หรือข้อผิดพลาด
exceptions บันทึกซ้ำ (Android เท่านั้น) ข้อยกเว้นที่เกิดขึ้นระหว่างเหตุการณ์นี้ ซ้อนอยู่ ข้อยกเว้นจะแสดงตามลำดับเวลาย้อนกลับ ซึ่งหมายความว่า ระเบียนสุดท้ายเป็นข้อยกเว้นครั้งแรก
exceptions.type STRING ประเภทข้อยกเว้น (เช่น java.lang.IllegalStateException)
exceptions.exception_message STRING ข้อความที่เชื่อมโยงกับข้อยกเว้น
exceptions.nested BOOLEAN จริง ยกเว้นข้อยกเว้นสุดท้าย (หมายถึงระเบียนแรก)
exceptions.title STRING ชื่อชุดข้อความ
exceptions.subtitle STRING คำบรรยายของชุดข้อความ
exceptions.blamed BOOLEAN เป็นจริงหาก Crashlytics ระบุว่าข้อยกเว้นเป็นผู้รับผิดชอบต่อ ข้อผิดพลาดหรือข้อขัดข้อง
exceptions.frames บันทึกซ้ำ เฟรมที่เชื่อมโยงกับข้อยกเว้น
exceptions.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
exceptions.frames.file STRING ชื่อไฟล์เฟรม
exceptions.frames.symbol STRING สัญลักษณ์น้ำหรือสัญลักษณ์ข้อมูลดิบหากไม่สามารถให้น้ำ
exceptions.frames.offset INT64 ไบต์ออฟเซ็ตในอิมเมจไบนารีที่มีโค้ด
ยกเลิกการตั้งค่าสำหรับข้อยกเว้น Java
exceptions.frames.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีรหัส
ยกเลิกการตั้งค่าเฟรม Java
exceptions.frames.library STRING ชื่อที่แสดงของคลังที่มีเฟรม
exceptions.frames.owner STRING เช่น DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
exceptions.frames.blamed BOOLEAN Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือไม่ หรือข้อผิดพลาด
error บันทึกซ้ำ (แอปของ Apple เท่านั้น) ข้อผิดพลาดที่ไม่ร้ายแรง
error.queue_name STRING คิวที่ชุดข้อความทำงานอยู่
error.code INT64 รหัสข้อผิดพลาดที่เชื่อมโยงกับ NSError ที่บันทึกไว้เองของแอป
error.title STRING ชื่อชุดข้อความ
error.subtitle 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 พิจารณาแล้วว่าเฟรมนี้เป็นสาเหตุของ ข้อผิดพลาด
threads บันทึกซ้ำ เทรดที่แสดงอยู่ ณ เวลาที่เกิดเหตุการณ์
threads.crashed BOOLEAN ชุดข้อความขัดข้องหรือไม่
threads.thread_name STRING ชื่อชุดข้อความ
threads.queue_name STRING (แอปของ Apple เท่านั้น) คิวที่ชุดข้อความทำงานอยู่
threads.signal_name STRING ชื่อของสัญญาณที่ทำให้แอปขัดข้อง ซึ่งแสดงในข้อขัดข้องเท่านั้น ชุดข้อความแบบเนทีฟ
threads.signal_code STRING รหัสของสัญญาณที่ทำให้แอปขัดข้อง ซึ่งจะแสดงเฉพาะในเธรดเนทีฟที่ขัดข้อง
threads.crash_address INT64 ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง แสดงเฉพาะในเธรดเนทีฟที่ขัดข้อง
threads.code INT64 (แอป Apple เท่านั้น) รหัสข้อผิดพลาดของ NSError ที่บันทึกไว้เองของแอปพลิเคชัน
threads.title STRING ชื่อชุดข้อความ
threads.subtitle STRING คำบรรยายของชุดข้อความ
threads.blamed BOOLEAN Crashlytics ระบุว่าเฟรมนี้เป็นสาเหตุของข้อขัดข้องหรือไม่ หรือข้อผิดพลาด
threads.frames บันทึกซ้ำ เฟรมของชุดข้อความ
threads.frames.line INT64 หมายเลขบรรทัดของไฟล์ของเฟรม
threads.frames.file STRING ชื่อไฟล์เฟรม
threads.frames.symbol STRING สัญลักษณ์น้ำหรือสัญลักษณ์ข้อมูลดิบหากไม่สามารถให้น้ำ
threads.frames.offset INT64 การเลื่อนไบต์ในรูปภาพไบนารีที่มีโค้ด
threads.frames.address INT64 ที่อยู่ในรูปภาพไบนารีซึ่งมีรหัส
threads.frames.library STRING ชื่อที่แสดงของคลังที่มีเฟรม
threads.frames.owner STRING เช่น DEVELOPER, VENDOR, RUNTIME, PLATFORM หรือ SYSTEM
threads.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 ระดับ Shader ของกราฟิก
unity_metadata.graphics_render_target_count INT64 จำนวนเป้าหมายการแสดงผลแบบกราฟิก
unity_metadata.graphics_copy_texture_support STRING สนับสนุนการคัดลอกพื้นผิวกราฟิกตามที่ระบุไว้ใน API ของ Unity
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ไปยัง BigQuery คุณจะดูข้อมูลดังกล่าวได้ในหน้าแนวโน้มแบบเรียลไทม์ของเทมเพลต Data Studio คุณสามารถใช้ตัวอย่างเป็นเทมเพลตเพื่อสร้างรายงานและการแสดงภาพใหม่โดยอิงตามข้อมูลข้อขัดข้องดิบของแอปของคุณเองได้อย่างรวดเร็ว ดังนี้

  1. เปิด Crashlytics เทมเพลตแดชบอร์ด Data Studio

  2. คลิกใช้เทมเพลตที่มุมขวาบน

  3. ในเมนูแบบเลื่อนลงแหล่งข้อมูลใหม่ ให้เลือกสร้างแหล่งข้อมูลใหม่

  4. คลิกเลือกในการ์ด BigQuery

  5. เลือกตารางที่มีข้อมูล Crashlytics ที่ส่งออกโดยเลือกโปรเจ็กต์ของฉัน > PROJECT_ID > firebase_crashlytics > TABLE_NAME

    ตารางกลุ่มของคุณจะพร้อมเลือกเสมอ ถ้า มีการเปิดใช้การส่งออกแบบสตรีม Crashlytics ไปยัง BigQuery จากนั้นคุณจะ เลือกตารางแบบเรียลไทม์แทนได้

  6. ในส่วนการกําหนดค่า ให้ตั้งค่าCrashlytics ระดับเทมเพลตเป็นค่าเริ่มต้น

  7. คลิกเชื่อมต่อเพื่อสร้างแหล่งข้อมูลใหม่

  8. คลิกเพิ่มลงในรายงานเพื่อกลับไปยังเทมเพลต Crashlytics

  9. สุดท้าย ให้คลิกสร้างรายงานเพื่อสร้างสําเนาCrashlytics เทมเพลตแดชบอร์ด Data Studio