Apple ve Android uygulamalarından Performance Monitoring verilerini daha ayrıntılı analiz için BigQuery'a aktarabilirsiniz. BigQuery, BigQuery SQL kullanarak verileri analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve hatta özel ML modelleriniz için kullanmanıza olanak tanır.
BigQuery dışa aktarımını etkinleştirme
Firebase konsolunda Entegrasyonlar sayfasına gidin, ardından BigQuery kartında Bağla'yı tıklayın.
BigQuery özelliğini etkinleştirmek için ekrandaki talimatları uygulayın.
Performance Monitoring için BigQuery dışa aktarma özelliğini etkinleştirdiğinizde şunlar gerçekleşir:
Firebase, mevcut verilerinizin bir kopyasını BigQuery hizmetine aktarır. Dışa aktarılacak verilerin ilk yayılımının tamamlanması 48 saati bulabilir.
- Son 30 güne kadar veya BigQuery dışa aktarma işlemini etkinleştirdiğiniz en son tarihe kadar (hangisi daha yeniyse) veri dolgularını manuel olarak planlayabilirsiniz.
Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturma). Daha fazla bilgi için Veri kümesi konumunu değiştirme başlıklı makaleyi inceleyin.
Firebase, Firebase projenizdeki verilerinizin BigQuery ile düzenli olarak senkronize edilmesini sağlar. Bu günlük dışa aktarma işlemleri genellikle planlandıktan sonra 24 saat içinde tamamlanır.
Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery ile bağlantılıdır. Projeye daha sonra eklediğiniz tüm uygulamalar otomatik olarak BigQuery ile bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.
BigQuery dışa aktarma işlemini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.
BigQuery hizmetine hangi veriler aktarılır?
Dışa aktarma işlemi, projedeki her uygulama için yakalanan tüm performans etkinliklerini içeren bir tablo oluşturur. Tablodaki her satır, aşağıdakilerden biri olabilecek tek bir performans etkinliğidir:
Süre izi: Varsayılan olarak "süre" metriğini toplayan izlerdir. Uygulama başlatma, ön plandaki uygulama ve arka plandaki uygulamanın yanı sıra geliştirici tarafından eklenen özel kod izlerini içerir.
event_type:DURATION_TRACEevent_name, izleme adıyla aynıdır
İzleme metriği: Geliştirici tarafından eklenen özel kod izlemeleriyle ilişkili özel metrikler
event_type:TRACE_METRICevent_name, metriğin adıdır.parent_trace_name, bu metriği içeren iz adıdır.
Ekran izi: Bir ekranın kullanım ömrünü kapsayan izler (ekran oluşturma izleri)
event_type:SCREEN_TRACEevent_name,_st_öneki ve gerçek ekran adıdır.
Ağ isteği: Bir ağ isteğinin kullanım ömrünü kapsayan izler (HTTP ağ isteği izleri)
event_type:NETWORK_REQUESTevent_name, ağ isteği URL'sinin kategorize edilmiş kalıbıdır.
Her performans etkinliği, etkinliğin özelliklerini (istemci cihazın ülkesi ve operatörü gibi) ve etkinliğe özel bilgileri içerir:
- Süre izleri, iz metrikleri ve ekran izleri
trace_infoiçerir. - İzleme metrikleri
trace_info.metric_infoiçeriyor - Ekran izleri
trace_info.screen_infoiçeriyor - Ağ izleri
network_infoiçeriyor
Ayrıntılı veri şeması
| Alan Adı | Tür | Açıklama |
|---|---|---|
| event_timestamp | zaman damgası | Etkinliğin istemci cihazda başladığı zamandan (izleme başlangıcı, ağ başlangıcı vb.) itibaren geçen süreyi gösteren zaman damgası. |
| app_display_version | dize | Uygulamanın görünen sürümü (ör. "4.1.7")
|
| app_build_version | dize | Uygulamanın derleme sürümü (ör. "1523456")
|
| os_version | dize | İstemci cihazın işletim sistemi sürümü
|
| device_name | dize | İstemci cihazın adı (ör. "Google Pixel") |
| country | dize | Etkinliğin gerçekleştiği ülkenin iki harfli ülke kodu (ör. "US" veya bilinmeyen ülke için "ZZ") |
| nakliyeci | dize | İstemci cihazın operatörü |
| radio_type | dize | Etkinlik gerçekleştiğinde etkin olan radyo türü (ör. "WIFI") |
| custom_attributes | ARRAY<RECORD> | Bu etkinliğe eklenen tüm özel özellikler |
| custom_attributes.key | dize | Özel özelliğin anahtarı |
| custom_attributes.value | dize | Özel özelliğin değeri |
| event_type | dize | Etkinliğin türü. Olası değerler:
|
| event_name | dize | Etkinliğin adı
|
| parent_trace_name | dize | İzleme metriğini taşıyan üst izlemenin adı Yalnızca TRACE_METRIC için mevcuttur. |
| trace_info | KAYIT | Yalnızca DURATION_TRACE, SCREEN_TRACE ve TRACE_METRIC için geçerlidir. |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | KAYIT | Yalnızca SCREEN_TRACE için mevcut |
| trace_info.screen_info.slow_frame_ratio | float64 | Bu ekran izi için yavaş karelerin oranı (0 ile 1 arasında) (Örneğin, 0,05 değeri, bu ekran örneği için karelerin% 5'inin oluşturulmasının 16 ms'den uzun sürdüğü anlamına gelir.) |
| trace_info.screen_info.frozen_frame_ratio | float64 | Bu ekran izi için donmuş karelerin oranı (0 ile 1 arasında) (Örneğin, 0,05 değeri, bu ekran örneği için karelerin% 5'inin oluşturulmasının 700 ms'den uzun sürdüğü anlamına gelir.) |
| trace_info.metric_info | KAYIT | Yalnızca TRACE_METRIC için mevcut |
| trace_info.metric_info.metric_value | int64 | İzleme metriğinin değeri |
| network_info | KAYIT | Yalnızca NETWORK_REQUEST için mevcut |
| network_info.response_code | int64 | Ağ yanıtı için HTTP yanıt kodu (ör. 200, 404) |
| network_info.response_mime_type | dize | Ağ yanıtının MIME türü (ör. "text/html") |
| network_info.request_http_method | dize | Ağ isteğinin HTTP yöntemi (ör. "GET" veya "POST") |
| network_info.request_payload_bytes | int64 | Ağ isteği yükünün boyutu Birim: bayt |
| network_info.response_payload_bytes | int64 | Ağ yanıtı yükünün boyutu Birim: bayt |
| network_info.request_completed_time_us | int64 | Ağ isteği gönderimi tamamlandıktan sonra event_timestamp mikrosaniyeBirim: mikrosaniye |
| network_info.response_initiated_time_us | int64 | Ağ yanıtı başlatıldıktan sonraki mikrosaniye sayısı event_timestampBirim: mikrosaniye |
| network_info.response_completed_time_us | int64 | Ağ yanıtı tamamlandıktan sonraki mikrosaniye sayısı event_timestampBirim: mikrosaniye |
Dışa aktarılan verilerle neler yapabilirsiniz?
Aşağıdaki bölümlerde, dışa aktarılan Performance Monitoring verileriniz için BigQuery aracında çalıştırabileceğiniz sorgu örnekleri verilmiştir.
Konsolda görülen verilerle eşleşmelidir.
Firebase kontrol paneli, günlük verileri America/Los_Angeles saat diliminde toplar.
Konsolda görülenlerle eşleşmesi için tarih işlevleri, saat dilimi olarak açıkça America/Los_Angeles değerini ayarlamalıdır. Aksi takdirde tarih işlevi, varsayılan olarak UTC'yi kullanır.
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;
Ülkeye göre ortalama uygulama başlatma gecikmesi dökümünü görüntüleme
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;
Donmuş karelerin oranını çeşitli koşullara göre kontrol etme
Örneğin, farklı radyo türlerinde (Kablosuz, 4G vb.) kullanıcıların uygulamanızın her ekranında geçirdiği süreyle birlikte donmuş karelerin oranını kontrol edebilirsiniz.
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;
Belirli dosya türlerini diskten yüklemek için işlem önbelleği isabet oranını hesaplama
Bu analizde, diskten yükleme için file-extension adlı özel özellik ve önbellek isabeti varsa 1, önbellekte yoksa 0 olarak ayarlanan cache-hit adlı özel metrik (TRACE_METRIC) içeren özel kod izlemesi kullandığınız varsayılır.
Örneğin, PNG dosyalarını diskten yüklemek için önbellek isabet oranını hesaplayabilirsiniz:
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);
Kullanıcıların ağ istekleri gönderdiği günün saatini kontrol etme
Örneğin, ABD'deki kullanıcıların uygulamanızdan günün hangi saatinde ağ isteği gönderdiğini kontrol edebilirsiniz:
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 verilerinizi istediğiniz yere götürün
Bazen Performance Monitoring verilerinize sunucu tarafında erişmek veya bu verileri başka bir üçüncü taraf çözümüne aktarmak isteyebilirsiniz. Verileri dışa aktarma işlemi şu anda ücretsizdir.
Verilerinizi şu yöntemlerle dışa aktarabilirsiniz:
BigQuery web kullanıcı arayüzünü kullanma
CLI komutunu çalıştırma
bq extractAPI veya istemci kitaplıkları aracılığıyla ayıklama işi gönderme.
Fiyatlandırma
Performance Monitoring üzerinden veri dışa aktarma işlemi ücretsizdir ve BigQuery, ücretsiz kullanım için geniş sınırlar sunar. Ayrıntılı bilgi için BigQuery fiyatlandırması veya BigQuery korumalı alanı bölümünü inceleyin.