คุณสามารถส่งออกข้อมูล Performance Monitoring จากแอป Apple และ Android ไปยัง BigQuery เพื่อการวิเคราะห์เพิ่มเติมได้ BigQuery ช่วยให้คุณวิเคราะห์ข้อมูลโดยใช้ BigQuery SQL, ส่งออกไปยังผู้ให้บริการระบบคลาวด์รายอื่น และแม้แต่ใช้ข้อมูลสำหรับโมเดล ML ที่กําหนดเอง
เปิดใช้การส่งออก BigQuery
ไปที่หน้าการผสานรวมในคอนโซล Firebase แล้วคลิกลิงก์ในการ์ด BigQuery
ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้ BigQuery
เมื่อเปิดใช้การส่งออก BigQuery สำหรับ Performance Monitoring ระบบจะดำเนินการต่อไปนี้
Firebase จะส่งออกสําเนาข้อมูลที่มีอยู่ไปยัง BigQuery การนำไปใช้งานข้อมูลครั้งแรกสำหรับการส่งออกอาจใช้เวลาถึง 48 ชั่วโมงจึงจะเสร็จสมบูรณ์
- คุณสามารถกำหนดเวลาทดแทนข้อมูลด้วยตนเองย้อนหลังได้สูงสุด 30 วัน หรือสำหรับวันที่ล่าสุดที่คุณเปิดใช้การส่งออก BigQuery (แล้วแต่ว่าวันที่ใดจะล่าสุด)
หลังจากสร้างชุดข้อมูลแล้ว คุณจะเปลี่ยนแปลงตำแหน่งไม่ได้ แต่จะคัดลอกชุดข้อมูลไปยังตำแหน่งอื่นหรือย้าย (สร้างใหม่) ชุดข้อมูลไปยังตำแหน่งอื่นด้วยตนเองได้ ดูข้อมูลเพิ่มเติมที่หัวข้อเปลี่ยนตำแหน่งชุดข้อมูล
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
สคีมาข้อมูลโดยละเอียด
ชื่อช่อง | ประเภท | คำอธิบาย |
---|---|---|
event_timestamp | การประทับเวลา | การประทับเวลานับจากจุดเริ่มต้นเมื่อเหตุการณ์เริ่มขึ้นในอุปกรณ์ไคลเอ็นต์ (การเริ่มต้นการติดตาม เครือข่ายเริ่มต้น ฯลฯ) |
app_display_version | สตริง | แสดงเวอร์ชันของแอปพลิเคชัน (เช่น "4.1.7")
|
app_build_version | สตริง | เวอร์ชันบิลด์ของแอปพลิเคชัน (เช่น "1523456")
|
os_version | สตริง | เวอร์ชันระบบปฏิบัติการของอุปกรณ์ไคลเอ็นต์
|
device_name | สตริง | ชื่ออุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel") |
country | สตริง | รหัสประเทศแบบ 2 ตัวอักษรของประเทศที่เกิดเหตุการณ์ (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก) |
ผู้ให้บริการ | สตริง | ผู้ให้บริการของอุปกรณ์ไคลเอ็นต์ |
radio_type | สตริง | ประเภทสัญญาณวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "Wi-Fi") |
custom_attributes | ARRAY<RECORD> | แอตทริบิวต์ที่กําหนดเองทั้งหมดที่แนบมากับเหตุการณ์นี้ |
custom_attributes.key | สตริง | คีย์ของแอตทริบิวต์ที่กำหนดเอง |
custom_attributes.value | สตริง | ค่าของแอตทริบิวต์ที่กำหนดเอง |
event_type | สตริง | ประเภทของเหตุการณ์ โดยค่าที่เป็นไปได้มีดังนี้
|
event_name | สตริง | ชื่อเหตุการณ์
|
parent_trace_name | สตริง | ชื่อของร่องรอยหลักที่มีเมตริกการติดตาม แสดงสําหรับ TRACE_METRIC เท่านั้น |
trace_info | RECORD | มีเฉพาะใน DURATION_TRACE ,
SCREEN_TRACE และ TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | แสดงสำหรับ 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 | RECORD | แสดงสำหรับ TRACE_METRIC เท่านั้น |
trace_info.metric_info.metric_value | int64 | ค่าของเมตริกการติดตาม |
network_info | RECORD | แสดงสำหรับ 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 กับข้อมูล Performance Monitoring ที่ส่งออก
จับคู่ข้อมูลที่เห็นในคอนโซล
แดชบอร์ด Firebase จะรวบรวมข้อมูลรายวันในเขตเวลา America/Los_Angeles
ฟังก์ชันวันที่ควรตั้งค่าเขตเวลาเป็น America/Los_Angeles
อย่างชัดเจนเพื่อให้ตรงกับสิ่งที่เห็นในคอนโซล ไม่เช่นนั้นฟังก์ชันวันที่จะใช้ UTC เป็นค่าเริ่มต้น
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
ดูรายละเอียดเวลาในการตอบสนองโดยเฉลี่ยของการเปิดแอปตามประเทศ
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;
ตรวจสอบอัตราส่วนของเฟรมที่ค้างกับเงื่อนไขต่างๆ
เช่น คุณสามารถตรวจสอบอัตราส่วนของเฟรมที่หยุดค้างไว้พร้อมกับระยะเวลาที่ผู้ใช้ใช้ในการดูแต่ละหน้าจอของแอปเมื่อใช้เครือข่ายประเภทต่างๆ (Wi-Fi, 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 ของแคชการประมวลผลสําหรับการโหลดไฟล์บางประเภทจากดิสก์
การวิเคราะห์นี้ถือว่าคุณได้ติดตั้งเครื่องมือติดตามโค้ดที่กําหนดเองสําหรับการโหลดจากดิสก์ด้วยแอตทริบิวต์ที่กําหนดเองชื่อ file-extension
และเมตริกที่กําหนดเอง (TRACE_METRIC
) ชื่อ cache-hit
ที่ตั้งค่าเป็น 1
หากพบแคช และ 0
หากไม่พบแคช
เช่น คุณสามารถคํานวณอัตรา Hit ของแคชสําหรับการโหลดไฟล์ 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;
พกข้อมูล Performance Monitoring ติดตัวไปกับคุณทุกที่
บางครั้งคุณต้องการเข้าถึงPerformance Monitoringข้อมูลฝั่งเซิร์ฟเวอร์หรือพุชข้อมูลไปยังโซลูชันของบุคคลที่สามอื่น ปัจจุบันการส่งออกข้อมูลไม่มีค่าใช้จ่าย
คุณส่งออกข้อมูลได้โดยใช้วิธีต่อไปนี้
การใช้ UI ของเว็บ BigQuery
เรียกใช้คำสั่ง CLI
bq extract
การส่งงานดึงข้อมูลผ่าน API หรือไลบรารีของไคลเอ็นต์
ราคา
การส่งออกข้อมูลจาก Performance Monitoring ไม่มีค่าใช้จ่าย และ BigQuery มีขีดจำกัดการใช้งานแบบไม่มีค่าใช้จ่ายที่กว้างขวาง ดูข้อมูลโดยละเอียดได้ที่ราคา BigQuery หรือแซนด์บ็อกซ์ BigQuery