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

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

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

ชื่อช่อง ประเภทข้อมูล คำอธิบาย
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 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 RECORD ซ้ำ ข้อความบันทึกที่มีการประทับเวลาซึ่งสร้างโดยCrashlytics Logger หากเปิดใช้
logs.timestamp การประทับเวลา เวลาที่บันทึก
logs.message STRING ข้อความที่บันทึกไว้
breadcrumbs RECORD ซ้ำ Google Analyticsเบรดครัมบ์ที่มีการประทับเวลา หากเปิดใช้
breadcrumbs.timestamp การประทับเวลา การประทับเวลาที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.name STRING ชื่อที่เชื่อมโยงกับเบรดครัมบ์
breadcrumbs.params RECORD ซ้ำ พารามิเตอร์ที่เชื่อมโยงกับเบรดครัมบ์
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 RECORD ซ้ำ (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 RECORD ซ้ำ เฟรมที่เชื่อมโยงกับข้อยกเว้น
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 RECORD ซ้ำ (แอปของ Apple เท่านั้น) ข้อผิดพลาดที่ไม่ร้ายแรง
error.queue_name STRING คิวที่ชุดข้อความทำงานอยู่
error.code INT64 รหัสข้อผิดพลาดที่เชื่อมโยงกับ NSError ที่บันทึกไว้เองของแอป
error.title STRING ชื่อชุดข้อความ
error.subtitle STRING คำบรรยายของชุดข้อความ
error.blamed BOOLEAN Crashlytics พิจารณาว่าเฟรมนี้เป็นสาเหตุของข้อผิดพลาดหรือไม่
error.frames RECORD ซ้ำ เฟรมของสแต็กเทรซ
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 RECORD ซ้ำ เทรดที่แสดงอยู่ ณ เวลาที่เกิดเหตุการณ์
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 RECORD ซ้ำ เฟรมของชุดข้อความ
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 ขณะนี้ คุณจะอัปเกรดเป็นโครงสร้างพื้นฐานใหม่นี้หรือไม่ก็ได้

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

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

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

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

ข้อกําหนดเบื้องต้นในการอัปเกรด

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

เช่น

  • หากคุณมีตาราง BigQuery ที่มีชื่อว่า com_yourcompany_yourproject_IOS คุณควรมีแอป Firebase iOS+ ที่ลงทะเบียนในโปรเจ็กต์ Firebase ด้วยรหัสกลุ่ม com.yourcompany.yourproject

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

วิธีค้นหาแอป Firebase ทั้งหมดที่ลงทะเบียนไว้ในโปรเจ็กต์ Firebase มีดังนี้

  1. ในคอนโซล Firebase ให้ไปที่ การตั้งค่าโปรเจ็กต์

  2. เลื่อนลงไปที่การ์ดแอปของคุณ แล้วคลิกแอป Firebase ที่ต้องการเพื่อดูข้อมูลของแอป รวมถึงตัวระบุ

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

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

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

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

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

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

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

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

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