Firebase is back at Google I/O on May 10! Register now

ส่งออกข้อมูลการตรวจสอบประสิทธิภาพไปยัง BigQuery

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

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

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

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

  2. ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้ BigQuery

    เมื่อคุณเปิดใช้งานการส่งออก BigQuery สำหรับการตรวจสอบประสิทธิภาพ สิ่งต่อไปนี้จะเกิดขึ้น:

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

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

    • Firebase ตั้งค่าการซิงค์ข้อมูลจากโปรเจ็กต์ Firebase ไปยัง BigQuery เป็นประจำ การดำเนินการส่งออกรายวันเหล่านี้มักจะเสร็จสิ้นภายใน 24 ชั่วโมงหลังจากกำหนดเวลา

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

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

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

สำหรับแต่ละแอปในโปรเจ็กต์ การส่งออกจะสร้างตารางที่มีเหตุการณ์ประสิทธิภาพที่บันทึกทั้งหมด แต่ละแถวในตารางเป็นเหตุการณ์ประสิทธิภาพเดียวที่สามารถเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

  • การติดตามระยะเวลา — การติดตามที่รวบรวมโดยค่าเริ่มต้น ตัววัดของ "ระยะเวลา" ซึ่งรวมถึงการเริ่มต้นแอป แอปในพื้นหน้า และแอปในพื้นหลัง ตลอดจนการติดตามโค้ดที่กำหนดเองซึ่งนักพัฒนาซอฟต์แวร์เป็นผู้ติดตั้ง

    • event_type คือ DURATION_TRACE
    • event_name เหมือนกับชื่อการติดตาม
  • Trace metric — เมตริกแบบกำหนดเองที่เกี่ยวข้องกับการติดตามโค้ดแบบกำหนดเองที่พัฒนาโดยผู้พัฒนา

    • event_type คือ TRACE_METRIC
    • event_name คือชื่อของเมตริก
    • parent_trace_name คือชื่อการติดตามที่มีเมทริกนี้
  • ร่องรอยหน้าจอ — ร่องรอยที่ครอบคลุมตลอดอายุการใช้งานของหน้าจอ (ร่องรอยการแสดงผลหน้าจอ)

    • event_type คือ SCREEN_TRACE
    • event_name คือคำนำหน้า _st_ บวกกับชื่อหน้าจอจริง
  • คำขอเครือข่าย — การติดตามที่ครอบคลุมตลอดอายุของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)

    • event_type คือ NETWORK_REQUEST
    • event_name คือรูปแบบการจัดหมวดหมู่ของ URL คำขอเครือข่าย

เหตุการณ์ประสิทธิภาพแต่ละรายการมีแอตทริบิวต์ของเหตุการณ์ (เช่น ประเทศและผู้ให้บริการอุปกรณ์ไคลเอนต์) รวมถึงข้อมูลเฉพาะของเหตุการณ์:

  • การติดตามระยะเวลา เมตริกการติดตาม และการติดตามหน้าจอประกอบด้วย trace_info
  • เมตริกการติดตามประกอบด้วย trace_info.metric_info
  • การติดตามหน้าจอประกอบด้วย trace_info.screen_info
  • การติดตามเครือข่ายประกอบด้วย network_info

สคีมาข้อมูลโดยละเอียด

ชื่อฟิลด์ พิมพ์ คำอธิบาย
เหตุการณ์_timestamp การประทับเวลา การประทับเวลาตั้งแต่ Epoch เมื่อเหตุการณ์เริ่มต้นบนอุปกรณ์ไคลเอนต์ (การเริ่มการติดตาม การเริ่มต้นเครือข่าย ฯลฯ)
app_display_version สตริง เวอร์ชันที่แสดงของแอปพลิเคชัน (เช่น "4.1.7")
  • สำหรับ Android — VersionName
  • สำหรับ iOS — CFBundleShortVersionString
app_build_version สตริง รุ่นบิลด์ของแอปพลิเคชัน (เช่น "1523456")
  • สำหรับ Android — VersionCode
  • สำหรับ iOS — CFBundleVersion
os_version สตริง เวอร์ชันระบบปฏิบัติการของอุปกรณ์ไคลเอ็นต์
  • สำหรับ Android — ระดับ Android API (เช่น "26")
  • สำหรับ iOS — เวอร์ชัน iOS (เช่น "11.4")
ชื่ออุปกรณ์ สตริง ชื่ออุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel")
ประเทศ สตริง รหัสประเทศ 2 ตัวอักษรของประเทศที่จัดงาน (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการ สตริง ผู้ให้บริการอุปกรณ์ไคลเอนต์
radio_type สตริง ประเภทวิทยุที่ใช้งานเมื่อเหตุการณ์เกิดขึ้น (เช่น "WIFI")
custom_attributes อาร์เรย์<บันทึก> แอตทริบิวต์ที่กำหนดเองทั้งหมดที่แนบมากับกิจกรรมนี้
custom_attributes.key สตริง คีย์ของแอตทริบิวต์ที่กำหนดเอง
custom_attributes.value สตริง ค่าของแอตทริบิวต์ที่กำหนดเอง
เหตุการณ์_ประเภท สตริง ประเภทของเหตุการณ์ ค่าที่เป็นไปได้:
  • DURATION_TRACE — การติดตามที่รวบรวมโดยค่าเริ่มต้น เมตริกของ "ระยะเวลา" ซึ่งรวมถึงการเริ่มต้นแอป แอปในพื้นหน้า และแอปในพื้นหลัง ตลอดจนการติดตามโค้ดที่กำหนดเองโดยนักพัฒนาซอฟต์แวร์
  • SCREEN_TRACE — การติดตามตลอดอายุการใช้งานของหน้าจอ (การติดตามการแสดงผลหน้าจอ)
  • TRACE_METRIC — เมตริกแบบกำหนดเองที่เชื่อมโยงกับการติดตามโค้ดแบบกำหนดเองที่ผู้พัฒนาสร้างขึ้น
  • NETWORK_REQUEST — การติดตามตลอดอายุการใช้งานของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
เหตุการณ์_ชื่อ สตริง ชื่องาน
  • สำหรับ DURATION_TRACE — ชื่อการติดตาม
  • สำหรับ TRACE_METRIC — ชื่อเมตริกที่กำหนดเอง
  • สำหรับ SCREEN_TRACE_st_ ตามด้วยชื่อการติดตาม
  • สำหรับ NETWORK_REQUEST — รูปแบบ URL คำขอเครือข่าย
parent_trace_name สตริง ชื่อของพาเรนต์เทรซที่มีเมตริกการติดตาม
แสดงเฉพาะสำหรับ TRACE_METRIC
trace_info บันทึก แสดงเฉพาะสำหรับ DURATION_TRACE , SCREEN_TRACE และ TRACE_METRIC
trace_info.duration_us int64
  • สำหรับ DURATION_TRACE และ SCREEN_TRACE — ระยะเวลา ("ระยะเวลา") จากจุดเริ่มต้นถึงจุดสิ้นสุดของการติดตาม
  • สำหรับ TRACE_METRIC — ระยะเวลา ("ระยะเวลา") จากจุดเริ่มต้นถึงจุดสิ้นสุดของการติดตามพาเรนต์
หน่วย: ไมโครวินาที
trace_info.screen_info บันทึก แสดงเฉพาะสำหรับ SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio float64 อัตราส่วนของเฟรมที่ช้าสำหรับการติดตามหน้าจอนี้ ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายความว่า 5% ของเฟรมสำหรับอินสแตนซ์หน้าจอนี้ใช้เวลาแสดงผลมากกว่า 16 มิลลิวินาที)
trace_info.screen_info.frozen_frame_ratio float64 อัตราส่วนของเฟรมที่ค้างสำหรับการติดตามหน้าจอนี้ ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายความว่า 5% ของเฟรมสำหรับอินสแตนซ์หน้าจอนี้ใช้เวลาแสดงผลมากกว่า 700 มิลลิวินาที)
trace_info.metric_info บันทึก แสดงเฉพาะสำหรับ TRACE_METRIC
trace_info.metric_info.metric_value int64 ค่าของเมตริกการติดตาม
network_info บันทึก แสดงเฉพาะสำหรับ NETWORK_REQUEST
network_info.response_code int64 รหัสการตอบสนอง HTTP สำหรับการตอบกลับเครือข่าย (เช่น 200, 404)
network_info.response_mime_type สตริง ประเภท MIME ของการตอบสนองเครือข่าย (เช่น "text/html")
network_info.request_http_method สตริง วิธีการ HTTP ของคำขอเครือข่าย (เช่น "GET" หรือ "POST")
network_info.request_payload_bytes int64 ขนาดของเพย์โหลดคำขอเครือข่าย
หน่วย: ไบต์
network_info.response_payload_bytes int64 ขนาดของเพย์โหลดการตอบสนองของเครือข่าย
หน่วย: ไบต์
network_info.request_completed_time_us int64 ไมโครวินาทีหลังจาก event_timestamp เมื่อการส่งคำขอเครือข่ายเสร็จสมบูรณ์
หน่วย: ไมโครวินาที
network_info.response_initiated_time_us int64 ไมโครวินาทีหลังจาก event_timestamp เมื่อการตอบสนองของเครือข่ายเริ่มต้นขึ้น
หน่วย: ไมโครวินาที
network_info.response_completed_time_us int64 ไมโครวินาทีหลังจาก event_timestamp เมื่อการตอบสนองของเครือข่ายเสร็จสิ้น
หน่วย: ไมโครวินาที

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

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

ดูรายละเอียดเวลาแฝงในการเริ่มต้นแอปโดยเฉลี่ยตามประเทศ

SELECT AVG(trace_info.duration_us), country
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "DURATION_TRACE"
AND event_name = "_app_start"
GROUP BY 2;

ตรวจสอบอัตราส่วนของเฟรมที่ค้างกับเงื่อนไขต่างๆ

ตัวอย่างเช่น คุณสามารถตรวจสอบอัตราส่วนของเฟรมที่ค้างควบคู่ไปกับระยะเวลาที่ผู้ใช้ใช้ในแต่ละหน้าจอของแอปเมื่อใช้วิทยุประเภทต่างๆ (WiFi, 4G เป็นต้น)

SELECT
  AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
  AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
  event_name,
  radio_type
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "SCREEN_TRACE"
GROUP BY event_name, radio_type
ORDER BY event_name, radio_type;

คำนวณอัตราการเข้าถึงแคชสำหรับการโหลดไฟล์บางประเภทจากดิสก์

การวิเคราะห์นี้ถือว่าคุณได้ใช้การติดตามโค้ดที่กำหนดเองสำหรับการโหลดจากดิสก์ด้วยแอตทริบิวต์ที่กำหนดเองชื่อ file-extension และเมตริกที่กำหนดเอง (a TRACE_METRIC ) ที่ชื่อ cache-hit ซึ่งตั้งค่าเป็น 1 หากพบแคช และ 0 หากไม่พบแคช

ตัวอย่างเช่น คุณสามารถคำนวณอัตราการเข้าชมแคชสำหรับการโหลดไฟล์ PNG จากดิสก์:

SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "TRACE_METRIC"
AND event_name = "cache-hit"
AND parent_trace_name = "loadFromDisk"
AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);

ตรวจสอบเวลาของวันที่ผู้ใช้ออกคำขอเครือข่าย

ตัวอย่างเช่น คุณสามารถตรวจสอบได้ว่าผู้ใช้จากแอปของคุณส่งปัญหาเกี่ยวกับเครือข่ายในเวลาใดของวันจากสหรัฐอเมริกา:

SELECT
  count(1) AS hourly_count,
  EXTRACT(HOUR FROM event_timestamp) AS hour_of_day
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "NETWORK_REQUEST"
AND country = "US"
GROUP BY 2 ORDER BY 2;

นำข้อมูลการตรวจสอบประสิทธิภาพของคุณไปใช้ได้ทุกที่

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

คุณสามารถส่งออกข้อมูลของคุณโดย:

  • การใช้เว็บ UI ของ BigQuery

  • เรียกใช้คำสั่ง CLI bq extract

  • การส่ง งานแยก ผ่าน API หรือไคลเอนต์ไลบรารี

ราคา

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