Apple ve Android uygulamalarından Performance Monitoring verilerini daha ayrıntılı analiz için BigQuery'ye aktarabilirsiniz. BigQuery, verileri SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve hatta özel makine öğrenimi modelleriniz için kullanmanıza olanak tanır.BigQuery
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. - BigQuery için Performance Monitoring dışa aktarma özelliğini etkinleştirdiğinizde aşağıdaki işlemler gerçekleşir: - Firebase, mevcut verilerinizin bir kopyasını BigQuery'ye aktarır. Dışa aktarma için verilerin ilk yayılması 48 saati bulabilir. - BigQuery dışa aktarma özelliğini etkinleştirdiğiniz tarihten itibaren son 30 güne veya en son tarihe kadar (hangisi daha yakınsa) verileri manuel olarak geri doldurmayı 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, planlandıktan sonra genellikle 24 saat içinde tamamlanır. 
- Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ya bağlanır. Daha sonra projeye eklediğiniz tüm uygulamalar otomatik olarak BigQuery uygulamasına bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz. 
 
BigQuery dışa aktarma özelliğini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.
BigQuery hizmetine hangi veriler dışa 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 olabilen tek bir performans etkinliğidir:
- Süre izi: Uygulama başlangıcı, uygulamanın ön planda ve arka planda olma süresi gibi "süre" metriğini varsayılan olarak toplayan izlerin yanı sıra geliştiriciler tarafından oluşturulan tüm özel kod izlerini içerir. - event_type:- DURATION_TRACE
- event_name, iz adıyla aynıdır.
 
- İzleme metriği: Geliştirici tarafından oluşturulan özel kod izleriyle ilişkili özel metrikler - event_type:- TRACE_METRIC
- event_name, metriğin adıdır.
- parent_trace_namebu metriği içeren iz adıdır.
 
- Ekran izi: Bir ekranın kullanım ömrü boyunca devam eden izler (ekran oluşturma izleri) - event_type:- SCREEN_TRACE
- event_name, ön ek- _st_ve gerçek ekran adından oluşur.
 
- Ağ isteği: Bir ağ isteğinin ömrü boyunca uzanan izler (HTTP ağ isteği izleri) - event_type:- NETWORK_REQUEST
- event_name, ağ isteği URL'sinin kategorize edilmiş kalıbıdır.
 
Her performans etkinliği, etkinliğin özelliklerinin (ör. istemci cihazın ülkesi ve operatörü) yanı sıra etkinliğe özgü bilgileri içerir:
- Süre izleri, iz metrikleri ve ekran izleri trace_infoiçerir.
- İzleme metrikleri şunları içerir: trace_info.metric_info
- Ekran izleri trace_info.screen_infoiçeriyor
- Ağ izleri network_infoiçerir
Ayrıntılı veri şeması
| Alan Adı | Tür | Açıklama | 
|---|---|---|
| event_timestamp | zaman damgası | Etkinliğin istemci cihazda başladığı zamandan itibaren geçen süre (izleme başlangıcı, ağ başlangıcı vb.) | 
| app_display_version | dize | Uygulamanın sürümünü gösterir (örneğin, "4.1.7") 
 | 
| app_build_version | dize | Uygulamanın derleme sürümü (örneğin, "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_METRICiçin geçerlidir. | 
| trace_info | KAYIT | Yalnızca DURATION_TRACE,SCREEN_TRACEveTRACE_METRICiçin geçerlidir. | 
| trace_info.duration_us | int64 | 
 | 
| trace_info.screen_info | KAYIT | Yalnızca SCREEN_TRACEiçin geçerlidir. | 
| 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ğindeki 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ğindeki karelerin% 5'inin oluşturulmasının 700 ms'den uzun sürdüğü anlamına gelir.) | 
| trace_info.metric_info | KAYIT | Yalnızca TRACE_METRICiçin geçerlidir. | 
| trace_info.metric_info.metric_value | int64 | İzleme metriğinin değeri | 
| network_info | KAYIT | Yalnızca NETWORK_REQUESTiçin geçerlidir. | 
| network_info.response_code | int64 | Ağ yanıtının HTTP yanıt kodu (örneğin, 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_timestampcinsinden geçen süre (mikrosaniye)
        Birim: mikrosaniye | 
| network_info.response_initiated_time_us | int64 | Ağ yanıtı başlatıldığında event_timestampsonraki mikrosaniyelerBirim: mikrosaniye | 
| network_info.response_completed_time_us | int64 | Ağ yanıtı tamamlandıktan sonraki event_timestampmikrosaniyeBirim: mikrosaniye | 
Dışa aktarılan verilerle neler yapabilirsiniz?
Aşağıdaki bölümlerde, dışa aktarılan Performance Monitoring verilerinizle ilgili olarak BigQuery'da çalıştırabileceğiniz sorgulara dair örnekler verilmiştir.
Konsolda görünen verilerle eşleştirme
Firebase kontrol panelinde günlük veriler America/Los_Angeles saat diliminde toplanır.
Konsolda görünenlerle eşleşmesi için tarih işlevleri, saat dilimini açıkça America/Los_Angeles olarak 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;
Dondurulmuş karelerin oranını çeşitli koşullara göre kontrol edin
Ö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ürlerinin diskten yüklenmesi için önbellek isabet oranını hesaplama
Bu analizde, diskten yükleme için file-extension adlı özel bir özellik ve cache-hit adlı özel bir metrik (TRACE_METRIC) ile özel bir kod izleme aracı uyguladığınız varsayılır. Bu metrik, önbellek isabeti durumunda 1, önbellek eksikliği durumunda ise 0 olarak ayarlanır.
Örneğin, diskten PNG dosyaları yükleme 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ğ isteklerini gönderdiği günün saatini kontrol edin.
Örneğin, ABD'deki kullanıcıların günün hangi saatinde uygulamanızdan ağ istekleri 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 her yere götürme
Bazen Performance Monitoring verilerinize sunucu tarafında erişmek veya bunları başka bir üçüncü taraf çözümüne aktarmak isteyebilirsiniz. Veri dışa aktarma işlemi şu anda ücretsizdir.
Verilerinizi dışa aktarmak için:
- BigQuery web kullanıcı arayüzünü kullanma 
- CLI komutunu çalıştırma - bq extract
- API veya istemci kitaplıkları aracılığıyla ayıklama işi gönderme. 
Fiyatlandırma
Performance Monitoring'dan veri dışa aktarma işlemi ücretsizdir ve Performance Monitoring, ücretsiz kullanım için cömert sınırlar sunar.BigQuery Ayrıntılı bilgi için BigQuery fiyatlandırması veya BigQuery sandbox bölümüne bakın.