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

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

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

  1. ในFirebaseคอนโซล ให้ไปที่ หน้าการผสานรวม

  2. คลิกลิงก์ในการ์ด BigQuery

  3. ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้การส่งออกไปยัง BigQuery

    หากต้องการเข้าถึงข้อมูล Crashlytics แบบเกือบเรียลไทม์ใน BigQuery โปรดพิจารณาอัปเกรดเป็นการส่งออกแบบสตรีม

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

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

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

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

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

    • หลังจากลิงก์โปรเจ็กต์แล้ว โดยปกติคุณจะต้องรอจนกว่าจะถึงการซิงค์ในวันถัดไป จึงจะส่งออกชุดข้อมูลแรกไปยัง BigQuery ได้

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

  • Firebase ส่งออกสำเนาข้อมูลที่มีอยู่ ไปยัง BigQuery การเผยแพร่ข้อมูลเริ่มต้นสำหรับการส่งออกอาจใช้เวลาถึง 48 ชั่วโมง

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

    • คุณสามารถกำหนดเวลาการป้อนข้อมูลย้อนหลังด้วยตนเอง สำหรับตารางกลุ่มได้ย้อนหลังสูงสุด 30 วัน หรือสำหรับวันที่ล่าสุด เมื่อเปิดใช้การส่งออกไปยัง BigQuery (แล้วแต่ว่าวันที่ใดล่าสุด)

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

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

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

ระบบจะส่งออกข้อมูลใดไปยัง BigQuery

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

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

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

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

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

เมื่อเปิดใช้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

สร้างมุมมอง

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

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

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

ตัวอย่างที่ 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 อันดับแรกในแอปของคุณ คุณสร้างคําค้นหาที่ให้จุดข้อมูลที่เกี่ยวข้อง

นี่คือตัวอย่างการค้นหาสำหรับแอป 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: การแยก User-ID

คุณมีแอป 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. อัปเดตแอปเพื่อส่งรหัสผู้ใช้ไปยังทั้ง Google Analytics SDK และ 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 ตาราง เรียลไทม์จะมีคอลัมน์เหมือนกับตารางแบบกลุ่ม โปรดทราบว่าคุณอาจ มีคอลัมน์ในแถวที่แสดงเหตุการณ์ที่ไม่มี Stack Trace

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

ชื่อช่อง ประเภทข้อมูล คำอธิบาย
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 บันทึกซ้ำ คู่คีย์-ค่าที่นักพัฒนาแอปกำหนด
custom_keys.key STRING คีย์ที่นักพัฒนาแอปกำหนด
custom_keys.value STRING ค่าที่นักพัฒนาแอปกำหนด
installation_uuid STRING รหัสที่ระบุการติดตั้งแอปและอุปกรณ์ที่ไม่ซ้ำกัน
crashlytics_sdk_versions STRING Crashlytics เวอร์ชัน SDK ที่สร้างเหตุการณ์
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 บันทึกซ้ำ Google Analyticsเบรดครัมบ์ที่มีการประทับเวลา หากเปิดใช้
breadcrumbs.timestamp การประทับเวลา การประทับเวลาที่เชื่อมโยงกับ Breadcrumb
breadcrumbs.name STRING ชื่อที่เชื่อมโยงกับ Breadcrumb
breadcrumbs.params บันทึกซ้ำ พารามิเตอร์ที่เชื่อมโยงกับ Breadcrumb
breadcrumbs.params.key STRING คีย์พารามิเตอร์ที่เชื่อมโยงกับเส้นทาง
breadcrumbs.params.value STRING ค่าพารามิเตอร์ที่เชื่อมโยงกับ Breadcrumb
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 บันทึกซ้ำ เฟรมของ 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 เช่น 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 รองรับการคัดลอกพื้นผิวกราฟิกตามที่กำหนดไว้ใน 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 คุณสามารถใช้ตัวอย่างเป็นเทมเพลตเพื่อสร้างรายงานและการแสดงภาพใหม่ๆ ได้อย่างรวดเร็ว โดยอิงตามข้อมูลข้อขัดข้องดิบของแอปคุณเอง

  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



อัปเกรดเป็นโครงสร้างพื้นฐานการส่งออกใหม่

ในช่วงกลางเดือนตุลาคม 2024 Crashlytics ได้เปิดตัวโครงสร้างพื้นฐานใหม่สำหรับการส่งออกเป็นกลุ่ม ของข้อมูล Crashlytics ไปยัง BigQuery

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

คุณอัปเกรดเป็นโครงสร้างพื้นฐานใหม่ได้ แต่โปรดตรวจสอบว่าตารางกลุ่ม BigQuery เป็นไปตามข้อกำหนดเบื้องต้นสำหรับการอัปเกรด

ตรวจสอบว่าคุณใช้โครงสร้างพื้นฐานใหม่หรือไม่

หากคุณเปิดใช้การส่งออกเป็นกลุ่มในช่วงกลางเดือนตุลาคม 2024 หรือหลังจากนั้น โปรเจ็กต์ Firebase จะใช้โครงสร้างพื้นฐานการส่งออกใหม่โดยอัตโนมัติ

คุณสามารถตรวจสอบโครงสร้างพื้นฐานที่โปรเจ็กต์ใช้ได้โดยทำดังนี้ ไปที่Google Cloud คอนโซล และหาก"การกำหนดค่าการโอนข้อมูล" มีป้ายกำกับเป็น Firebase Crashlytics with Multi-Region Support แสดงว่าโปรเจ็กต์ใช้โครงสร้างพื้นฐานการส่งออกใหม่

ความแตกต่างที่สำคัญระหว่างโครงสร้างพื้นฐานการส่งออกแบบเก่ากับโครงสร้างพื้นฐานการส่งออกแบบใหม่

  • โครงสร้างพื้นฐานใหม่รองรับCrashlyticsตำแหน่งชุดข้อมูลนอก สหรัฐอเมริกา

    • เปิดใช้การส่งออกก่อนช่วงกลางเดือนตุลาคม 2024 และอัปเกรดเป็นโครงสร้างพื้นฐานการส่งออกใหม่ - ตอนนี้คุณสามารถเปลี่ยนตำแหน่งสำหรับการส่งออกข้อมูลได้แล้ว (ไม่บังคับ)

    • เปิดใช้การส่งออกในช่วงกลางเดือนตุลาคม 2024 หรือหลังจากนั้น - ระบบแจ้งให้คุณเลือกตำแหน่งสำหรับการส่งออกข้อมูลในระหว่างการตั้งค่า

  • โครงสร้างพื้นฐานใหม่ไม่รองรับการเติมข้อมูลย้อนหลังก่อนที่คุณเปิดใช้การส่งออก

    • โครงสร้างพื้นฐานเดิมรองรับการเติมเต็มย้อนหลังได้สูงสุด 30 วันก่อนวันที่คุณเปิดใช้การส่งออก

    • โครงสร้างพื้นฐานใหม่รองรับการเติมเต็ม ย้อนหลังได้สูงสุด 30 วัน หรือวันที่ล่าสุดเมื่อคุณเปิดใช้การส่งออก ไปยัง BigQuery (แล้วแต่ว่าวันที่ใดล่าสุด)

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

    • โครงสร้างพื้นฐานเดิมจะเขียนข้อมูลลงในตารางกลุ่มที่มีชื่อตาม รหัสแพ็กเกจหรือชื่อแพ็กเกจ ในการกำหนดค่า Firebase ในโค้ดเบสของแอป

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

ขั้นตอนที่ 1: ข้อกำหนดเบื้องต้นสำหรับการอัปเกรด

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

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

    • คุณดูตารางกลุ่ม BigQuery ทั้งหมดได้ใน BigQuery หน้า ของคอนโซล Google Cloud

    ตัวอย่างเช่น สถานะที่เหมาะสมซึ่งคุณจะไม่มีปัญหาในการอัปเกรดมีดังนี้

    • คุณมีตารางกลุ่มชื่อ com_yourcompany_yourproject_IOS และแอป Firebase iOS+ ที่มี Bundle ID com.yourcompany.yourproject ซึ่งลงทะเบียนในโปรเจ็กต์ Firebase

    • คุณมีตารางกลุ่มชื่อ com_yourcompany_yourproject_ANDROID และ แอป Firebase บน Android ที่มีชื่อแพ็กเกจ com.yourcompany.yourproject ซึ่งลงทะเบียนในโปรเจ็กต์ Firebase

  2. หากคุณมีชื่อตารางกลุ่มที่ไม่ตรงกับ ตัวระบุที่ตั้งค่าไว้สำหรับแอป Firebase ที่ลงทะเบียน ให้ทำตามวิธีการ ในหน้านี้ในภายหลังก่อนที่จะอัปเกรดด้วยตนเองหรือ ก่อนวันที่ 15 กันยายน 2025 เพื่อไม่ให้การส่งออกกลุ่มหยุดชะงัก

ขั้นตอนที่ 2: อัปเกรดเป็นโครงสร้างพื้นฐานใหม่ด้วยตนเอง

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

ขั้นตอนโดยละเอียดมีดังนี้

  1. ในFirebaseคอนโซล ให้ไปที่ หน้าการผสานรวม

  2. คลิกจัดการในการ์ด BigQuery

  3. สลับแถบเลื่อน Crashlytics เป็นปิดเพื่อปิดใช้การส่งออก เมื่อได้รับข้อความแจ้ง ให้ยืนยันว่าคุณต้องการหยุดการส่งออกข้อมูล

  4. สลับCrashlyticsแถบเลื่อนเป็นเปิดอีกครั้งทันทีเพื่อเปิดใช้การส่งออกอีกครั้ง เมื่อได้รับข้อความแจ้ง ให้ยืนยันว่าต้องการส่งออกข้อมูล

    ตอนนี้การส่งออกข้อมูล Crashlytics ไปยัง BigQuery ใช้โครงสร้างพื้นฐานการส่งออกใหม่แล้ว

ชื่อตารางกลุ่มที่มีอยู่ไม่ตรงกับตัวระบุแอป Firebase