Google Analytics 4 ve BigQuery ile performansı ölçme ve hata ayıklama

Web Verileri verilerini Google Analytics 4 mülklerine göndermeyi ve verileri BigQuery ve Looker Studio'da analiz için dışa aktarmayı öğrenin.

Google bir dizi araç sunar: Arama Konsol, PageSpeed Analizler (PSI) ve Chrome Kullanıcı Deneyimi Bildirin (CrUX) gibi, geliştiricilerin sitelerinin Core Web'e göre nasıl performans gösterdiğini görmelerini sağlayan bir uygulamadır. Gerçek kullanıcılarına ilişkin Vitals metrikleri alanına dokunun.

Bu araçlar, sitenizin geneline ilişkin genel bir görünüm sunmaları ve gerçekten değerlidir ve kullanmaya başlamak için kurulum gerektirmez.

Bununla birlikte, bu kaynakları kullanmak istememenizin birkaç önemli nedeni vardır ölçmek için kullanabileceğiniz araçlar:

  • CrUX tabanlı araçlar, verileri aylık veya önceki 28 günlük dönemlere göre raporlar. Bu durumda, herhangi bir değişiklik yaptıktan sonra değişiklikleri yapmadan önce uzun süre beklemeniz gerekir. sonuçları görebiliriz.
  • CrUX tabanlı araçlar, yalnızca sınırlı sayıda boyuta göre segmentlere ayrılabilir. Örneğin, ülke, bağlantı türü ve cihaz kategorisi (masaüstü veya mobil). İnşa edeceğiniz Verileri işletmenize özel boyutlara göre dilimlere ayırmak (örneğin, kullanıcılar, belirli bir deneme grubundaki kullanıcılar vb.) yer alır.
  • CrUX tabanlı araçlar, performansınızın ne olduğunu söyleyebilir ancak size neden? Analiz araçları sayesinde, olası satışlarınızı takip etmenize yardımcı olacak ve hata ayıklamak için kullanın.

Bu nedenlerden dolayı, tüm site sahiplerinin Core Web Vitals metriklerini izlemesini öneririz. mevcut analiz araçlarını kullanarak. Bu gönderide, ücretsiz ama kötü amaçlı yazılım yardımcı olacak pek çok araç var.

Her şeyi ayarladıktan sonra, aşağıdaki gibi kontrol panelleri oluşturabilirsiniz:

Web Vitals Bağlayıcısı raporunun ekran görüntüsü

Web Vitals Bağlayıcısı raporunun ekran görüntüsü

Burada açıklanan tüm adımlara dair görsel bir genel bakış için Google I/O '21'deki konuşmamıza göz atın:

Ölçüm

Performans ölçmek, Google Analytics'le her zaman mümkün olduğu gibi, özel metrikler vardır, ancak Google Analytics'teki yeni özelliklerden 4 (GA4) için heyecan duymanız gerekir.

Google Analytics web arayüzünde güçlü analiz araçları bulunuyor olsa da sorgu kullanarak ham etkinlik verilerine erişimin gücünü ve esnekliğini aşmak zordur zaten bildiğiniz bir dil de var.

Google Analytics 4 ve BigQuery'yi kullanarak Core Web Vitals'ı ölçmeye başlamak için yapmanız gereken üç şey vardır:

  1. Google Analytics 4 oluşturun mülkü ve bir BigQuery projesi.
  2. BigQuery dışa aktarımını etkinleştirme Google Analytics mülk yapılandırmanıza bakın. Böylece, aldığınız tüm veriler otomatik olarak doldurulur.
  3. Web-vitals JavaScript'i ekleyin. kitaplığını sitenize ekleyerek Core Web Vitals metriklerini ve verileri Google Analytics’e göndermek 4 ilişkilendirme verileri dahil.

Analiz et

Kurulum tamamlandığında BigQuery'de etkinlik verilerinin oluştuğunu göreceksiniz. arayüzünü ve verileri şu şekilde sorgulayabilmeniz gerekir:

SELECT * FROM `my_project_id.analytics_XXXXX.events_*`
WHERE event_name IN ('LCP', 'INP', 'CLS')

Söz konusu sorguya ait sonuçların önizlemesini burada bulabilirsiniz:

BigQuery'de Web Verileri etkinlik verileri

Web Vitals verilerini sorgulama

Web Vitals etkinlik verilerinizi sorgulamaya başlamadan önce ve verilerin nasıl toplandığını anlar.

Anlaşılması gereken en önemli şey, bazı durumlarda birden fazla etkinliğin olabilir alındı aynı sayfada aynı metrik için. Bu durum, metrik değeri ve güncellenmiş bir değer raporlanır (CLS'de sık karşılaşılan bir durumdur).

Web Vitals etkinlikleri için gönderilen son değer her zaman en doğru olan değerdir. herhangi bir analiz yapmadan önce, yalnızca bu değerleri filtrelemek önemlidir. Verileri göndermek için web-vitals JavaScript kitaplığının sağladığı kod snippet'i Google Analytics 4, metrik başına benzersiz bir kimlik göndermeyi içerir. Böylece kullanarak, sonuçlarınızı her öğe için yalnızca son alınan değerle sınırlandırın metrik kimliği:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)

Bu yayında referans verilen diğer tüm sorguların bu sorguyla başlayacağını unutmayın. alt sorgudur.

Örnek sorgular

Sonraki birkaç bölümde, karşılaşabileceğiniz yaygın Web Verileri sorgularına birkaç örnek verilmiştir. koşmak istediğinize karar verin.

Tüm site genelinde% 75'lik yüzdelik dilimde (p75) LCP, INP ve CLS

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  metric_name,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS p75,
  COUNT(1) as count
FROM (
  SELECT
    metric_name,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
)
GROUP BY 1

En yüksekten en düşüğe doğru tüm ayrı LCP değerleri

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
FROM web_vitals_events
WHERE metric_name = 'LCP'
ORDER BY metric_value DESC
# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS LCP,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'LCP'
)
GROUP BY 1
ORDER BY count DESC
LIMIT 10

En kötü CLS değerine sahip ilk 10 sayfa (p75)

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC
LIMIT 10

Hata Ayıklama

Önceki sorgular, Web Vitals metrik verilerinin nasıl sorgulanacağını gösterir. Bu da, mevcut performansınızı ve bunun zaman içinde nasıl trend olduğunu anlamak için kullanabilirsiniz. Ama performansınız beklenenden daha kötüyse ve emin değilseniz ne yapabilirsiniz? neden?

İşlem yapamıyorsanız puanlarınızın ne olduğunu bilmek faydalı olmaz ve sorunları düzeltebilirsiniz.

Alanda hata ayıklama performansı, analiz verilerinizle ek hata ayıklama bilgileri gönderebilirsiniz. Şu durumda: söz konusu yayında ayrıntılı olarak belirtilen talimatları uygularsanız bilgileri BigQuery'de de görünür.

Örnek sorgular

Aşağıdaki sorgular, yardımcı olması için debug_target etkinlik parametresinin nasıl kullanılacağını göstermektedir performans sorunlarının temel nedenini belirlemek.

CLS'ye katkıda bulunan en önemli öğeler

debug_target, sayfadaki öğeye karşılık gelen bir CSS seçici dizesidir metrik değeriyle en alakalı sayfaya yönlendirir.

CLS'de debug_target, en büyük elemandan en büyük elemanı temsil eder. CLS değerine katkıda bulunan düzen kayması. Hiçbir öğe kaymazsa debug_target değeri null olacak.

Aşağıdaki sorgu, sayfaları 75. CLS'lerine göre en kötüden en iyiye doğru listeler yüzdelik dilim, debug_target bazında gruplandırılmış:

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  page_path,
  debug_target,
  APPROX_QUANTILES(metric_value, 100)[OFFSET(75)] AS CLS,
  COUNT(1) as count
FROM (
  SELECT
    REGEXP_SUBSTR((SELECT value.string_value FROM UNNEST(event_params) WHERE key = "page_location"), r'\.com(\/[^?]*)') AS page_path,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = "debug_target") as debug_target,
    ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = "metric_value"), 3) AS metric_value,
    *
  FROM web_vitals_events
  WHERE metric_name = 'CLS'
)
GROUP BY 1, 2
HAVING count > 50 # Limit to relatively popular pages
ORDER BY CLS DESC

CLS'ye katkıda bulunan en önemli öğeler için sorgu sonucu

Sayfadaki hangi öğelerin değiştiğini bilmek, Sorunun kök nedenini belirleyip düzeltiyor.

Burada raporlanan öğelerin, Google Ad Manager ile Sayfalarınızda yerel olarak hata ayıklarken değişiklikler görürsünüz. Bu nedenle her şeyden önce bu verileri yakalamak önemlidir. Bir şeyleri düzeltmek çok zor fark edebileceğiniz sorunlardır.

Diğer metriklerde hata ayıkla

Önceki sorguda CLS metriği sonuçları gösteriliyor, ancak sonuçlarda tam olarak tekniği, LCP ve INP için hata ayıklama hedefleri hakkında rapor oluşturmak amacıyla kullanılabilir. Adil "where" ifadesini, hata ayıklamak için ilgili metrikle değiştirin:

WHERE metric_name = 'INP'
WHERE metric_name = 'LCP'

Daha fazla bilgi için alanına ait verilerin toplanması ve anlaşılması için Core Web Vitals metriklerinin her biri için hata ayıklama bilgisi gönderin.

Görselleştir

Yalnızca sorgu sonuçlarına bakarak bilgi edinmek zor olabilir. yaşayabilirsiniz. Örneğin, aşağıdaki sorgu şunun için günlük 75. yüzdelik dilim değerlerini listeler: Veri kümesindeki LCP.

# Subquery all Web Vitals events from the last 28 days
WITH web_vitals_events AS (
  SELECT event_name as metric_name, * EXCEPT(event_name, is_last_received_value) FROM (
    SELECT *, IF (ROW_NUMBER() OVER (
      PARTITION BY (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
      ORDER BY (SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value') DESC
    ) = 1, true, false) AS is_last_received_value
    FROM `bigquery_project_id.analytics_XXXXX.events_*`
    WHERE event_name in ('CLS', 'INP', 'LCP') AND
      _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY)) AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY))
  ) WHERE is_last_received_value
)
# Main query logic
SELECT
  event_date,
  metric_name,
  APPROX_QUANTILES(ROUND(metric_value, 2), 100)[OFFSET(75)] AS p75
FROM
  (
    SELECT
      event_date,
      metric_name,
      ROUND((SELECT COALESCE(value.double_value, value.int_value) FROM UNNEST(event_params) WHERE key = 'metric_value'), 3) AS metric_value
    FROM web_vitals_events
    WHERE
      metric_name = 'LCP'
  )
GROUP BY
  1, 2
ORDER BY event_date

Bu sorgu sonuçlarından yola çıkarak, yalnızca tek başına eğilim veya aykırı değerleri belirlemek zordur. verileri incelemektir.

Günlük metrik değeri sorgu sonuçları

Bu gibi durumlarda, verileri görselleştirmek daha hızlı bir şekilde analiz elde etmenize yardımcı olabilir.

Looker Studio'da sorgu sonuçlarını görselleştirme

BigQuery, veriler aracılığıyla sorgu sonuçlarını hızlıca görselleştirmenize olanak tanır. Stüdyo'yu seçin. Looker Studio bir veri görselleştirmesidir. ücretsiz bir kontrol paneli aracıdır. Sorgu sonuçlarınızı görselleştirmek için sorgunuzu BigQuery kullanıcı arayüzünde çalıştırdıktan sonra Verileri İncele düğmesini tıklayın ve Looker Studio ile keşfet'i seçin.

BigQuery'de Looker Studio ile keşfet seçeneği

Bu işlem, keşifte BigQuery'den Looker Studio'ya doğrudan bir bağlantı oluşturur görünüm. Bu görünümde, görselleştirmek istediğiniz alanları seçebilir, Grafik türleri, kurulum filtreleri ve hızlı görsel analiz için özel grafikler oluşturun. Önceki sorgu sonuçlarından, Zaman içinde LCP değerleri:

Looker Studio'daki günlük LCP değerlerinin çizgi grafiği

BigQuery ve Looker Studio arasındaki bu doğrudan bağlantı sayesinde, hızlı bir şekilde grafikler oluşturabilir ve görsel analiz yapabilirsiniz. Ancak isterseniz ek analizler yapmaksa, bir tabloda birkaç grafiğe bakmak isteyebilirsiniz: daha bütünsel bir görünüm elde etmek veya ayrıntılı inceleme yapabilmek için etkileşimli veri işlemeye başladım. Kullanışlı bir kontrol paneline sahip olmak, sorgu yazmanıza gerek olmadığı anlamına gelir oluşturabilir ve metriklerinizi her analiz etmek istediğinizde grafikleri manuel olarak oluşturabilirsiniz.

Yerel BigQuery'yi kullanarak Looker Studio'da kontrol paneli oluşturabilirsiniz bağlayıcı'dır. Bunun için, datastudio.google.com adresine gidip yeni bir BigQuery bağlayıcısını seçin, ardından istediğiniz veri kümesini seçin şununla çalış:

Looker Studio'da BigQuery yerel bağlayıcısını kullanma

Web Verileri verilerini hayata geçirin

Daha önce açıklandığı gibi Web Vitals etkinlik verilerinin kontrol panellerini oluştururken Google Analytics 4 dışa aktarma veri kümesini doğrudan kullanmak için verimli değildir. Nedeni: Web Verileri için gereken ön işleme ve GA4 verilerinin yapısı metrikleriniz varsa sorgunuzun bazı bölümleri birden çok kez çalışır. Bu da iki sorun vardır: kontrol paneli performansı ve BigQuery maliyetleri.

BigQuery korumalı alanını kullanabilirsiniz. mod'u ücretsiz olarak kullanın. BigQuery'nin ücretsiz kullanım katmanı ile Her ay işlenen ilk 1 TB sorgu verisi ücretsizdir. Analiz yöntemleri için önemli ölçüde büyük bir veri kümesi kullanmıyorsanız veya düzenli olarak yoğun bir şekilde sorgulayanlar varsa bu süre içinde limiti vardır. Ancak yüksek trafik alan bir web siteniz varsa ve hızlı ve etkileşimli bir kontrol paneli kullanarak farklı metrikleri düzenli olarak izliyoruz. Bölümlendirme, kümeleme ve önbelleğe alma gibi BigQuery verimlilik özellikleri.

Aşağıdaki komut dosyası, BigQuery verilerinizi (kaynak tablo) ve bir gerçekleştirilmiş tablo (hedef tablo) oluşturabilirsiniz. Bu sorguyu kendi URL'niz için kullanırken veri kümesini seçerseniz kaynak tablo için bir tarih aralığı tanımlamak işlenen veri miktarını azaltır.

# Materialize Web Vitals metrics from GA4 event export data

# Replace target table name
CREATE OR REPLACE TABLE bigquery_project_id.ga4_demo_dev.web_vitals_summary
  PARTITION BY DATE(event_timestamp)
  CLUSTER BY metric_name
AS
SELECT
  ga_session_id,
  IF(
    EXISTS(SELECT 1 FROM UNNEST(events) AS e WHERE e.event_name = 'first_visit'),
    'New user',
    'Returning user') AS user_type,
  IF(
    (SELECT MAX(session_engaged) FROM UNNEST(events)) > 0, 'Engaged', 'Not engaged')
    AS session_engagement,
  evt.* EXCEPT (session_engaged, event_name),
  event_name AS metric_name,
  FORMAT_TIMESTAMP('%Y%m%d', event_timestamp) AS event_date
FROM
  (
    SELECT
      ga_session_id,
      ARRAY_AGG(custom_event) AS events
    FROM
      (
        SELECT
          ga_session_id,
          STRUCT(
            country,
            device_category,
            device_os,
            traffic_medium,
            traffic_name,
            traffic_source,
            page_path,
            debug_target,
            event_timestamp,
            event_name,
            metric_id,
            IF(event_name = 'LCP', metric_value / 1000, metric_value) AS metric_value,
            user_pseudo_id,
            session_engaged,
            session_revenue) AS custom_event
        FROM
          (
            SELECT
              (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
                AS ga_session_id,
              (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'metric_id')
                AS metric_id,
              ANY_VALUE(device.category) AS device_category,
              ANY_VALUE(device.operating_system) AS device_os,
              ANY_VALUE(traffic_source.medium) AS traffic_medium,
              ANY_VALUE(traffic_source.name) AS traffic_name,
              ANY_VALUE(traffic_source.source) AS traffic_source,
              ANY_VALUE(
                REGEXP_SUBSTR(
                  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
                  r'^[^?]+')) AS page_path,
              ANY_VALUE(
                (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'debug_target'))
                AS debug_target,
              ANY_VALUE(user_pseudo_id) AS user_pseudo_id,
              ANY_VALUE(geo.country) AS country,
              ANY_VALUE(event_name) AS event_name,
              SUM(ecommerce.purchase_revenue) AS session_revenue,
              MAX(
                (
                  SELECT
                    COALESCE(
                      value.double_value, value.int_value, CAST(value.string_value AS NUMERIC))
                  FROM UNNEST(event_params)
                  WHERE key = 'session_engaged'
                )) AS session_engaged,
              TIMESTAMP_MICROS(MAX(event_timestamp)) AS event_timestamp,
              MAX(
                (
                  SELECT COALESCE(value.double_value, value.int_value)
                  FROM UNNEST(event_params)
                  WHERE key = 'metric_value'
                )) AS metric_value,
            FROM
              # Replace source table name
              `bigquery_project_id.analytics_XXXXX.events_*`
            WHERE
              event_name IN ('LCP', 'INP', 'CLS', 'first_visit', 'purchase')
            GROUP BY
              1, 2
          )
      )
    WHERE
      ga_session_id IS NOT NULL
    GROUP BY ga_session_id
  )
CROSS JOIN UNNEST(events) AS evt
WHERE evt.event_name NOT IN ('first_visit', 'purchase');

Bu gerçeğe dönüşen veri kümesinin çeşitli avantajları vardır:

  • Veri yapısı düzleştirilmiştir ve sorgulanması daha kolaydır.
  • Yalnızca orijinal GA4 veri kümesindeki Web Vitals etkinliklerini saklar.
  • Oturum kimliği, kullanıcı türü (yeni - geri gelen) ve oturum etkileşimi bilgileri doğrudan sütunlarda bulunur.
  • Tablo bölümlendirme ölçütü tarih ve kümeleme metrik adına göre. Bu genellikle her bir cihaz için işlenen veri miktarını azaltır. emin olun.
  • Bu tabloyu sorgulamak için joker karakterler kullanmanız gerekmediğinden, sorgu sonuçları 24 saate kadar önbelleğe alınır. Bu, aynı işlemi tekrarlamaktan kaynaklanan maliyetleri azaltır emin olun.
  • BigQuery BI motorunu kullanıyorsanız optimize edilmiş SQL işlevlerini ve operatörleriyle tablosunu oluşturalım.

Bu gerçekleştirilmiş tabloyu doğrudan BigQuery kullanıcı arayüzünden sorgulayabilir veya tabloyu kullanabilirsiniz BigQuery bağlayıcısını kullanarak Looker Studio'da görüntüleyebilirsiniz.

Web Vitals Bağlayıcısı'nı kullanma

Sıfırdan bir kontrol paneli oluşturmak zaman alıcı olduğu için, sizin için bir şablon kontrol paneli oluşturacaktır. Öncelikle önceki sorguyu kullanarak Web Verileri tablonuzu gerçekleştirdi. Ardından Şu bağlantıyı kullanan Looker Studio için Web Verileri bağlayıcısı: goo.gle/web-vitals-connector

Tek seferlik yetkilendirme sağladıktan sonra aşağıdaki ekranı görmeniz gerekir: yapılandırma ekranı:

Web Verileri Bağlayıcısı yetkilendirme ekranı

Gerçekleştirilmiş BigQuery tablosunun kimliğini (ör. hedef tablo) ve BigQuery faturalandırma projesi kimliği. Bağlan'ı tıkladıktan sonra Looker Studio, yeni bir şablon kontrol paneli oluşturabilir ve verilerinizi bununla ilişkilendirebilirsiniz. Projenizi düzenleyebilir, değiştirebilir, ve gösterge tablosunu istediğiniz gibi paylaşabilirsiniz. Kontrol panelini bir kez oluşturursanız bağlayıcı bağlantısını tekrar ziyaret etmeniz gerekir. farklı veri kümelerindeki kontrol panellerini kullanabilirsiniz.

Kontrol panelinde gezinirken Web Verileri'nin günlük trendlerini görebilirsiniz kullanıcı ve oturum sayısı gibi bazı kullanım bilgilerini de Özet sekmesi.

Kullanıcı Analizi sekmesinde bir metrik seçebilir ve daha sonra Metriklerin yanı sıra farklı kullanım ve işletmeye göre kullanıcı sayısı kullanabilirsiniz.

Sayfa yolu analizi sekmesi, web sitenizdeki sorunlu alanları tespit etmenize web sitesi. Burada, genel bakışı görmek için bir metrik seçebilirsiniz. Ama aynı zamanda y ekseninde yüzdelik dilim değeri olan tüm sayfa yollarının dağılım haritası ve kayıt sayısı. Dağılım haritası, dönüşüm değeri en düşük olan sayfaları tespit etmenize beklenen metrik değerlerinden daha yüksek. Dağılımı kullanarak sayfaları seçtikten sonra, grafiğine erişebilirsiniz. Burada, problemi çözmek için Sayfa yolu Hata Ayıklama Hedefi tablosunu görüntüleme.

Gelir Analizi sekmesi, işletmenizi nasıl izleyebileceğinizin bir örneğidir. aynı yerde özetleyebilirsiniz. Bu bölümde, dönüşüm hunisinin orta kısmına yönelik Kullanıcı satın alma işlemi gerçekleştirmiştir. Elde edilen gelir ile kullanıcı deneyimini karşılaştırabilirsiniz. .

Gelişmiş kullanım

Veri kümesini daha iyi tanıdıkça kontrol panelini düzenleyebilir ve grafiklerinizi oluşturabilirsiniz. Kontrol panelini daha fazla şu adımları uygulayabilirsiniz:

  • Güncellenmiş verileri almak için BigQuery'de planlanmış sorgu oluşturun. Gerçekleştirme çalıştırdığımız sorgu, yalnızca o andaki verilerinizin anlık görüntüsünü alır. Şu durumda: Kontrol panelinizin yeni verilerle güncel kalmasını istiyorsanız, her gün çalıştırılacak ve gerçekleştirilmiş tablonuzu yeni dışı verilerdir.
  • İşletme analizleri için birinci taraf verilerini (ör. CRM) birleştirin. Gerçekleştirilmiş user_id tablosunu ayrı bir sütun olarak ekleyebilirsiniz. Bu sayede birinci taraf verileridir. Birinci taraf verileriniz zaten BigQuery'de değilse şunları yapabilirsiniz: verileri yükleyin veya birleştirilmiş veriler kaynak.
  • Site veya uygulama sürümünüzü, Google'a gönderdiğiniz verilerde parametre olarak raporlama Analytics'ten alıp gerçekleştirilmiş tabloya bir sütun olarak ekleyebilirsiniz. Ardından grafiklerinizde bir boyut olarak göstermek için, bu sürüm verilerini sürüm değişiklikleri performansı etkiler.
  • Veri kümesinin doğrudan web üzerinden çok yoğun bir şekilde Kontrol Paneli'nden, BigQuery BI'nın ücretli sürümünü kullanmayı deneyebilirsiniz. Arama Motoru.

Özet

Bu gönderide, şu işlemleri gerçekleştirmek için Google Analytics 4 ve BigQuery'yi alanında toplanan gerçek kullanıcı verileriyle performans ölçümü ve hata ayıklama. Google Looker Studio kullanarak otomatik raporların ve kontrol panellerinin nasıl oluşturulacağını da açıkladı. ve Web Vitals Bağlayıcısı'nı görselleştirmeye yardımcı olan bir akış şemasıdır.

Bu gönderiden bazı önemli çıkarımlar:

  • Performansı gerçek kullanıcı verileriyle ölçmek, aşağıdakileri anlama konusunda kritik öneme sahiptir: en iyi uygulamaları anlatacağım.
  • Performans metrikleriniz ve işletmeniz hakkında daha ayrıntılı analizler elde edebilirsiniz. aynı sistemde olduğundan emin olun. Google Analytics ve BigQuery, yapmasını sağlar.
  • Ham Google Analytics verilerini BigQuery'ye aktararak sınırsız sayıda potansiyel kapsamlı, özel bir analiz elde edebilirsiniz.
  • Google'ın sunduğu çeşitli API ve görselleştirme araçları (ör. Looker Studio) raporlarınızı tam olarak sizin istediğiniz şekilde oluşturma geliştirmenizi sağlar.