Từ bài này, series bước vào phần quy mô dữ liệu, tức Tầng C của lộ trình. Đây là phần thiên về kỹ thuật, và tôi nói thẳng ngay: phần lớn doanh nghiệp nhỏ chưa cần tới nó. Nếu giao diện GA4 và một dashboard Looker vẫn trả lời đủ câu hỏi của bạn, hãy dừng ở đó và quay lại phần này khi thật sự chạm trần. Đọc trước để biết con đường phía trước là tốt, nhưng đừng dựng kho dữ liệu chỉ vì thấy nó "chuyên nghiệp".
Nhà Gọn giờ đã lớn: web, ứng dụng đặt hàng, hệ thống bán hàng, và một danh sách khách trung thành. Câu hỏi họ bắt đầu hỏi mà GA4 không trả lời được: giá trị vòng đời của khách đến từ Facebook so với khách đến từ tìm kiếm tự nhiên là bao nhiêu. Câu này cần ghép hành vi web với doanh thu thật, và đó là lúc BigQuery có nghĩa.
Kho dữ liệu là nơi mọi nguồn gặp nhau
Kho dữ liệu là một cơ sở dữ liệu tập trung, tối ưu cho việc phân tích khối lớn, nơi mọi nguồn dữ liệu của bạn hợp lại. Nó khác cơ sở dữ liệu vận hành của ứng dụng (loại phục vụ giao dịch hằng ngày). BigQuery là kho dữ liệu của Google, và GA4 có thể tự đổ dữ liệu sự kiện thô vào đó.
Giá trị nằm ở ba thứ giao diện GA4 không cho:
- Dữ liệu thô, không lấy mẫu. Giao diện GA4 đôi khi lấy mẫu (ước lượng từ một phần dữ liệu) khi khối lớn, và gộp những giá trị hiếm thành nhóm "khác". BigQuery cho bạn từng sự kiện một, đầy đủ.
- Ghép tự do. Bạn nối dữ liệu web với dữ liệu bán hàng, CRM, ứng dụng, bất cứ nguồn nào có chung một mã khách.
- Giữ lâu. GA4 chỉ giữ dữ liệu chi tiết một thời gian; BigQuery giữ bao lâu tùy bạn.
Checklist: khi nào thật sự cần BigQuery
Bạn cần BigQuery nếu có ít nhất một trong các điều sau:
- Câu hỏi cần ghép GA4 với dữ liệu bán hàng, CRM, hoặc cơ sở dữ liệu ứng dụng, ví dụ giá trị vòng đời theo kênh.
- Giao diện GA4 bị lấy mẫu hoặc gộp nhóm "khác" làm bạn không thấy chi tiết cần thấy.
- Cần retention hoặc quy công chính xác trên dữ liệu thô.
- Muốn giữ dữ liệu lâu hơn thời hạn của GA4.
- Chuẩn bị cho bước tiếp theo: mô hình hóa dữ liệu, product analytics, hoặc máy học.
Bạn CHƯA cần nếu giao diện GA4 cộng Looker vẫn trả lời đủ. Đừng dựng kho dữ liệu vì thấy sang, hãy dựng vì có một câu hỏi cụ thể mà cách hiện tại không trả lời được. Với Nhà Gọn, câu hỏi giá trị vòng đời theo kênh là lý do chính đáng; nếu chưa có câu hỏi như vậy, họ đã không cần.
Schema sự kiện lồng nhau và lệnh mở lồng
Đây là chỗ làm người mới bối rối nhất. Trong bảng sự kiện của GA4 trên BigQuery, mỗi dòng là một sự kiện. Nhưng thuộc tính sự kiện không nằm ở các cột phẳng, mà là một mảng các cặp khóa và giá trị lồng bên trong.
Nghĩa là để lấy giá trị của một thuộc tính, ví dụ kênh của đơn hàng, bạn phải "mở lồng" mảng đó rồi lọc theo khóa. Đây là mẫu truy vấn cốt lõi cần thuộc:
SELECT
event_name,
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'channel') AS channel,
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'value') AS order_value
FROM `du-an.analytics_123456.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
AND event_name = 'purchase';
Chú ý dòng lọc theo ngày ở cuối. Nó không phải tùy chọn.
Luôn lọc theo ngày, nếu không hóa đơn sốc
BigQuery tính tiền theo lượng dữ liệu mỗi truy vấn quét. Bảng sự kiện được chia theo ngày. Nếu bạn quên lọc ngày, một truy vấn có thể quét toàn bộ nhiều tháng hoặc nhiều năm dữ liệu, và hóa đơn có thể nhảy lên bất ngờ.
Luôn thêm điều kiện lọc theo khoảng ngày trong mọi truy vấn. Và đừng dùng lệnh lấy tất cả cột trên bảng lớn, chỉ chọn cột bạn cần. Đặt một cảnh báo ngân sách trong Google Cloud để được báo khi chi phí vượt ngưỡng. Đây là kỷ luật cơ bản nhưng bỏ qua nó là bài học đắt.
Câu hỏi mà chỉ BigQuery trả lời được
Sức mạnh thật của BigQuery lộ ra khi ghép nguồn. Đây là kiểu truy vấn Nhà Gọn cần, ghép sự kiện đăng ký web với doanh thu thật để thấy giá trị theo kênh:
SELECT
g.first_channel,
COUNT(DISTINCT g.user_id) AS khach,
SUM(b.total_spent) AS doanh_thu
FROM ga_users g
JOIN sales.customers b ON b.user_id = g.user_id
GROUP BY g.first_channel
ORDER BY doanh_thu DESC;
Truy vấn kiểu này trả lời câu "kênh nào mang về khách có giá trị vòng đời cao nhất", điều mà giao diện GA4 không làm được vì nó không biết doanh thu thật của bạn. Đây chính là loại câu hỏi biện minh cho việc dựng kho dữ liệu.
Một lưu ý khi đối chiếu: số trong BigQuery sẽ hơi lệch số trong giao diện GA4, do khác định nghĩa phiên và cách quy công. Lệch nhẹ là bình thường, đừng hoảng.
Ba lỗi thường gặp với BigQuery
| Lỗi | Vì sao hại | Cách sửa |
|---|---|---|
| Bật xuất dữ liệu muộn | Mất toàn bộ dữ liệu quá khứ, không hồi tố | Bật ngay cả khi chưa dùng |
| Quên lọc theo ngày | Quét cả kho, hóa đơn sốc | Luôn lọc khoảng ngày, đặt cảnh báo ngân sách |
| Sửa trực tiếp bảng xuất gốc | Mất dữ liệu gốc, không dựng lại được | Làm việc trên bảng trung gian riêng |
Trước khi sang bài 5
- Nếu bạn qua được checklist ở trên, bật xuất dữ liệu GA4 sang BigQuery, chọn chế độ hằng ngày.
- Chờ dữ liệu về, kiểm tra bảng sự kiện xuất hiện.
- Luyện lệnh mở lồng: lấy ba thuộc tính ra thành cột cho một sự kiện, luôn lọc theo ngày.
- Thực hiện một phép ghép giữa GA4 và dữ liệu bán hàng qua mã người dùng.
- Đặt một cảnh báo ngân sách trong Google Cloud.
Có dữ liệu thô trong kho rồi, bạn sẽ nhanh chóng thấy mình viết đi viết lại cùng những phép mở lồng và biến đổi. Bài 5 nói về công cụ tự động hóa việc đó, biến sự kiện thô thành các bảng sạch dùng được, một cách có kỷ luật và kiểm thử được, gọi là dbt.
Đọc tiếp
Bài 5, dbt: biến sự kiện thô thành bảng dùng được
Dữ liệu thô trong kho mạnh nhưng lộn xộn. dbt biến nó thành các bảng sạch, có kiểm thử, tái dùng, với một định nghĩa chỉ số duy nhất. Bài này giải thích tư duy mô hình hóa dữ liệu theo lớp, bảng sự kiện và bảng chiều, và vì sao định nghĩa một lần chấm dứt cảnh mỗi dashboard một con số.
Đọc bàiBài 1, Content và SEO analytics: đo nội dung nào thật sự ra khách
Phần lớn doanh nghiệp đo nội dung bằng lượt xem, nên không biết bài nào ra khách. Bài này ghép nửa trước click (Search Console) với nửa sau click (GA4) thành một phễu SEO đầy đủ, giới thiệu ma trận nội dung để quyết định mở rộng hay bỏ, và cách đo tới tận chuyển đổi thay vì dừng ở view.
Đọc bàiBài 2, Quy công quảng cáo: Pixel, Conversions API và khử trùng lặp
Đây là nơi analytics đụng thẳng vào tiền: conversion sai thì thuật toán đấu thầu tối ưu sai và đốt ngân sách. Bài này giải thích cách gửi conversion tin cậy bằng Pixel và Conversions API song song, khử trùng lặp bằng event_id, các mô hình quy công, và vì sao số của GA4, Google Ads và Meta không bao giờ khớp nhau.
Đọc bài