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

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

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

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

  2. ทำตามคำแนะนำบนหน้าจอเพื่อเปิดใช้ BigQuery

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

  • Firebase ส่งออกสำเนาของข้อมูลที่มีอยู่ของคุณ ไปยัง BigQuery

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

    • คุณยัง กำหนดเวลาการทดแทนข้อมูลด้วยตนเอง ได้สูงสุด 30 วันที่ผ่านมา

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

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

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

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

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

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

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

    • event_type คือ DURATION_TRACE
    • event_name เหมือนกับชื่อการติดตาม
  • ตัววัดการ ติดตาม — ตัววัดแบบกำหนดเองที่เชื่อมโยงกับการสืบค้นกลับของรหัสแบบกำหนดเองที่นักพัฒนาซอฟต์แวร์ใช้

    • event_type คือ TRACE_METRIC
    • event_name เป็นชื่อของ metric
    • 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

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

ชื่อสนาม พิมพ์ คำอธิบาย
event_timestamp การประทับเวลา การประทับเวลาตั้งแต่ Epoch เมื่อเหตุการณ์เริ่มต้นบนอุปกรณ์ไคลเอ็นต์ (การเริ่มติดตาม เริ่มเครือข่าย ฯลฯ)
app_display_version สตริง แสดงเวอร์ชันของแอปพลิเคชัน (เช่น "4.1.7")
  • สำหรับ Android — VersionName
  • สำหรับ iOS — CFBundleShortVersionString
app_build_version สตริง เวอร์ชันบิลด์ของแอปพลิเคชัน (เช่น "1523456")
  • สำหรับ Android — VersionCode
  • สำหรับ iOS — CFBundleVersion
os_version สตริง เวอร์ชัน OS ของอุปกรณ์ไคลเอ็นต์
  • สำหรับ Android — ระดับ Android API (เช่น "26")
  • สำหรับ iOS — เวอร์ชัน iOS (เช่น "11.4")
ชื่ออุปกรณ์ สตริง ชื่ออุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel")
ประเทศ สตริง รหัสประเทศสองตัวอักษรของประเทศที่เกิดเหตุการณ์ (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการ สตริง ผู้ให้บริการอุปกรณ์ไคลเอ็นต์
radio_type สตริง ประเภทวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "WIFI")
custom_attributes ARRAY<บันทึก> แอตทริบิวต์ที่กำหนดเองทั้งหมดที่แนบมากับกิจกรรมนี้
custom_attributes.key สตริง คีย์ของแอตทริบิวต์ที่กำหนดเอง
custom_attributes.value สตริง ค่าของแอตทริบิวต์ที่กำหนดเอง
event_type สตริง ประเภทของงาน; ค่าที่เป็นไปได้:
  • DURATION_TRACE — การติดตามที่รวบรวมเมตริกของ "duration" ตามค่าเริ่มต้น ซึ่งรวมถึงการเริ่มต้นแอป แอปในเบื้องหน้า และแอปในพื้นหลัง ตลอดจนการติดตามโค้ดที่กำหนดเองที่นักพัฒนาซอฟต์แวร์ใช้
  • SCREEN_TRACE — ร่องรอยที่ครอบคลุมอายุการใช้งานของหน้าจอ (ร่องรอยการเรนเดอร์หน้าจอ)
  • TRACE_METRIC — เมตริกที่กำหนดเองซึ่งเชื่อมโยงกับการติดตามโค้ดที่กำหนดเองที่นักพัฒนาซอฟต์แวร์ใช้
  • NETWORK_REQUEST — การติดตามที่ครอบคลุมอายุของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
event_name สตริง ชื่องาน
  • สำหรับ 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 — ระยะเวลา ("duration") จากจุดเริ่มต้นจนถึงจุดสิ้นสุดของการติดตาม
  • สำหรับ TRACE_METRIC — ระยะเวลา ("duration") ตั้งแต่ต้นจนจบของ parent trace
หน่วย: ไมโครวินาที
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 ขนาดของเพย์โหลดคำขอเครือข่าย
หน่วย: byte
network_info.response_payload_bytes int64 ขนาดของเพย์โหลดการตอบสนองของเครือข่าย
หน่วย: byte
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