كيفية استخدام مجموعة بيانات CrUX BigQuery

تتوفّر البيانات الأولية لـ "تقرير تجربة المستخدم على Chrome" (CrUX) على BigQuery، وهي قاعدة بيانات على Google Cloud. يتطلّب استخدام BigQuery مشروعًا على Google Cloud Platform ومعرفة أساسية بلغة الاستعلامات البنيوية (SQL).

في هذا الدليل، تعرَّف على كيفية استخدام BigQuery لكتابة طلبات بحث عن مجموعة بيانات CrUX لاستخراج نتائج مفيدة حول حالة تجارب المستخدمين على الويب:

  • التعرّف على كيفية تنظيم البيانات
  • كتابة طلب بحث أساسي لتقييم أداء مصدر
  • كتابة طلب بحث متقدّم لتتبُّع الأداء بمرور الوقت

تنظيم البيانات

ابدأ بالاطّلاع على طلب بحث أساسي:

SELECT COUNT(DISTINCT origin) FROM `chrome-ux-report.all.202206`

لتشغيل طلب البحث، أدخِله في محرّر طلب البحث وانقر على الزر "تشغيل طلب البحث":

أدخِل طلب بحث بسيطًا في المحرّر واضغط على "تنفيذ".

يتضمّن طلب البحث هذا جزأَين:

  • SELECT COUNT(DISTINCT origin) يعني طلب البحث عن عدد المصادر في الجدول. بشكلٍ عام، يكون عنوانا URL جزءًا من المصدر نفسه إذا كانا يتضمّنان المخطط والمضيف والمنفذ نفسهما.

  • FROM chrome-ux-report.all.202206 يحدّد عنوان جدول المصدر، الذي يتضمّن ثلاثة أجزاء:

    • اسم مشروع على السحابة الإلكترونية chrome-ux-report الذي يتم فيه تنظيم جميع بيانات CrUX
    • مجموعة البيانات all التي تمثّل البيانات في جميع البلدان
    • الجدول 202206 الذي يمثّل السنة والشهر للبيانات بتنسيق YYYYMM

تتوفّر أيضًا مجموعات بيانات لكل بلد. على سبيل المثال، لا يمثّل chrome-ux-report.country_ca.202206 سوى بيانات تجربة المستخدم الواردة من كندا.

ضمن كل مجموعة بيانات، تتوفّر جداول لكل شهر منذ 201710. ويتم نشر جداول جديدة للشهر السابق بانتظام.

يحتوي هيكل جداول البيانات (المعروف أيضًا باسم المخطط) على ما يلي:

  • المصدر، على سبيل المثال origin = 'https://www.example.com'، الذي يمثّل التوزيع الإجمالي لتجربة المستخدم لجميع الصفحات على هذا الموقع الإلكتروني
  • سرعة الاتصال في وقت تحميل الصفحة، على سبيل المثال، effective_connection_type.name = '4G' (تمت إزالة هذا الحقل اعتبارًا من فبراير 2025)
  • نوع الجهاز، على سبيل المثال form_factor.name = 'desktop'
  • مقاييس تجربة المستخدم نفسها
    • first_paint (FP)
    • first_contentful_paint (FCP)
    • largest_contentful_paint (LCP)
    • dom_content_loaded (DCL)
    • onload (OL)
    • layout_instability.cumulative_layout_shift (CLS)
    • interaction_to_next_paint (INP)

يتم تنظيم بيانات كل مقياس على شكل مصفوفة من الكائنات. في تدوين JSON، سيبدو first_contentful_paint.histogram.bin على النحو التالي:

[
    {"start": 0, "end": 100, "density": 0.1234},
    {"start": 100, "end": 200, "density": 0.0123},
    ...
]

يحتوي كل نطاق على وقتَي البدء والانتهاء بالملّي ثانية وكثافة تمثّل النسبة المئوية لتجارب المستخدمين ضمن هذا النطاق الزمني. بعبارة أخرى، تكون 12.34% من تجارب FCP لهذا المصدر وسرعة الاتصال ونوع الجهاز الافتراضيين أقل من 100 ملّي ثانية. ويبلغ مجموع كثافات جميع النطاقات 100%.

تصفَّح بنية الجداول في BigQuery.

تقييم الأداء

يمكننا استخدام معرفتنا بمخطط الجدول لكتابة طلب بحث يستخرج بيانات الأداء هذه.

SELECT
  fcp
FROM
  `chrome-ux-report.all.202502`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  form_factor.name = 'phone' AND
  fcp.start = 0

طلب البحث عن بيانات FCP في CrUX على BigQuery

النتيجة هي 0.01115، ما يعني أنّ% 1.115 من تجارب المستخدمين على هذا المصدر تتراوح بين 0 و100 ملّي ثانية على شبكة الجيل الرابع وعلى هاتف. إذا أردنا تعميم طلب البحث على أي اتصال وأي نوع جهاز، يمكننا إزالتهما من عبارة WHERE واستخدام دالة التجميع SUM لجمع جميع كثافات النطاقات الخاصة بهما:

SELECT
  SUM(fcp.density)
FROM
  `chrome-ux-report.all.202206`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start = 0

جمع قيم FCP في CrUX على BigQuery

النتيجة هي 0.05355 أو% 5.355 على جميع الأجهزة وأنواع الاتصال. يمكننا تعديل طلب البحث قليلاً وجمع الكثافات لجميع النطاقات التي تقع في نطاق FCP "السريع" الذي يتراوح بين 0 و1000 ملّي ثانية:

SELECT
  SUM(fcp.density) AS fast_fcp
FROM
  `chrome-ux-report.all.202206`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start < 1000

طلب البحث عن أسرع وقت لطلاء أول إطار محتوى في BigQuery

نحصل على 0.6977. بعبارة أخرى، تُعد% 69.77 من تجارب المستخدمين في FCP على web.dev "سريعة" وفقًا لتعريف نطاق FCP.

تتبُّع الأداء

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

SELECT
  _TABLE_SUFFIX AS yyyymm,
  SUM(fcp.density) AS fast_fcp
FROM
  `chrome-ux-report.all.*`,
  UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
  origin = 'https://web.dev' AND
  fcp.start < 1000
GROUP BY
  yyyymm
ORDER BY
  yyyymm DESC

طلب البحث عن سلسلة زمنية لبيانات سرعة عرض أول محتوى مرئي (FCP) من تقرير تجربة المستخدم على Chrome في BigQuery

نلاحظ هنا أنّ النسبة المئوية لتجارب FCP السريعة تختلف ببضع نقاط مئوية كل شهر.

yyyymm fast_fcp
202206 %69.77
202205 %70.71
202204 %69.04
202203 %69.82
202202 %67.75
202201 %58.96
202112 %41.69
... ...

باستخدام هذه التقنيات، يمكنك البحث عن أداء مصدر معيّن وحساب النسبة المئوية للتجارب السريعة وتتبُّعها بمرور الوقت. كخطوة تالية، حاوِل طلب البحث عن مصدرَين أو أكثر ومقارنة أدائهما.

الأسئلة الشائعة

في ما يلي بعض الأسئلة الشائعة حول مجموعة بيانات CrUX BigQuery:

متى يجب استخدام BigQuery بدلاً من الأدوات الأخرى؟

لا يكون BigQuery ضروريًا إلا عندما لا يمكنك الحصول على المعلومات نفسها من أدوات أخرى، مثل CrUX Vis وإحصاءات PageSpeed. على سبيل المثال، يتيح لك BigQuery تقسيم البيانات بطرق مفيدة وحتى ربطها بمجموعات بيانات عامة أخرى، مثل HTTP Archive، لإجراء بعض عمليات استخراج البيانات المتقدّمة.

هل تُفرَض أي قيود على استخدام BigQuery؟

نعم، أهم قيد هو أنّه لا يمكن للمستخدمين بشكلٍ تلقائي طلب البحث عن أكثر من تيرابايت واحد من البيانات شهريًا. بعد ذلك، ينطبق السعر العادي البالغ 5 دولار أمريكي لكل تيرابايت.

أين يمكنني الاطّلاع على مزيد من المعلومات عن BigQuery؟

يمكنك الاطّلاع على مستندات BigQuery لمزيد من المعلومات.