ส่งออกข้อมูลการตรวจสอบประสิทธิภาพไปยัง 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 เหมือนกับชื่อการติดตาม
  • ตัววัดการติดตาม — ตัววัดแบบกำหนดเองที่เชื่อมโยงกับการติดตามโค้ดแบบกำหนดเองที่เครื่องมือของนักพัฒนา

    • 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

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

ชื่อฟิลด์ พิมพ์ คำอธิบาย
เหตุการณ์_ประทับเวลา การประทับเวลา การประทับเวลาตั้งแต่ยุคที่เหตุการณ์เริ่มต้นบนอุปกรณ์ไคลเอนต์ (การเริ่มต้นการติดตาม การเริ่มต้นเครือข่าย ฯลฯ)
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")
ประเทศ เชือก รหัสประเทศสองตัวอักษรของประเทศที่กิจกรรมเกิดขึ้น (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการ เชือก ผู้ให้บริการอุปกรณ์ไคลเอนต์
radio_type เชือก ประเภทวิทยุที่ใช้งานอยู่เมื่อเหตุการณ์เกิดขึ้น (เช่น "WIFI")
กำหนดเอง_แอตทริบิวต์ อาร์เรย์<บันทึก> แอตทริบิวต์ที่กำหนดเองทั้งหมดที่แนบมากับกิจกรรมนี้
custom_attributes.key เชือก คีย์ของแอตทริบิวต์ที่กำหนดเอง
custom_attributes.value เชือก ค่าของแอตทริบิวต์ที่กำหนดเอง
event_type เชือก ประเภทของงาน ค่าที่เป็นไปได้:
  • DURATION_TRACE — การติดตามที่รวบรวมตามค่าเริ่มต้นแล้ว ตัวชี้วัดของ "ระยะเวลา" ซึ่งรวมถึงการเริ่มต้นแอป แอปในเบื้องหน้า และแอปในเบื้องหลัง ตลอดจนการติดตามโค้ดที่กำหนดเองใดๆ ที่เครื่องมือของนักพัฒนา
  • SCREEN_TRACE — การติดตามที่ขยายอายุการใช้งานของหน้าจอ (การติดตามการเรนเดอร์หน้าจอ)
  • TRACE_METRIC — ตัวชี้วัดแบบกำหนดเองที่เชื่อมโยงกับการติดตามโค้ดแบบกำหนดเองที่พัฒนาโดยนักพัฒนา
  • NETWORK_REQUEST — การติดตามตลอดอายุการใช้งานของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
เหตุการณ์_ชื่อ เชือก ชื่อของกิจกรรม
  • เป็นเวลา DURATION_TRACE — ชื่อการติดตาม
  • สำหรับ TRACE_METRIC — ชื่อเมตริกที่กำหนดเอง
  • สำหรับ SCREEN_TRACE_st_ ตามด้วยชื่อการติดตาม
  • สำหรับ NETWORK_REQUEST - รูปแบบ URL คำขอเครือข่าย
parent_trace_name เชือก ชื่อของการติดตามพาเรนต์ที่มีเมทริกการติดตาม
นำเสนอสำหรับ TRACE_METRIC เท่านั้น
ติดตาม_ข้อมูล บันทึก นำเสนอเฉพาะในช่วง 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 ลอย64 อัตราส่วนของเฟรมที่ช้าสำหรับการติดตามหน้าจอนี้ ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายความว่า 5% ของเฟรมสำหรับอินสแตนซ์หน้าจอนี้ใช้เวลาในการแสดงผลมากกว่า 16 มิลลิวินาที)
Trace_info.screen_info.frozen_frame_ratio ลอย64 อัตราส่วนของเฟรมที่ค้างสำหรับการติดตามหน้าจอนี้ ระหว่าง 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 ของการตอบสนองของเครือข่าย (เช่น "ข้อความ/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 และตัววัดแบบกำหนดเอง ( 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