Thu hẹp khoảng cách giữa giao diện người dùng Google Analytics và BigQuery Export

Minhaz Kazi, Chuyên gia hỗ trợ nhà phát triển, Google Analytics – Tháng 4 năm 2023


"Nhưng tại sao những con số đó không khớp với giao diện người dùng?"

Nếu đã từng làm việc với dữ liệu xuất sự kiện BigQuery cho tài sản GA4, chắc chắn bạn đã đặt ra câu hỏi này. Hoặc tệ hơn - có người khác đã hỏi bạn điều này. Và trong khi cố gắng trả lời câu hỏi đó, có thể bạn đã được hỏi câu hỏi đáng sợ tiếp theo:

"Vậy nó nói ở đâu?"

Trong bài viết này, chúng tôi sẽ cố gắng làm sáng tỏ cả hai vấn đề.

Trước khi tìm hiểu chi tiết về sự khác biệt của các con số, điều quan trọng là bạn phải hiểu mục đích dự định của dữ liệu xuất sự kiện BigQuery. Người dùng Google Analytics gửi dữ liệu đã thu thập của họ đến GA thông qua một trong các phương pháp thu thập – Thẻ Google, Trình quản lý thẻ của Google, Measurement Protocol, SDKNhập dữ liệu. Dựa trên chế độ cài đặt của tài sản GA, Google Analytics bổ sung giá trị đáng kể cho dữ liệu đã thu thập trước khi chuyển đến các nền tảng báo cáo chuẩn, bao gồm cả báo cáo chuẩn, Dữ liệu khám pháData API. Những nội dung bổ sung giá trị này có thể bao gồm tín hiệu của Google, tính năng lập mô hình, phân bổ lưu lượng truy cập, thông tin dự đoán, v.v.

Mục đích của nền tảng báo cáo tiêu chuẩn là cung cấp giá trị tối đa cho người dùng GA ở mức dễ dàng nhất. Tuy nhiên, chúng tôi hiểu rằng đối với nhiều người dùng, một số người có thể muốn bổ sung giá trị do Google Analytics bổ sung hoặc thậm chí thực hiện việc gì đó được tuỳ chỉnh hoàn toàn. Đối với những người dùng này, tính năng xuất sự kiện BigQuery là điểm khởi đầu mong muốn. Tính năng xuất sự kiện BigQuery sẽ thu thập dữ liệu. Dữ liệu này được gửi từ ứng dụng hoặc ứng dụng đến Google Analytics. Tính năng xuất sự kiện BigQuery sẽ không chứa dữ liệu chi tiết về hầu hết các giá trị bổ sung nêu trên.

Do đó, đối với nhiều trường hợp sử dụng, các nền tảng báo cáo tiêu chuẩn và dữ liệu xuất sang BigQuery sẽ không điều chỉnh được khi nói đến những phần bổ sung giá trị này. Nếu cả hai đều có tính nhất quán nội bộ và phù hợp với nội dung bạn đang thu thập, thì bạn đã sẵn sàng.

Bây giờ, hãy cùng tìm hiểu một số lý do cụ thể dẫn đến sự khác biệt và khám phá các cách giảm thiểu chúng khi có thể. Bài viết này chỉ tập trung vào tính năng Xuất sự kiện hằng ngày của BigQuery chứ không tập trung vào tính năng Xuất trực tuyến.

Lấy mẫu

Để so sánh chính xác dữ liệu BigQuery Export với báo cáo chuẩn, báo cáo API dữ liệu hoặc báo cáo Khám phá, hãy xác nhận rằng những dữ liệu này không dựa trên dữ liệu được lấy mẫu. Phương pháp lấy mẫu dữ liệu trong GA4 cung cấp thêm thông tin chi tiết và các cách để xử lý hoạt động lấy mẫu.

Số người dùng đang hoạt động

Nếu tính tất cả người dùng đã ghi lại ít nhất một sự kiện trên tài sản GA4, bạn sẽ nhận được chỉ số Tổng số người dùng. Mặc dù chỉ số Tổng số người dùng có trong công cụ Khám phá trong giao diện người dùng GA4, nhưng chỉ số người dùng chính được dùng để báo cáo trong GA4 là Số người dùng đang hoạt động. Trong giao diện người dùng GA4 và trong các báo cáo, nếu chỉ có Người dùng được đề cập, thì thường là Số người dùng đang hoạt động. Vì vậy, khi tính toán số người dùng từ dữ liệu BigQuery, bạn sẽ cần lọc và chỉ giữ lại số người dùng đang hoạt động để có thể so sánh với giao diện người dùng GA. Phương thức tính toán cũng sẽ thay đổi dựa trên Thông tin nhận dạng trong báo cáo mà bạn đã chọn.

Triển khai kỹ thuật

Trong dữ liệu xuất sự kiện BigQuery, nếu tính số lượng Mã nhận dạng người dùng riêng biệt, bạn sẽ có được số lượng Tổng số người dùng. Dưới đây là một truy vấn mẫu cho biết cả Tổng số người dùng và Số người dùng mới dựa trên user_pseudo_id:

-- Example: Get 'Total User' count and 'New User' count.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      MAX(IF(event_name IN ('first_visit', 'first_open'), 1, 0)) AS is_new_user
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
    GROUP BY 1
  )
SELECT
  COUNT(*) AS user_count,
  SUM(is_new_user) AS new_user_count
FROM UserInfo;

Để chỉ chọn người dùng đang hoạt động, hãy giới hạn truy vấn của bạn ở các sự kiện có is_active_usertrue:

-- Example: Get exact and approximate Active User count.

WITH
  ActiveUsers AS (
    SELECT
      user_pseudo_id
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
      AND is_active_user
    GROUP BY 1
  )
SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_active_user_count,
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_active_user_count
FROM ActiveUsers;

HyperLogLog++

Google Analytics sử dụng thuật toán HyperLogLog++ (HLL++) để ước tính số lượng giá trị riêng biệt cho các chỉ số phổ biến, bao gồm cả Số người dùng đang hoạt động và Số phiên. Điều đó có nghĩa là khi bạn xem số lượng riêng biệt của các chỉ số này trong giao diện người dùng hoặc thông qua API, chúng là kết quả gần đúng với độ chính xác nhất định. Trong BigQuery, vì bạn có quyền truy cập vào dữ liệu chi tiết, nên bạn có thể tính số lượng giá trị riêng biệt chính xác cho các chỉ số này. Vì vậy, các chỉ số có thể chênh lệch với một tỷ lệ nhỏ. Ở khoảng tin cậy 95%, độ chính xác của số phiên có thể là ±1,63%. Mức độ chính xác sẽ khác nhau đối với các chỉ số khác nhau và sẽ thay đổi theo khoảng tin cậy. Xem phần Bản phác thảo HLL++ để biết mức độ chính xác tại các khoảng tin cậy khác nhau đối với các tham số chính xác khác nhau của HLL++.

Triển khai kỹ thuật

Xem bài viết Giá trị gần đúng của số lượng duy nhất trong Google Analytics để hiểu cách triển khai HLL++ trong Google Analytics và cách bạn có thể sao chép chức năng này bằng truy vấn BigQuery.

Trì hoãn việc thu thập dữ liệu

Bảng xuất dữ liệu hằng ngày được tạo sau khi GA thu thập tất cả sự kiện trong ngày. Bảng hằng ngày có thể được cập nhật sau tối đa 72 giờ kể từ ngày tạo bảng với các sự kiện được đánh dấu thời gian với ngày trong bảng. Hãy đọc thông tin chi tiết về vấn đề này và xem các ví dụ. Đây sẽ là vấn đề nhiều hơn nếu phương thức triển khai SDK Firebase hoặc Measurement Protocol của bạn gửi sự kiện ngoại tuyến hoặc sự kiện bị trì hoãn. Tuỳ thuộc vào thời điểm nền tảng báo cáo chuẩn và BigQuery được cập nhật trong vòng 72 giờ đó, bạn có thể thấy sự khác biệt giữa chúng. Đối với cách triển khai như vậy, bạn nên so sánh trên dữ liệu cũ hơn 72 giờ.

Báo cáo có số lượng giá trị riêng biệt cao

Giả sử bạn đang xem báo cáo thông qua các báo cáo chuẩn hoặc Data API. Báo cáo hiển thị một lượng lớn dữ liệu và có các phương diện có lượng số cao. Phương diện có số lượng giá trị riêng biệt cao có thể khiến báo cáo vượt quá hạn mức về số lượng giá trị riêng biệt cho bảng cơ bản. Khi điều này xảy ra, Google Analytics sẽ nhóm các giá trị ít gặp và gắn nhãn là (other).

Sử dụng ví dụ về số lượng giá trị riêng biệt được đơn giản hoá và có quy mô nhỏ, nếu giới hạn về số lượng giá trị riêng biệt cho bảng cơ sở là 10 hàng, thì điều này có thể xảy ra:

Ví dụ đơn giản cho dữ liệu mặt đất so với bảng Tổng hợp có hàng khác

Như bạn có thể thấy, tổng số sự kiện vẫn không thay đổi. Tuy nhiên, các giá trị ít thường xuyên hơn được nhóm lại với nhau và bạn không thể tổng hợp lại bảng dựa trên bất kỳ phương diện nào (ví dụ: bạn không thể lấy bảng tổng hợp và lấy tổng số sự kiện cho một thành phố cụ thể có độ chính xác cao). Ví dụ này sẽ sâu sắc hơn nếu bạn lọc dữ liệu tổng hợp dựa trên bất kỳ phương diện nào.

Việc nhóm hàng (other) này chỉ xảy ra trong mô-đun báo cáo và Data API khi báo cáo vượt quá hạn mức về số lượng giá trị riêng biệt. Nếu thực hiện các phép tính từ BigQuery, bạn sẽ luôn nhận được dữ liệu thực tế, là các hàng chi tiết nhất. Hãy đọc thêm về hàng (other) và các phương pháp hay nhất về cách tránh hàng này.

Google Tín hiệu

Việc kích hoạt tín hiệu của Google trên tài sản GA4 mang lại một số lợi ích, bao gồm cả việc loại bỏ người dùng trùng lặp trên các nền tảng và thiết bị. Giả sử User-id và Google Tín hiệu không được triển khai, nếu một người xem trang web của bạn trên ba trình duyệt web khác nhau, thì Google Analytics sẽ tính đó là ba người dùng khác nhau và BigQuery Export sẽ có ba user_pseudo_id riêng biệt. Tuy nhiên, khi tính năng Tín hiệu của Google được kích hoạt và người đó đã đăng nhập vào một Tài khoản Google duy nhất của mình trên cả ba trình duyệt, thì Google Analytics sẽ sao chép một người dùng và hiển thị con số này trong các nền tảng báo cáo chuẩn. Tuy nhiên, BigQuery vẫn sẽ hiển thị 3 user_pseudo_id riêng biệt. Không có thông tin nào về Tín hiệu của Google trong dữ liệu xuất BigQuery. Do đó, những báo cáo có dữ liệu Tín hiệu của Google rất có thể sẽ có ít người dùng hơn so với BigQuery Export.

Cách tốt nhất để giảm thiểu tác động này là triển khai User-ID trong tài sản GA4 cùng với việc kích hoạt Tín hiệu của Google. Điều này sẽ đảm bảo rằng việc loại bỏ trùng lặp xảy ra trước tiên dựa trên user_id. Đối với người dùng đã đăng nhập, trường user_id sẽ được điền sẵn trong BigQuery và có thể được dùng để tính toán. Tuy nhiên, đối với người dùng chưa đăng nhập (tức là các phiên không có user_id), Google Tín hiệu sẽ vẫn được dùng để loại bỏ trùng lặp.

Ngoài ra, xin lưu ý rằng một số báo cáo trên nền tảng báo cáo tiêu chuẩn có thể đã áp dụng ngưỡng và không trả về một số dữ liệu nhất định. Hầu hết thông tin có thể phải tuân theo ngưỡng thường không có sẵn trong BigQuery Export.

Chế độ đồng ý trên các trang web và ứng dụng di động cho phép bạn thông báo cho Google về trạng thái đồng ý của người dùng đối với cookie hoặc giá trị nhận dạng ứng dụng. Khi khách truy cập từ chối, GA4 sẽ bổ sung dữ liệu còn thiếu trong hoạt động thu thập dữ liệu bằng tính năng lập mô hình lượt chuyển đổilập mô hình hành vi. Không có dữ liệu được mô hình hoá nào trong tính năng xuất sự kiện của BigQuery. Khi bạn triển khai chế độ đồng ý, tập dữ liệu BigQuery sẽ chứa các ping không có cookie do GA thu thập và mỗi phiên sẽ có một user_pseudo_id khác nhau. Do quá trình lập mô hình, sẽ có sự khác biệt giữa các nền tảng báo cáo chuẩn và dữ liệu chi tiết trong BigQuery. Ví dụ: nhờ tính năng lập mô hình hành vi, bạn có thể thấy số lượng người dùng đang hoạt động ít hơn so với BigQuery Export vì tính năng lập mô hình có thể cố gắng dự đoán nhiều phiên hoạt động từ từng người dùng không đồng ý.

Xin nhắc lại, để giảm tác động của vấn đề này, bạn nên triển khai User-ID trong tài sản GA4 của mình. user_id và phương diện tuỳ chỉnh được xuất sang BigQuery, bất kể trạng thái đồng ý của người dùng.

Dữ liệu phân bổ lưu lượng truy cập

Trong BigQuery, dữ liệu phân bổ lưu lượng truy cập được cung cấp ở cấp người dùng (lượt truy cập đầu tiên) và cấp sự kiện. Đây là những dữ liệu được thu thập. Tuy nhiên, vì Google Analytics triển khai mô hình phân bổ riêng ở cấp phiên, nên thông tin đó không có sẵn trực tiếp trong BigQuery Export và cũng không thể được tính toán với độ chính xác tối đa với dữ liệu có sẵn. Tuỳ thuộc vào trường hợp sử dụng, bạn có thể cân nhắc việc kết hợp tập dữ liệu BigQuery với mọi dữ liệu có liên quan của bên thứ nhất và xây dựng mô hình phân bổ của riêng mình. Trong tương lai, bạn có thể sử dụng thêm dữ liệu được thu thập để phân bổ lưu lượng truy cập thông qua tính năng xuất sự kiện BigQuery.

Lỗi tính toán thường gặp

  • Phương pháp tính toán: Khi tính toán các chỉ số khác nhau trong BigQuery, hãy đảm bảo bạn sử dụng đúng phương pháp. Ví dụ:
    • Phương pháp chuẩn để tính phiên cho các thuộc tính Google Analytics 4 là tính các tổ hợp riêng biệt của user_pseudo_id/user_idga_session_id bất kể khung thời gian. Trong Universal Analytics, các phiên sẽ được đặt lại vào lúc nửa đêm. Nếu bạn làm theo mô hình UA, tính toán số phiên cho mỗi ngày và cộng các phiên đó để có tổng số phiên, thì bạn sẽ tính hai lần số phiên trải rộng trong nhiều ngày.
    • Tuỳ thuộc vào Thông tin nhận dạng trong báo cáo mà bạn đã chọn, phương thức tính số người dùng sẽ phải được cập nhật.
  • Phạm vi phương diện và chỉ số: Đảm bảo rằng các phép tính sử dụng đúng phạm vi cấp người dùng, phiên, mặt hàng hoặc sự kiện.
  • Múi giờ: Trong BigQuery Export, event_date là dành cho múi giờ báo cáo, còn event_timestamp là dấu thời gian UTC tính bằng micrô giây. Vì vậy, tốt nhất là nếu sử dụng event_timestamp trong truy vấn, thì bạn phải điều chỉnh thời gian đó theo múi giờ báo cáo chính xác khi so sánh với số lượng giao diện người dùng.
  • Giới hạn xuất và lọc dữ liệu: Nếu bạn đã thiết lập tính năng Lọc dữ liệu để xuất sự kiện BigQuery hoặc lượng dữ liệu xuất sự kiện hằng ngày đã vượt quá giới hạn, thì dữ liệu xuất sự kiện BigQuery sẽ không khớp với các nền tảng báo cáo chuẩn.

CH với tất cả những điều đó, có một chút muốn UNNEST trong bài đăng này. Hy vọng là bạn có thể CHỌN các giải pháp phù hợp cho dự án DISTINCT của mình TỪ các nguyên tắc tại đây. Nếu bạn có thắc mắc, hãy THAM GIA máy chủ GA Discord ở ĐÂU, những truy vấn được hoan nghênh nhất!