قياس الأداء وتصحيح الأخطاء فيه باستخدام "إحصاءات Google 4" وBigQuery

تعرَّف على كيفية إرسال بيانات "مؤشرات أداء الويب" إلى مواقع "إحصاءات Google 4" وتصدير البيانات لتحليلها في BigQuery وLooker Studio.

توفر Google عددًا من الأدوات: وحدة التحكم، PageSpeed Insights (PSI) تجربة المستخدم على Chrome الإبلاغ (CrUX): تتيح للمطورين معرفة مستوى أداء مواقعهم على الويب الأساسي المؤشرات الحيوية للمستخدمين الفعليين في .

هذه الأدوات رائعة من حيث إنها تمنحك نظرة عامة على ظهور موقعك أداء المستخدم الفعلي، ولا تتطلب أي إعداد على الإطلاق لبدء استخدامها.

ومع ذلك، هناك بعض الأسباب المهمة التي قد تدفعك إلى عدم الاعتماد على هذه فقط لقياس أداء موقعك:

  • تُعِدّ الأدوات المستندة إلى CrUX البيانات إما شهريًا أو خلال فترات سابقة تبلغ 28 يومًا. وهذا يعني أنّك ستضطر إلى الانتظار لفترة طويلة بعد إجراء أي تغييرات قبل الاطلاع على النتائج.
  • لا يمكن تقسيم الأدوات المستندة إلى CrUX إلا حسب عدد محدود من السمات، مثل البلد ونوع الاتصال وفئة الجهاز (جهاز كمبيوتر مكتبي أو جهاز جوّال). لا يمكنك تقسيم البيانات حسب السمات الخاصة بنشاطك التجاري (على سبيل المثال: تفاعُل المستخدمين أو المستخدمين في مجموعة تجربة معينة، إلخ.).
  • تُطلعك الأدوات المستندة إلى CrUX على مستوى أدائك، ولكن لا يمكنها معرفة ما إذا كان لك لماذا. باستخدام أدوات الإحصاءات، يمكنك إرسال بيانات إضافية لمساعدتك على تتبّع وتصحيح الأخطاء.

لهذه الأسباب، ننصح جميع مالكي المواقع الإلكترونية بتتبُّع مقاييس "مؤشرات أداء الويب الأساسية". باستخدام أداة الإحصاءات الحالية توضّح هذه المشاركة كيفية استخدام التطبيق مجانًا المقدمة من Google لتحقيق ذلك.

بعد الانتهاء من الإعداد، ستتمكّن من إنشاء لوحات بيانات مثل هذه:

لقطة شاشة لتقرير "أداة ربط مؤشرات أداء الويب"

لقطة شاشة لتقرير "أداة ربط مؤشرات أداء الويب"

للحصول على نظرة عامة مرئية عن جميع الخطوات الموضّحة هنا، يمكنك الاطّلاع على الكلمة التي تناولناها في مؤتمر Google I/O لعام 2021:

القياس

كان قياس الأداء ممكنًا دائمًا من خلال "إحصاءات Google" باستخدام المقاييس المخصصة، ولكن هناك بعض الميزات الجديدة في "إحصاءات Google" 4 (إحصاءات Google 4) التي ينفّذها المطوّرون التي ينبغي أن تكون متحمسًا لها على وجه الخصوص.

وعلى الرغم من احتواء واجهة الويب "إحصاءات Google" على أدوات تحليل قوية، فهو من الصعب استخدام قدرة ومرونة الوصول إلى بيانات الأحداث الأولية باستخدام طلب لغة ربما تعرفها بالفعل.

لبدء قياس "مؤشرات أداء الويب الأساسية" باستخدام "إحصاءات Google 4" وBigQuery، تحتاج إلى القيام بثلاثة أشياء:

  1. إنشاء موقع على "إحصاءات Google 4" السمة مشروع BigQuery
  2. تفعيل BigQuery Export في تهيئة موقعك على "إحصاءات Google"، لذلك ستتم إزالة جميع البيانات التي تتلقاها تلقائيًا في جداول مشروع BigQuery.
  3. إضافة رمز JavaScript لمؤشرات أداء الويب إلى موقعك الإلكتروني، حتى تتمكّن من قياس مقاييس "مؤشرات أداء الويب الأساسية" إرسال البيانات إلى "إحصاءات Google" 4، بما في ذلك بيانات تحديد المصدر.

التحليل

بعد الانتهاء من الإعداد، من المفترض أن تظهر بيانات الأحداث وهي تتم تعبئتها في BigQuery. ويجب أن تكون قادرًا على الاستعلام عن البيانات على النحو التالي:

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

إليك معاينة للنتائج من طلب البحث هذا:

بيانات أحداث "مؤشرات أداء الويب" في BigQuery

بيانات "مؤشرات أداء الويب" لطلبات البحث

قبل بدء طلب بيانات الأحداث في "مؤشرات أداء الويب"، من المهم فهم كيفية تجميع البيانات.

من المهم أن نفهم أنّه في بعض الحالات، قد تتشارك الأحداث المتعددة قد يكون مُستلَمة للمقياس نفسه على الصفحة نفسها يمكن أن يحدث هذا إذا كانت قيمة المقياس الإبلاغ عن التغييرات وقيمة معدّلة (موضع شائع في متغيّرات التصميم التراكمية (CLS)

بالنسبة إلى أحداث مؤشرات أداء الويب، تكون القيمة الأخيرة المُرسَلة دائمًا هي الأكثر دقة، لذلك قبل إجراء أي تحليل، من المهم التصفية بحثًا عن تلك القيم فقط. مقتطف الرمز الذي توفّره مكتبة JavaScript لمؤشرات أداء الويب لإرسال البيانات إليه تتضمّن "إحصاءات Google 4" إرسال معرّف فريد لكل مقياس، حتى تتمكّن من استخدام التالي الاستعلام لقصر نتائجك على آخر قيمة تم تلقيها فقط لكل معرِّف المقياس:

# 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
)

يُرجى العلم أنّ جميع طلبات البحث الأخرى المُشار إليها في هذه المشاركة ستبدأ بما يلي: استعلام فرعي.

أمثلة على طلبات البحث

تعرض الأقسام القليلة التالية بعض الأمثلة على طلبات البحث الشائعة في "مؤشرات أداء الويب" التي قد نريد تشغيله.

LCP وINP وCLS عند الشريحة المئوية البالغة 75% (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
  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

كل قيم 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
  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

أهمّ 10 صفحات تتضمّن أسوأ قيم متغيّرات التصميم التراكمية (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

تصحيح الأخطاء

تعرض طلبات البحث السابقة كيفية إجراء طلبات بحث في بيانات مقياس "مؤشرات أداء الويب"، وهي مفيدة. للتعرّف على مستوى أدائك الحالي ومدى رواجه بمرور الوقت. لَكِنْ ما الذي يمكنك فعله إذا كان أدائك أسوأ من المتوقع لكنك غير متأكد والسبب وراء ذلك؟

لا تكون معرفة درجاتك مفيدة إذا لم تتمكّن من اتخاذ إجراء. وإصلاح المشكلات.

مقالة تصحيح الأخطاء في الأداء في الحقل يمكنك إرسال معلومات تصحيح أخطاء إضافية مع بيانات الإحصاءات. إذا كنت اتّبِع التعليمات الموضّحة بالتفصيل في هذه المشاركة، وسيظهر لك تصحيح الأخطاء هذا المعلومات في BigQuery أيضًا.

أمثلة على طلبات البحث

توضّح طلبات البحث التالية كيفية استخدام مَعلمة حدث debug_target للمساعدة. وتحديد السبب الجذري لمشاكل الأداء.

أهم العناصر التي تساهم في متغيّرات التصميم التراكمية (CLS)

debug_target هي سلسلة لأداة اختيار لغة CSS تتطابق مع العنصر على الصفحة الأكثر صلةً بقيمة المقياس.

مع CLS، يمثل debug_target العنصر الأكبر من أكبر متغيّرات التصميم الذي ساهم في قيمة متغيّرات التصميم التراكمية (CLS). إذا لم تتحول أي عناصر، ستكون قيمة debug_target هي null.

سيسرد الاستعلام التالي الصفحات من الأسوأ إلى الأفضل حسب متغيّرات التصميم التراكمية (CLS) في اليوم 75 الشريحة المئوية، مجمّعة حسب debug_target:

# 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)

إن معرفة العناصر الموجودة على الصفحة تتغير يجب أن تسهل لتحديد السبب الجذري للمشكلة وإصلاحها.

ضع في اعتبارك أن العناصر الواردة هنا قد لا تكون هي نفسها التي تلاحظ تغييرًا عند تصحيح أخطاء صفحاتك محليًا، وهذا هو السبب في لتسجيل هذه البيانات في المقام الأول. من الصعب جدًا إصلاح الأمور التي لا تدرك أنها مشكلات!

تصحيح أخطاء المقاييس الأخرى

يعرض الاستعلام السابق نتائج مقياس متغيّرات التصميم التراكمية (CLS)، ولكن النتيجة نفسها يمكن استخدامها للإبلاغ عن أهداف تصحيح الأخطاء الخاصة بمقياسَي LCP وINP. العدل استبدل عبارة where بالمقياس ذي الصلة لتصحيح الأخطاء:

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

يمكنك مرة أخرى الرجوع إلى أداء تصحيح الأخطاء في للحصول على تعليمات حول كيفية جمع إرسال معلومات تصحيح الأخطاء لكل مقياس من مقاييس "مؤشرات أداء الويب الأساسية"

تصور

قد يكون من الصعب الحصول على رؤى فقط من خلال النظر إلى نتائج الاستعلام بمفرده. على سبيل المثال، يسرد الاستعلام التالي قيم الشريحة المئوية الخامسة والسبعين 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

من نتائج الاستعلام هذه، من الصعب تحديد المؤشرات أو القيم الاستثنائية فقط البحث في البيانات.

نتائج طلب البحث عن قيمة المقياس اليومي

في مثل هذه الحالات، يمكن أن يساعدك تصور البيانات في استخلاص الرؤى بسرعة أكبر.

عرض نتائج طلبات البحث بشكل مرئي في Looker Studio

يوفر BigQuery طريقة سريعة لتصور أي نتائج استعلام من خلال Data استوديو YouTube. Looker Studio هي عرض مرئي للبيانات ولوحة المعلومات المجانية الاستخدام. لتصور نتائج الاستعلام لديك، بعد تنفيذ الطلب في واجهة مستخدم BigQuery، انقر على الزر "Explore Data" (استكشاف البيانات) انقر على الاستكشاف باستخدام Looker Studio.

الاستكشاف باستخدام خيار Looker Studio في BigQuery

سيؤدي هذا إلى إنشاء رابط مباشر من BigQuery إلى Looker Studio في الاستكشاف. مشاهدة. في طريقة العرض هذه، يمكنك تحديد الحقول التي تريد عرضها، واختيار وأنواع المخططات، وإعداد الفلاتر، وإنشاء مخططات مخصّصة لإجراء تحليل مرئي سريع. من نتائج الاستعلام السابقة، يمكنك إنشاء هذا المخطط الخطي لمعرفة اتجاه قيم LCP بمرور الوقت:

رسم بياني خطي لقيم LCP اليومية في Looker Studio

من خلال هذا الرابط المباشر بين BigQuery وLooker Studio، يمكنك إنشاء محتوى سريع المخططات من أي من استعلاماتك وإجراء تحليل مرئي. ومع ذلك، إذا كنت تريد وإجراء تحليل إضافي، فقد ترغب في إلقاء نظرة على العديد من المخططات في لوحة معلومات تفاعلية للحصول على نظرة أكثر شمولاً أو القدرة على التعمق في البيانات. إن وجود لوحة معلومات مفيدة يعني أنك لست مضطرًا لكتابة الاستعلامات وإنشاء مخططات يدويًا في كل مرة تريد فيها تحليل المقاييس.

يمكنك إنشاء لوحة بيانات في Looker Studio باستخدام أداة BigQuery الأصلية. موصل. لإجراء ذلك، انتقِل إلى datastudio.google.com وأنشِئ حسابًا جديدًا مصدر البيانات، واختَر موصل BigQuery، ثم اختَر مجموعة البيانات التي تريد في العمل مع:

استخدام موصِّل BigQuery الأصلي في Looker Studio

تجسيد بيانات "مؤشرات أداء الويب"

عند إنشاء لوحات بيانات لبيانات أحداث مؤشرات أداء الويب كما هو موضح سابقًا، من استخدام مجموعة بيانات التصدير في "إحصاءات Google 4" مباشرةً بسبب بنية بيانات "إحصاءات Google 4" والمعالجة المسبقة المطلوبة لمؤشرات أداء الويب والمقاييس، فسيتم عرض أجزاء من استعلامك عدة مرات. يؤدي هذا إلى إنشاء المشكلتين وهما: أداء لوحة المعلومات وتكاليف BigQuery.

يمكنك استخدام وضع الحماية في BigQuery بدون أي رسوم. باستخدام دالة BigQuery فئة الاستخدام المجاني، أول 1 تيرابايت من بيانات طلبات البحث التي تتم معالجتها شهريًا تكون مجانية. بالنسبة لطرق التحليل ما تمت مناقشته في هذه المقالة، ما لم تكن تستخدم مجموعة بيانات كبيرة جدًا أو يستعلمون بشكل كبير عن مجموعة البيانات بانتظام، ينبغي أن تكون قادرًا على البقاء داخل هذا الحد المجاني كل شهر. ولكن إذا كان لديك موقع ويب يتزايد عدد الزيارات إليه وتريد مراقبة المقاييس المختلفة بانتظام باستخدام لوحة معلومات تفاعلية سريعة، تقترح معالجة بيانات مؤشرات أداء الويب مسبقًا ودمجها مع الاستفادة من ميزات كفاءة BigQuery، مثل التقسيم والتجميع العنقودي والتخزين المؤقت

سيعالج النص البرمجي التالي بيانات BigQuery (جدول المصدر) مسبقًا إنشاء جدول ملموس (جدول الاستهداف). عند استخدام هذا الاستعلام الخاص بك قد ترغب أيضًا في تحديد نطاق زمني لجدول المصدر تخفيض كمية البيانات التي تتم معالجتها.

# 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');

مجموعة البيانات التي تحققت هذه لها عدة مزايا:

  • يتم تبسيط هيكل البيانات ويسهل الاستعلام عنها.
  • وهي تحتفظ فقط بأحداث "مؤشرات أداء الويب" الواردة من مجموعة البيانات الأصلية في "إحصاءات Google 4".
  • رقم تعريف الجلسة ونوع المستخدم (الجدد في مقابل مكرِّري الزيارة) ومعلومات التفاعل في الجلسة متاحة مباشرةً في الأعمدة.
  • الجدول تقسيم حسب التاريخ ومجمّع حسب اسم المقياس وعادةً ما يقلل هذا من كمية البيانات التي تتم معالجتها لكل طلب البحث.
  • ونظرًا لأنك لست بحاجة إلى استخدام أحرف البدل للاستعلام عن هذا الجدول، يمكن لنتائج الاستعلام تخزينها مؤقتًا لمدة تصل إلى 24 ساعة. هذا يقلل التكاليف من تكرار نفس طلب البحث.
  • إذا كنت تستخدم محرّك ذكاء الأعمال في BigQuery، يمكنك تشغيل دوال SQL المحسَّنة المشغلات على هذا المؤقت.

يمكنك الاستعلام عن هذا الجدول الفعلي مباشرةً من داخل واجهة مستخدم BigQuery أو استخدامه في Looker Studio باستخدام موصِّل BigQuery

استخدام "أداة ربط مؤشرات أداء الويب"

نظرًا لأن إنشاء لوحة معلومات من البداية يستغرق وقتًا طويلاً، فقد طورنا مجموعة سينشئ لوحة بيانات نموذجية لك. أولاً، تأكد من جدول "مؤشرات أداء الويب" باستخدام طلب البحث السابق. ثم قم بالوصول إلى أداة ربط "مؤشرات أداء الويب" في Looker Studio باستخدام هذا الرابط: goo.gle/web-vitals-connector

بعد تقديم تفويض لمرة واحدة، من المفترض أن يظهر لك ما يلي: شاشة التهيئة:

شاشة تفويض "موصل مؤشرات أداء الويب"

قم بتقديم رقم تعريف جدول BigQuery الذي تم تحقيقه (أي الجدول المستهدف) رقم تعريف مشروع فوترة BigQuery بعد النقر على الربط، ستنشئ أداة Looker Studio جديدة مستندة إلى نموذج وربط بياناتك بها. يمكنك تعديل البيانات وشارك لوحة المعلومات كما تشاء. إذا أنشأت لوحة معلومات مرة واحدة، فلا الانتقال إلى رابط الموصِّل مرة أخرى، إلا إذا كنت ترغب في إنشاء عدة روابط ولوحات المعلومات من مجموعات بيانات مختلفة.

أثناء التنقّل في لوحة البيانات، يمكنك الاطّلاع على المؤشرات اليومية لمؤشرات أداء الويب. وبعض معلومات الاستخدام لموقعك الإلكتروني، مثل المستخدِمين والجلسات علامة التبويب ملخّص

في علامة التبويب تحليل المستخدم، يمكنك تحديد مقياس ثم الحصول على تفاصيل بالنسبة المئوية للمقاييس بالإضافة إلى عدد المستخدمين حسب الاستخدام والأنشطة التجارية المختلفة والمقاييس.

ستساعدك علامة التبويب تحليل مسار الصفحة في تحديد مناطق المشاكل في موقعك الإلكتروني. يمكنك هنا اختيار مقياس للاطّلاع على النظرة العامة. ولكن ترى أيضًا خريطة مبعثرة لجميع مسارات الصفحات ذات القيمة المئوية على المحور ص والعد على المحور س. يمكن أن تساعد خريطة التبعثر في تحديد الصفحات التي تحتوي على قيم عن قيم المقياس المتوقعة. بعد تحديد الصفحات باستخدام نظام النقاط المبعثرة في جدول مسار الصفحة، يمكنك التوغّل بشكل أكبر في مجال المشكلة من خلال الاطّلاع على جدول تصحيح الأخطاء المستهدَف.

تقدّم علامة التبويب تحليل الأرباح مثالاً على كيفية مراقبة نشاطك التجاري. ومقاييس الأداء في المكان نفسه. يعرض هذا القسم جميع الجلسات التي أجرى المستخدم عملية شراء. يمكنك مقارنة الأرباح المكتسَبة مقابل تجربة المستخدم خلال جلسة معيّنة .

الاستخدام المتقدّم

عندما تصبح أكثر دراية بمجموعة البيانات، يمكنك تحرير لوحة المعلومات وإضافة مخططاتك الخاصة للحصول على تحليل أكثر ثراءً واستهدافًا. لجعل لوحة المعلومات أكثر مفيدة، يمكنك اتخاذ الخطوات التالية:

  • عليك إعداد طلب بحث مُجدوَل في BigQuery للحصول على بيانات محدّثة. التعريف الذي أجريناه سابقًا أخذ لقطة من بياناتك فقط في تلك اللحظة. إذا كنت تريد تحديث لوحة بياناتك بالبيانات الجديدة، يمكنك تنفيذ جدول الذي سيتم تشغيله كل يوم وإلحاق الجدول الذي يتحقق به البيانات.
  • يمكنك دمج بيانات الطرف الأول (مثل إدارة علاقات العملاء) للحصول على إحصاءات حول النشاط التجاري. في الحدث جدول، يمكنك إضافة user_id كعمود منفصل. سيسمح لك ذلك بالانضمام إلى بيانات الطرف الأول. إذا لم تكن بيانات الطرف الأول متوفّرة في BigQuery، يمكنك فعل ذلك. تحميل البيانات أو استخدام بيانات موحدة المصدر
  • يمكنك الإبلاغ عن إصدار موقعك الإلكتروني أو تطبيقك بوصفه مَعلمة في البيانات التي تُرسِلها إلى Google. Analytics وإضافتها كعمود في الجدول الفعلي. بعد ذلك، يمكنك إضافة بيانات هذا الإصدار كسمة في الرسوم البيانية لتسهيل رؤيتها تؤثر تغييرات الإصدار في الأداء.
  • إذا كنت تتوقع استخدامًا كبيرًا جدًا لمجموعة البيانات من خلال أو لوحة البيانات، يمكنك محاولة استخدام الإصدار المدفوع من BigQuery BI المحرّك:

ملخّص

تناولت هذه المشاركة أساسيات استخدام "إحصاءات Google 4" وBigQuery لتنفيذ ما يلي: قياس الأداء وتصحيحه باستخدام بيانات المستخدم الحقيقية التي يتم جمعها في هذا المجال. أُنشأها جون هنتر، الذي كان متخصصًا شرحت أيضًا كيفية إنشاء تقارير ولوحات بيانات مبرمَجة باستخدام أداة Looker Studio. وموصل مؤشرات أداء الويب لإجراء لتصور البيانات بأكبر قدر ممكن من السهولة.

بعض النقاط الرئيسية من هذه المشاركة:

  • يُعد قياس الأداء باستخدام بيانات المستخدم الحقيقية أمرًا بالغ الأهمية لفهم وتصحيح الأخطاء وتحسين موقعك.
  • يمكنك الحصول على إحصاءات أكثر تفصيلاً عند استخدام مقاييس الأداء ونشاطك التجاري المقاييس في النظام نفسه. تجعل خدمتا Google Analytics وBigQuery هذا ممكن.
  • يمنحك تصدير BigQuery لبيانات Google Analytics الأولية إمكانات غير محدودة تحليلاً مخصصًا ومتعمقًا باستخدام لغة استعلام ربما تعرفها بالفعل.
  • تمتلك Google عددًا من واجهات برمجة التطبيقات وأدوات التصوير، مثل Looker Studio الذي يمنح حرية إنشاء تقاريرك بالطريقة التي تريدها بالضبط بُنيت.