Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

  1. ไปที่ Integrations หน้า Firebase คอนโซลแล้วคลิกเชื่อมโยงในบัตร BigQuery

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

เมื่อคุณเชื่อมโยงโครงการของคุณกับ BiqQuery:

  • Firebase ส่งออกสำเนาของข้อมูลที่มีอยู่ เพื่อ BigQuery

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

    • นอกจากนี้คุณยังสามารถ ด้วยตนเองการเติมเต็มข้อมูลตารางเวลา ถึง 30 วันที่ผ่านมา

  • Firebase ตั้งค่าการซิงค์ข้อมูลรายวันจากโปรเจ็กต์ Firebase ไปยัง BigQuery

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

เพื่อยกเลิกการส่งออก BigQuery, ยกเลิกการเชื่อมโยงโครงการของคุณ ในคอนโซล Firebase

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

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

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

    • event_type เป็น DURATION_TRACE
    • event_name เป็นเช่นเดียวกับชื่อร่องรอย
  • ติดตามตัวชี้วัด - ตัวชี้วัดที่กำหนดเองที่มีความเกี่ยวข้องกับนักพัฒนา instrumented ร่องรอยรหัสที่กำหนดเอง

    • 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

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

ชื่อสนาม พิมพ์ คำอธิบาย
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 - ร่องรอยที่รวบรวมโดยค่าเริ่มต้นตัวชี้วัดของ "ระยะเวลา" ซึ่งรวมถึงการเริ่มต้นแอปแอปในเบื้องหน้าและ app ในพื้นหลังเช่นเดียวกับนักพัฒนา instrumented ร่องรอยรหัสที่กำหนดเอง
  • SCREEN_TRACE - ร่องรอยทอดอายุการใช้งานของหน้าจอที่ (ร่องรอยการแสดงผลบนหน้าจอ)
  • TRACE_METRIC ตัวชี้วัดที่กำหนดเองที่มีความเกี่ยวข้องกับนักพัฒนา instrumented ร่องรอยรหัสที่กำหนดเอง -
  • 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 - ความยาวของเวลา ( "ระยะเวลา") จากจุดเริ่มต้นถึงจุดสิ้นสุดของการตรวจสอบที่
  • สำหรับ 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 ขนาดของเพย์โหลดคำขอเครือข่าย
หน่วย: byte
network_info.response_payload_bytes int64 ขนาดของเพย์โหลดการตอบสนองของเครือข่าย
หน่วย: byte
network_info.request_completed_time_us int64 microseconds หลังจาก event_timestamp เมื่อคำขอของเครือข่ายการส่งเสร็จสมบูรณ์
หน่วย: ไมโครวินาที
network_info.response_initiated_time_us int64 microseconds หลังจาก event_timestamp เมื่อการตอบสนองของเครือข่ายจะเริ่ม
หน่วย: ไมโครวินาที
network_info.response_completed_time_us int64 microseconds หลังจาก 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;

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

การวิเคราะห์นี้อนุมานว่าคุณ instrumented ร่องรอยรหัสที่กำหนดเองสำหรับการโหลดจากดิสก์ที่มีแอตทริบิวต์ที่กำหนดเองชื่อ 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 กำหนดราคา หรือ Sandbox BigQuery