Dữ liệu thô của Báo cáo trải nghiệm người dùng Chrome (CrUX) có trên BigQuery, một cơ sở dữ liệu trên Google Cloud. Để sử dụng BigQuery, bạn cần có một dự án GCP và kiến thức cơ bản về SQL.
Trong hướng dẫn này, hãy tìm hiểu cách sử dụng BigQuery để viết truy vấn dựa trên tập dữ liệu CrUX nhằm trích xuất kết quả chi tiết về trạng thái trải nghiệm người dùng trên web:
- Hiểu cách dữ liệu được sắp xếp
- Viết truy vấn cơ bản để đánh giá hiệu suất của một nguồn gốc
- Viết truy vấn nâng cao để theo dõi hiệu suất theo thời gian
Sắp xếp dữ liệu
Hãy bắt đầu bằng cách xem một truy vấn cơ bản:
SELECT COUNT(DISTINCT origin) FROM `chrome-ux-report.all.202206`
Để chạy truy vấn, hãy nhập truy vấn đó vào trình chỉnh sửa truy vấn rồi nhấn nút "Chạy truy vấn":
Có hai phần của truy vấn này:
SELECT COUNT(DISTINCT origin)
có nghĩa là truy vấn số lượng nguồn gốc trong bảng. Nói một cách thẳng thắn, hai URL là một phần của cùng một nguồn gốc nếu chúng có cùng lược đồ, máy chủ lưu trữ và cổng.FROM chrome-ux-report.all.202206
chỉ định địa chỉ của bảng nguồn, bao gồm ba phần:- Tên dự án trên đám mây
chrome-ux-report
, trong đó tất cả dữ liệu CrUX được sắp xếp - Tập dữ liệu
all
, đại diện cho dữ liệu ở tất cả các quốc gia - Bảng
202206
, năm và tháng của dữ liệu ở định dạng YYYYMM
- Tên dự án trên đám mây
Ngoài ra, còn có tập dữ liệu cho từng quốc gia. Ví dụ: chrome-ux-report.country_ca.202206
chỉ đại diện cho dữ liệu trải nghiệm người dùng bắt nguồn từ Canada.
Trong mỗi tập dữ liệu, có các bảng cho mỗi tháng kể từ tháng 10 năm 2017. Các bảng mới trong tháng trước theo lịch được xuất bản thường xuyên.
Cấu trúc của bảng dữ liệu (còn gọi là giản đồ) chứa:
- Nguồn gốc, ví dụ:
origin = 'https://www.example.com'
, đại diện cho mức phân phối trải nghiệm người dùng tổng hợp cho tất cả các trang trên trang web đó - Tốc độ kết nối tại thời điểm tải trang, ví dụ:
effective_connection_type.name = '4G'
- Loại thiết bị, ví dụ:
form_factor.name = 'desktop'
- Bản thân các chỉ số trải nghiệm người dùng
Dữ liệu cho mỗi chỉ số được sắp xếp dưới dạng một mảng đối tượng. Trong ký hiệu JSON, first_contentful_paint.histogram.bin
sẽ có dạng như sau:
[
{"start": 0, "end": 100, "density": 0.1234},
{"start": 100, "end": 200, "density": 0.0123},
...
]
Mỗi vùng chứa chứa thời gian bắt đầu và kết thúc tính bằng mili giây, cũng như mật độ thể hiện tỷ lệ phần trăm trải nghiệm người dùng trong phạm vi thời gian đó. Nói cách khác, 12, 34% trải nghiệm FCP cho nguồn gốc, tốc độ kết nối và loại thiết bị giả định này có thời gian dưới 100 mili giây. Tổng mật độ của tất cả các vùng chứa là 100%.
Duyệt qua cấu trúc của các bảng trong BigQuery.
Đánh giá hiệu suất
Chúng ta có thể sử dụng kiến thức về giản đồ bảng để viết truy vấn trích xuất dữ liệu hiệu suất này.
SELECT
fcp
FROM
`chrome-ux-report.all.202206`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
effective_connection_type.name = '4G' AND
form_factor.name = 'phone' AND
fcp.start = 0
Kết quả là 0.01115
, có nghĩa là 1,115% trải nghiệm người dùng trên nguồn gốc này là từ 0 đến 100 mili giây trên 4G và trên điện thoại. Nếu muốn tổng quát hoá truy vấn của mình cho mọi kết nối và loại thiết bị, chúng ta có thể loại chúng khỏi mệnh đề WHERE
và sử dụng hàm tổng hợp SUM
để cộng tất cả mật độ thùng tương ứng:
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
Kết quả là 0.05355
, tương đương 5,355% trên tất cả thiết bị và loại kết nối. Chúng ta có thể sửa đổi truy vấn một chút và thêm mật độ cho tất cả các thùng có phạm vi FCP "nhanh" từ 0 đến 1000 mili giây:
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
Điều này mang lại cho chúng ta 0.6977
. Nói cách khác, 69,77% trải nghiệm người dùng FCP trên web.dev được coi là "nhanh" theo định nghĩa phạm vi FCP.
Theo dõi hiệu suất
Giờ đây, khi đã trích xuất dữ liệu hiệu suất về một nguồn gốc, chúng ta có thể so sánh dữ liệu đó với dữ liệu trong quá khứ có trong các bảng cũ. Để làm được việc đó, chúng ta có thể viết lại địa chỉ bảng thành một tháng trước đó hoặc sử dụng cú pháp ký tự đại diện để truy vấn tất cả các tháng:
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
Tại đây, chúng ta thấy tỷ lệ phần trăm trải nghiệm FCP nhanh thay đổi vài điểm phần trăm mỗi tháng.
năm tháng | fast_fcp |
---|---|
202206 | 69,77% |
202205 | 70,71% |
202204 | 69,04% |
202203 | 69,82% |
202202 | 67,75% |
202201 | 58,96% |
202112 | 41,69% |
... | ... |
Với các kỹ thuật này, bạn có thể tra cứu hiệu suất của một nguồn gốc, tính tỷ lệ phần trăm trải nghiệm nhanh và theo dõi hiệu suất đó theo thời gian. Bước tiếp theo, hãy thử truy vấn 2 hoặc nhiều nguồn gốc rồi so sánh hiệu suất của các nguồn gốc đó.
Câu hỏi thường gặp
Sau đây là một số câu hỏi thường gặp về tập dữ liệu CrUX BigQuery:
Khi nào tôi nên sử dụng BigQuery thay vì các công cụ khác?
Bạn chỉ cần BigQuery khi không thể nhận được thông tin tương tự từ các công cụ khác như Trang tổng quan CrUX và Thông tin chi tiết về tốc độ trang. Ví dụ: BigQuery cho phép bạn phân đoạn dữ liệu theo những cách có ý nghĩa và thậm chí kết hợp dữ liệu đó với các tập dữ liệu công khai khác như Bản lưu trữ HTTP để thực hiện một số hoạt động khai thác dữ liệu nâng cao.
Có giới hạn nào đối với việc sử dụng BigQuery không?
Có, hạn chế quan trọng nhất là theo mặc định, người dùng chỉ có thể truy vấn 1TB dữ liệu mỗi tháng. Ngoài ra, chúng tôi sẽ áp dụng mức giá tiêu chuẩn là 5 USD/TB.
Tôi có thể tìm hiểu thêm về BigQuery ở đâu?
Hãy xem tài liệu về BigQuery để biết thêm thông tin.