ज़्यादा विश्लेषण के लिए, Apple और Android ऐप्लिकेशन से Performance Monitoring के डेटा को BigQuery में एक्सपोर्ट किया जा सकता है. BigQuery की मदद से, BigQuery SQL का इस्तेमाल करके डेटा का विश्लेषण किया जा सकता है. साथ ही, उसे किसी दूसरे क्लाउड सेवा देने वाली कंपनी के पास एक्सपोर्ट किया जा सकता है. इसके अलावा, अपने कस्टम एमएल मॉडल के लिए भी डेटा का इस्तेमाल किया जा सकता है.
BigQuery को एक्सपोर्ट करने की सुविधा चालू करें
Firebase कंसोल में, इंटिग्रेशन पेज पर जाएं. इसके बाद, BigQuery कार्ड में लिंक करें पर क्लिक करें.
BigQuery चालू करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.
Performance Monitoring के लिए BigQuery एक्सपोर्ट की सुविधा चालू करने पर, ये बदलाव होते हैं:
Firebase, BigQuery में आपके मौजूदा डेटा की कॉपी एक्सपोर्ट करता है. एक्सपोर्ट के लिए डेटा का शुरुआती प्रॉपेगेशन पूरा होने में 48 घंटे लग सकते हैं.
- आपके पास, डेटा बैकफ़िल को मैन्युअल तरीके से शेड्यूल करने का विकल्प है. इसे पिछले 30 दिनों या BigQueryएक्सपोर्ट करने की सुविधा चालू करने की तारीख तक शेड्यूल किया जा सकता है.
डेटासेट बनाने के बाद, उसकी जगह को बदला नहीं जा सकता. हालांकि, डेटासेट को किसी दूसरी जगह पर कॉपी किया जा सकता है या मैन्युअल तरीके से किसी दूसरी जगह पर ले जाया जा सकता है, यानी कि इसे फिर से बनाया जा सकता है. ज़्यादा जानने के लिए, डेटासेट की जगह बदलना लेख पढ़ें.
Firebase, आपके Firebase प्रोजेक्ट से BigQuery पर नियमित तौर पर आपके डेटा को सिंक करता है. रोज़ाना एक्सपोर्ट होने की ये कार्रवाइयां, शेड्यूल किए जाने के बाद आम तौर पर 24 घंटे में पूरी हो जाती हैं.
आपके प्रोजेक्ट के सभी ऐप्लिकेशन डिफ़ॉल्ट रूप से, BigQuery से लिंक होते हैं. बाद में प्रोजेक्ट में जोड़े जाने वाले सभी ऐप्लिकेशन, 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_
के साथ-साथ स्क्रीन का असल नाम शामिल होता है
नेटवर्क अनुरोध — किसी नेटवर्क अनुरोध के पूरे लाइफ़टाइम के दौरान ट्रैक किए गए डेटा (एचटीटीपी नेटवर्क अनुरोध के ट्रैक)
event_type
NETWORK_REQUEST
हैevent_name
, नेटवर्क अनुरोध यूआरएल का कैटगरी वाला पैटर्न है
हर परफ़ॉर्मेंस इवेंट में, इवेंट के एट्रिब्यूट (जैसे, क्लाइंट डिवाइस का देश और कैरियर) के साथ-साथ, इवेंट से जुड़ी जानकारी भी शामिल होती है:
- कुल समय के ट्रेस, ट्रेस मेट्रिक, और स्क्रीन ट्रेस में
trace_info
- ट्रेस मेट्रिक में
trace_info.metric_info
शामिल है - स्क्रीन ट्रैस में
trace_info.screen_info
है - नेटवर्क ट्रेस में
network_info
शामिल है
ज़्यादा जानकारी वाला डेटा स्कीमा
फ़ील्ड का नाम | टाइप | जानकारी |
---|---|---|
event_timestamp | timestamp | क्लाइंट डिवाइस पर इवेंट शुरू होने के बाद का टाइमस्टैंप (ट्रैस शुरू होने का समय, नेटवर्क शुरू होने का समय वगैरह) |
app_display_version | स्ट्रिंग | ऐप्लिकेशन का डिसप्ले वर्शन (उदाहरण के लिए, "4.1.7")
|
app_build_version | स्ट्रिंग | ऐप्लिकेशन का बिल्ड वर्शन (उदाहरण के लिए, "1523456")
|
os_version | स्ट्रिंग | क्लाइंट डिवाइस का ओएस वर्शन
|
device_name | स्ट्रिंग | क्लाइंट डिवाइस का नाम (उदाहरण के लिए, "Google Pixel") |
country | स्ट्रिंग | उस देश का दो अक्षर वाला कोड जहां इवेंट हुआ था (उदाहरण के लिए, "US" या किसी अनजान देश के लिए "ZZ") |
शिपिंग की सेवा देने वाली कंपनी | स्ट्रिंग | क्लाइंट डिवाइस को मोबाइल और इंटरनेट सेवा देने वाली कंपनी |
रेडियो टाइप | स्ट्रिंग | इवेंट होने के दौरान चालू रेडियो टाइप (उदाहरण के लिए, "वाई-फ़ाई") |
custom_attributes | ARRAY<RECORD> | इस इवेंट से जुड़े सभी कस्टम एट्रिब्यूट |
custom_attributes.key | स्ट्रिंग | कस्टम एट्रिब्यूट की कुंजी |
custom_attributes.value | स्ट्रिंग | कस्टम एट्रिब्यूट की वैल्यू |
event_type | स्ट्रिंग | इवेंट किस तरह का है; संभावित वैल्यू:
|
event_name | स्ट्रिंग | इवेंट का नाम
|
parent_trace_name | स्ट्रिंग | ट्रेस मेट्रिक को शामिल करने वाले पैरंट ट्रेस का नाम सिर्फ़ TRACE_METRIC के लिए मौजूद है |
ट्रेस की जानकारी | रिकॉर्ड | सिर्फ़ DURATION_TRACE ,
SCREEN_TRACE , और TRACE_METRIC के लिए मौजूद है |
ट्रेस_info.duration_us | int64 |
|
trace_info.screen_info | रिकॉर्ड | सिर्फ़ SCREEN_TRACE के लिए मौजूद |
ट्रेस_info.screen_info.slow_frame_ratio | float64 | इस स्क्रीन ट्रेस के लिए, धीमे फ़्रेम का अनुपात, 0 से 1 के बीच होता है (उदाहरण के लिए, 0.05 की वैल्यू का मतलब है कि इस स्क्रीन के 5% फ़्रेम को रेंडर होने में 16 सेकंड से ज़्यादा समय लगा) |
trace_info.screen_info.frozen_frame_ratio | फ़्लोट64 | इस स्क्रीन ट्रेस के लिए, फ़्रीज़ किए गए फ़्रेम का अनुपात, 0 से 1 के बीच होता है (उदाहरण के लिए, 0.05 की वैल्यू का मतलब है कि इस स्क्रीन के 5% फ़्रेम को रेंडर होने में 700 मि॰से॰ से ज़्यादा समय लगा) |
ट्रेस_info.metric_info | रिकॉर्ड | सिर्फ़ TRACE_METRIC के लिए मौजूद |
ट्रेस_info.metric_info.metric_value | int64 | ट्रेस मेट्रिक की वैल्यू |
नेटवर्क की जानकारी | रिकॉर्ड | सिर्फ़ NETWORK_REQUEST के लिए मौजूद |
network_info.response_code | int64 | नेटवर्क के रिस्पॉन्स के लिए एचटीटीपी रिस्पॉन्स कोड (उदाहरण के लिए, 200, 404) |
network_info.response_mime_type | स्ट्रिंग | नेटवर्क रिस्पॉन्स का MIME टाइप (उदाहरण के लिए, "text/html") |
network_info.request_http_method | स्ट्रिंग | नेटवर्क अनुरोध का एचटीटीपी तरीका (उदाहरण के लिए, "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
टाइमज़ोन में हर दिन का डेटा इकट्ठा करता है.
Console पर दिखने वाली जानकारी से मेल खाने के लिए, तारीख वाले फ़ंक्शन में America/Los_Angeles
को साफ़ तौर पर टाइमज़ोन के तौर पर सेट किया जाना चाहिए. ऐसा न करने पर, तारीख वाला फ़ंक्शन डिफ़ॉल्ट रूप से यूटीसी का इस्तेमाल करेगा.
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;
अलग-अलग स्थितियों के हिसाब से, फ़्रीज़ हुए फ़्रेम का अनुपात देखना
उदाहरण के लिए, अलग-अलग रेडियो टाइप (वाई-फ़ाई, 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
नाम के कस्टम एट्रिब्यूट और cache-hit
नाम की कस्टम मेट्रिक (TRACE_METRIC
) के साथ कस्टम कोड ट्रेस को इंस्ट्रूमेंट किया है. यह मेट्रिक, कैश मेमोरी में डेटा मौजूद होने पर 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;
Performance Monitoring का डेटा कहीं से भी ऐक्सेस करना
कभी-कभी, आपको अपने Performance Monitoring डेटा को सर्वर-साइड से ऐक्सेस करना होता है या उसे तीसरे पक्ष के किसी दूसरे समाधान पर पुश करना होता है. फ़िलहाल, डेटा एक्सपोर्ट करने के लिए कोई शुल्क नहीं लिया जाता.
अपना डेटा एक्सपोर्ट करने के लिए:
BigQuery के वेब यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करना
सीएलआई कमांड चलाना
bq extract
एपीआई या क्लाइंट लाइब्रेरी के ज़रिए, डेटा निकालने का टास्क सबमिट करना.
कीमत
Performance Monitoring से डेटा एक्सपोर्ट करने के लिए कोई शुल्क नहीं लिया जाता. साथ ही, BigQuery के लिए, बिना किसी शुल्क के डेटा इस्तेमाल करने की सुविधा मिलती है. ज़्यादा जानकारी के लिए, BigQuery कीमत या BigQuery सैंडबॉक्स लेख पढ़ें.