Chèn nhiễu

Chèn nhiễu là một kỹ thuật dùng để bảo vệ quyền riêng tư của người dùng khi truy vấn cơ sở dữ liệu. Phương thức này hoạt động bằng cách thêm nhiễu ngẫu nhiên vào mệnh đề SELECT tổng hợp của truy vấn. Độ nhiễu này bảo vệ quyền riêng tư của người dùng trong khi vẫn cung cấp kết quả chính xác ở mức hợp lý, không cần kiểm tra sự khác biệt và giảm ngưỡng tổng hợp bắt buộc cho đầu ra. Hầu hết các truy vấn hiện có đều có thể được thực thi ở chế độ nhiễu, với một số hạn chế.

Tìm hiểu các lợi ích của việc sử dụng tính năng chèn nhiễu

Không áp dụng tính năng kiểm tra sự khác biệt: Khi chạy truy vấn có chèn nhiễu, Ads Data Hub không lọc các hàng do sự tương đồng với các tập kết quả trước đó. Điều này có nghĩa là bạn vẫn có thể xem toàn diện dữ liệu trong khi vẫn bảo vệ quyền riêng tư của người dùng.

Đơn giản hoá việc khắc phục sự cố: Các hàng chỉ bị bỏ qua do các yêu cầu tổng hợp, giúp đơn giản hoá việc khắc phục sự cố và điều chỉnh truy vấn.

Không có cú pháp mới nào cần tìm hiểu: Bạn không cần tìm hiểu bất kỳ cú pháp truy vấn mới nào hoặc phải thành thạo các khái niệm về quyền riêng tư để sử dụng độ nhiễu thay vì kiểm tra sự khác biệt.

Độ chính xác của kết quả rõ ràng: Công việc thành công cho biết tổng tỷ lệ phần trăm dữ liệu có mức độ nhiễu như dự kiến.

Tìm hiểu tác động của tiếng ồn đối với các yêu cầu về quyền riêng tư

Kiểm tra sự khác biệt: Tính năng chèn nhiễu không dựa vào các quy trình kiểm tra sự khác biệt hiện có trong Ads Data Hub. Khi bạn sử dụng tính năng chèn tiếng ồn, tính năng kiểm tra sự khác biệt sẽ bị tắt.

Yêu cầu về dữ liệu tổng hợp: Tính năng chèn nhiễu sẽ xuất dữ liệu lượt hiển thị do khoảng 20 người dùng duy nhất đại diện và dữ liệu lượt nhấp hoặc lượt chuyển đổi do khoảng 10 người dùng duy nhất đại diện.

Kiểm tra tĩnh: Không có tác động.

Ngân sách và giới hạn truy vấn: Các truy vấn được thực thi bằng cách sử dụng nhiễu sẽ chia sẻ ngân sách truy cập dữ liệu được sử dụng với các hoạt động kiểm tra chênh lệch. Cũng như với tính năng kiểm tra sự khác biệt, nếu thực thi cùng một truy vấn trên cùng một tập dữ liệu nhiều lần, bạn có thể mất quyền truy cập vào các ngày thường được truy vấn trong tập dữ liệu. Điều này có thể xảy ra nếu bạn chạy truy vấn cửa sổ trượt hoặc nếu bạn thực hiện cùng một yêu cầu nhiều lần.

Chế độ nhiễu áp đặt các giới hạn bổ sung, nghiêm ngặt hơn đối với việc tính toán lại cùng một kết quả tổng hợp trong hoặc trên các truy vấn. Cũng giống như hạn mức truy cập dữ liệu, bạn có thể mất quyền truy cập vào các ngày được truy vấn thường xuyên trong tập dữ liệu; nhưng các giới hạn do việc tính toán lại cùng một kết quả tổng hợp sẽ chỉ hạn chế các truy vấn ở chế độ nhiễu, chứ không phải các truy vấn ở chế độ kiểm tra chênh lệch. Để biết thêm thông tin, hãy xem phần Kết quả lặp lại.

Tìm hiểu thêm về quy trình kiểm tra để đảm bảo quyền riêng tư.

Tìm hiểu tác động của việc chèn nhiễu đối với kết quả

Ads Data Hub chèn nhiễu để giảm thiểu rủi ro tiết lộ – rủi ro một người nào đó có thể tìm hiểu thông tin về một người dùng. Phương pháp này cân bằng quyền riêng tư với tính hữu dụng.

Tính năng chèn nhiễu trong Trung tâm dữ liệu quảng cáo sẽ biến đổi kết quả truy vấn như sau:

  • Phương pháp này sẽ loại bỏ những đóng góp của người dùng ngoại lai trong kết quả tổng hợp. Hàm này tính tổng mức đóng góp của mỗi người dùng trong mỗi lần tổng hợp, sau đó giới hạn mỗi mức đóng góp bằng giới hạn tối thiểu và tối đa.
  • Hàm này tổng hợp các giá trị đóng góp được cố định cho mỗi người dùng.
  • Hàm này thêm nhiễu vào mỗi kết quả tổng hợp – kết quả của mỗi lệnh gọi hàm tổng hợp trong mỗi hàng. Tỷ lệ của độ nhiễu ngẫu nhiên này tỷ lệ với giới hạn được kẹp.
  • Hàm này tính toán số lượng người dùng không chính xác cho mỗi hàng và loại bỏ các hàng có quá ít người dùng. Điều này tương tự như tính năng k-anonymity ở chế độ kiểm tra chênh lệch, nhưng do nhiễu, các công việc chạy trên cùng một tập dữ liệu có thể loại bỏ các hàng khác nhau. Ngoài ra, chế độ nhiễu sẽ loại bỏ ít hàng hơn vì yêu cầu tổng hợp thấp hơn (khoảng 20 so với chính xác 50).

Kết quả cuối cùng là một tập dữ liệu, trong đó mỗi hàng có kết quả tổng hợp bị nhiễu và các nhóm nhỏ đã bị loại bỏ. Điều này che đi ảnh hưởng của một người dùng cá nhân đối với kết quả trả về.

Giới thiệu về tính năng kẹp dữ liệu tổng hợp

Tính năng chèn nhiễu trong Ads Data Hub sử dụng tính năng kẹp dữ liệu tổng hợp ngầm ẩn hoặc rõ ràng để giới hạn mức đóng góp của các giá trị ngoại lai. Bạn có thể chọn loại kẹp để sử dụng, tuỳ thuộc vào trường hợp sử dụng của mình.

Giới hạn ngầm

Trong phương thức kẹp ngầm ẩn, các giới hạn được xác định tự động. Bạn không cần bất kỳ cú pháp SQL đặc biệt nào để sử dụng tính năng kẹp ngầm ẩn. Nếu một hàng có phạm vi giá trị rộng hơn một hàng khác, thì giới hạn ngầm ẩn sẽ tìm thấy các giới hạn khác nhau cho các hàng này. Điều này thường giúp giảm mức chênh lệch sai số cho mỗi kết quả. Mặt khác, mỗi giá trị tổng hợp có các giới hạn kẹp và độ nhiễu khác nhau, điều này có thể khiến bạn khó so sánh các giá trị tổng hợp đó.

Việc kẹp ngầm có thể không thành công khi một dữ liệu tổng hợp nhận được dữ liệu từ quá ít người dùng, ví dụ: lệnh gọi COUNTIF() có một điều kiện hiếm gặp. Các trường hợp này trả về kết quả NULL. Ngoài ra, hãy lưu ý rằng COUNT(DISTINCT user_id) tự động sử dụng tính năng kẹp rõ ràng với các giới hạn là 01.

Clamping rõ ràng

Việc kẹp rõ ràng sẽ kẹp tổng mức đóng góp của mỗi người dùng vào một phạm vi đã chỉ định. Các giới hạn rõ ràng được áp dụng đồng nhất cho tất cả các hàng và phải là giá trị cố định. Ngay cả khi một số hàng có phạm vi đóng góp của mỗi người dùng rộng hơn các hàng khác, thì tất cả các hàng đều áp dụng cùng một giới hạn. Điều này giúp kết quả từ các hàng khác nhau dễ so sánh hơn, mặc dù một số hàng có nhiều nhiễu hơn so với khi sử dụng phương thức kẹp ngầm.

Việc kẹp rõ ràng sử dụng một nửa độ nhiễu so với việc kẹp ngầm ẩn, đối với một tập hợp giới hạn kẹp nhất định. Do đó, nếu có thể ước tính các giới hạn hợp lý, bạn sẽ đạt được kết quả tốt hơn bằng cách đặt các giới hạn đó một cách rõ ràng.

Để sử dụng tính năng kẹp rõ ràng, hãy đặt các giới hạn cho từng hàm tổng hợp được hỗ trợ bằng cách thêm các số nguyên đại diện cho giới hạn dưới và giới hạn trên. Ví dụ:

SELECT
campaign_name,
-- Set lower and upper bounds to 0 and 1, respectively
ADH.ANON_COUNT(*, contribution_bounds_per_group => (0,1))
FROM data
GROUP BY 1

Chạy truy vấn bằng cách chèn nhiễu

  1. Mở báo cáo.
  2. Nhấp vào nút bật/tắt Cài đặt độ nhiễu về quyền riêng tư để chuyển sang vị trí Sử dụng độ nhiễu.
  3. Chạy truy vấn.
  4. Xem xét tác động của độ nhiễu được thêm vào.
  5. Không bắt buộc: Điều chỉnh truy vấn để giảm tác động của tạp âm.

Xem xét tác động của tiếng ồn

Sau khi công việc hoàn tất thành công, Ads Data Hub sẽ hiển thị độ tin cậy của kết quả trong phần tóm tắt về quyền riêng tư. Độ tin cậy dựa trên tỷ lệ phần trăm các ô trong kết quả bị ảnh hưởng nhiều bởi độ nhiễu. Một giá trị trong bảng kết quả được coi là chịu ảnh hưởng lớn nếu quy mô của độ nhiễu được thêm vào lớn hơn 5% kết quả trong ô.

Đối với các tập dữ liệu đầu ra bị ảnh hưởng, bản tóm tắt về quyền riêng tư sẽ liệt kê 10 cột nhiễu nhiều nhất từ tác động cao nhất đến thấp nhất và mức độ đóng góp tương ứng của các cột đó vào độ nhiễu. Đây là bảng chi tiết về mức độ nhiễu dự kiến.

Kết quả có độ nhiễu >5% Màu chỉ báo Mức độ tác động
<5% Xanh lục Tác động thấp
5%-15% Vàng Tác động trung bình
15%-25% Orange Tác động lớn
>25% Đỏ Có tác động rất lớn

Bạn cũng có thể xem trước thông tin tóm tắt về quyền riêng tư cho các công việc báo cáo gần đây trên trang Trang chủ. Để xem trước chế độ quyền riêng tư của một công việc cụ thể, hãy giữ con trỏ qua biểu tượng mẹo về quyền riêng tư privacy_tip trong thẻ công việc trong phần Hoạt động gần đây.

Điều chỉnh truy vấn

Kết quả tổng hợp có nhiều khả năng sẽ có độ nhiễu không mong muốn khi có ít người dùng đóng góp vào kết quả đó. Điều này có thể xảy ra khi các hàng có ít người dùng hoặc khi một số người dùng không ảnh hưởng đến kết quả, ví dụ: khi sử dụng hàm COUNTIF. Dựa trên thông tin chi tiết về độ nhiễu, bạn nên điều chỉnh truy vấn để tăng tỷ lệ phần trăm dữ liệu có độ nhiễu dự kiến.

Sau đây là các nguyên tắc chung:

  • Mở rộng phạm vi ngày.
  • Viết lại truy vấn để giảm mức độ chi tiết của dữ liệu, chẳng hạn như bằng cách nhóm theo ít thông số hơn hoặc thay thế COUNTIF bằng COUNT.
  • Xoá các cột có dữ liệu nhiễu.
  • Sử dụng chế độ kẹp rõ ràng.

Hàm tổng hợp được hỗ trợ

Các hàm tổng hợp sau đây được hỗ trợ với độ nhiễu:

  • SUM(...)
  • COUNT(*)
  • COUNT(...)
  • COUNTIF(...)
  • COUNT(DISTINCT user_id)
  • APPROX_COUNT_DISTINCT(user_id)
  • AVG(...)

Từ khoá DISTINCT chỉ được hỗ trợ với hàm COUNT và chỉ khi được sử dụng với tham chiếu trực tiếp đến cột user_id từ bảng Trung tâm dữ liệu Google Ads hoặc biểu thức trả về user_id hoặc NULL, chẳng hạn như COUNT(DISTINCT IF(..., user_id, NULL)).

Các hàm sau đây không được hỗ trợ trực tiếp, nhưng có thể được thay thế bằng các hàm tổng hợp khác có nhiễu để có được kết quả thống kê. Xin lưu ý rằng các giá trị số chỉ là ví dụ:

  • LOGICAL_OR(...). Đề xuất thay thế: COUNT(DISTINCT IF(..., user_id, NULL)) > 0
  • LOGICAL_AND(...). Đề xuất thay thế: COUNT(DISTINCT IF(NOT ..., user_id, NULL)) <= 0

Giới thiệu về kết quả số nguyên

Mặc dù Ads Data Hub sẽ tự động chèn nhiễu cho các hàm tổng hợp này, nhưng chữ ký hàm sẽ không thay đổi. Vì các hàm như COUNT hoặc SUM của INT64 trả về INT64, nên mọi phần thập phân của kết quả bị nhiễu sẽ được làm tròn. Điều này thường không đáng kể so với kích thước của kết quả và độ nhiễu.

Nếu bạn cần độ chi tiết của số thập phân trong kết quả, hãy tránh viết các hàm trả về INT64 – ví dụ: bằng cách sử dụng SUM với dữ liệu đầu vào được truyền vào FLOAT64.


Các mẫu truy vấn được hỗ trợ

Lưu ý quan trọng: Hầu hết các phương pháp hay nhất tiêu chuẩn của Trung tâm dữ liệu quảng cáo vẫn áp dụng cho các truy vấn sử dụng tính năng chèn nhiễu. Cụ thể, bạn nên xem lại hướng dẫn về việc truy vấn nhiều lần cùng một dữ liệu.

Phần này mô tả các mẫu truy vấn được hỗ trợ khi chạy truy vấn bằng cách chèn nhiễu.

Số liệu tổng hợp ở cấp người dùng

Các dữ liệu tổng hợp ở cấp người dùng không bị hạn chế được hỗ trợ giống như khi ở chế độ kiểm tra chênh lệch. Độ nhiễu chỉ được chèn vào các dữ liệu tổng hợp kết hợp dữ liệu trên nhiều người dùng. Các phép tổng hợp nhóm rõ ràng theo user_id hoặc các hàm phân tích phân vùng theo user_id sẽ không nhận được bất kỳ nhiễu nào và mọi hàm đều được cho phép. Các dữ liệu tổng hợp ở cấp người dùng không nhóm rõ ràng theo user_id (ví dụ: GROUP BY impression_id) được coi là dữ liệu tổng hợp trên nhiều người dùng, do đó, dữ liệu nhiễu sẽ được thêm vào.

Việc nhóm theo external_cookie là chưa đủ. Mặc dù bạn có thể sử dụng external_cookie để ghép nối các bảng *_match với các bảng do khách hàng sở hữu, nhưng mọi dữ liệu tổng hợp về một người dùng phải nhóm rõ ràng theo cột user_id, chứ không chỉ cột external_cookie.

Ví dụ về hàm tổng hợp:

WITH user_paths AS (
  # Grouping by user_id, no noise needed, all functions allowed
  SELECT user_id, STRING_AGG(campaign_id, ">" ORDER BY query_id.time_usec) AS path
  FROM adh.google_ads_impressions
  GROUP BY 1
)
# Noise applied here to num_users
SELECT path, COUNT(*) AS num_users
FROM user_paths
GROUP BY 1;

Ví dụ về hàm phân tích:

WITH events AS (
  # Partitioning by user_id, no noise needed, all functions allowed
  SELECT
    campaign_id,
    ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY query_id.time_usec) AS index
  FROM adh.google_ads_impressions
)
# Noise applied here to first_impressions
SELECT campaign_id, COUNT(*) AS first_impressions
FROM events
WHERE index = 1
GROUP BY 1;

Tập hợp song song

Mỗi dữ liệu tổng hợp trên nhiều người dùng nhận được tạp âm một cách độc lập. Bạn có thể chạy nhiều phép tổng hợp như vậy trong một câu lệnh, kết hợp kết quả vào một bảng bằng cách sử dụng JOIN hoặc UNION.

Ví dụ:

WITH result_1 AS (
  # Noise applied here to num_impressions
  SELECT campaign_id, COUNT(*) AS num_impressions
  FROM adh.google_ads_impressions
  GROUP BY 1
), result_2 AS (
  # Noise applied here to num_clicks
  SELECT campaign_id, COUNT(*) AS num_clicks
  FROM adh.google_ads_clicks
  GROUP BY 1
)
SELECT * FROM result_1 JOIN result_2 USING(campaign_id)

Xin lưu ý rằng tính năng này sẽ được hỗ trợ nhưng nên tránh ở chế độ kiểm tra sự khác biệt. Phương pháp này không gây ra vấn đề về nhiễu, vì mỗi tổng hợp song song được nhiễu và lọc độc lập.

Dữ liệu tổng hợp được kết hợp với dữ liệu chưa tổng hợp

Vì Ads Data Hub chỉ hỗ trợ các khoảng thời gian phân tích phân vùng theo user_id, nên một giải pháp phổ biến là tổng hợp riêng các kết quả này và tự nối chúng lại với nhau trước khi tổng hợp lại. Các truy vấn này được hỗ trợ ở chế độ nhiễu và thường hoạt động hiệu quả hơn so với chế độ kiểm tra sự khác biệt do các yêu cầu về quyền riêng tư được giải quyết sớm hơn.

Ví dụ:

WITH campaign_totals AS (
  # Noise applied here to campaign_imps
  SELECT campaign_id, COUNT(*) AS campaign_imps
  FROM adh.google_ads_impressions
  GROUP BY 1
)
# Noise applied here to imps
SELECT campaign_id, demographics, campaign_imps, COUNT(*) AS imps
FROM adh.google_ads_impressions JOIN campaign_totals USING(campaign_id)
GROUP BY 1,2,3

Chế độ nhiễu cấm tổng hợp lại kết quả tổng hợp, chẳng hạn như AVG(campaign_imps).


Mẫu truy vấn không được hỗ trợ

Phần này mô tả các mẫu truy vấn không được hỗ trợ khi chạy truy vấn bằng cách chèn nhiễu.

Cụm từ tìm kiếm bao gồm cả ngày hôm nay

Truy vấn chế độ tiếng ồn không hỗ trợ truy vấn dữ liệu của ngày hiện tại. (Bạn không nên làm việc này ở chế độ kiểm tra chênh lệch.) Bạn không thể chọn ngày hiện tại cho các truy vấn sử dụng tính năng chèn nhiễu.

Kết quả lặp lại

Ở chế độ nhiễu, Ads Data Hub giới hạn tần suất bạn có thể lặp lại cùng một quy trình tổng hợp. Nếu bạn đạt đến các giới hạn này, các truy vấn ở chế độ nhiễu sẽ mất quyền truy cập vào các ngày được truy vấn thường xuyên trong tập dữ liệu. Sau đây là ví dụ về cách điều này có thể xảy ra.

Tình trạng lặp lại truy vấn xảy ra khi cùng một truy vấn được chạy nhiều lần với cùng một tham số hoặc các tham số rất giống nhau, chẳng hạn như các phạm vi ngày trùng lặp. Bạn có thể tránh điều này bằng cách sử dụng dữ liệu đã xuất sang dự án BigQuery.

Xin lưu ý rằng nếu hai công việc đang truy vấn các phạm vi ngày trùng lặp, thì chúng có thể tạo ra các kết quả lặp lại nếu thực hiện cùng một phép tính trên cùng một người dùng. Ví dụ: truy vấn sau đây, được thực thi trên các phạm vi ngày trùng lặp, sẽ tạo ra các lần lặp lại vì truy vấn này phân vùng theo ngày:

SELECT DATE(TIMESTAMP_MICROS(event.event_time)) AS date,
COUNT(*) AS cnt
FROM adh.cm_dt_clicks
GROUP BY 1

Trong trường hợp này, bạn nên chạy truy vấn trên các phân đoạn ngày không liên kết.

Một ví dụ khác về sự lặp lại xảy ra khi dữ liệu có phần độc lập với ngày. Truy vấn sau đây sẽ tạo ra các kết quả trùng lặp khi được thực thi vào các ngày trùng lặp, trong đó cả hai công việc đều bao gồm toàn bộ thời gian chạy của một chiến dịch:

SELECT campaign_id, COUNT(*) AS cnt
FROM adh.google_ads_impressions
GROUP BY 1

Trong trường hợp này, bạn chỉ nên chạy truy vấn này một lần vì kết quả sẽ không thay đổi.

Tình trạng lặp lại dữ liệu tổng hợp xảy ra khi cùng một dữ liệu tổng hợp được lặp lại nhiều lần trong một truy vấn:

SELECT COUNT(*) AS cnt1, COUNT(*) AS cnt2
FROM table

Trong trường hợp này, bạn nên xoá một trong các lần lặp lại.

Xin lưu ý rằng ngay cả khi các phép tổng hợp khác nhau về cú pháp nhưng tính toán cùng một giá trị, thì các phép tổng hợp đó vẫn được tính là nội dung lặp lại. Nói cách khác, nếu giá trị của condition1condition2 giống nhau đối với tất cả người dùng có một số giá trị của key, thì truy vấn sau đây sẽ có sự lặp lại:

SELECT key, COUNTIF(condition1) AS cnt1, COUNTIF(condition2) AS cnt2
FROM table
GROUP BY key

Nếu có các điều kiện rất giống nhau cho một số nhóm người dùng, bạn có thể cân nhắc việc viết lại truy vấn để chỉ có một COUNT.

Tình trạng trùng lặp hàng xảy ra khi một bảng Ads Data Hub được kết hợp với một bảng BigQuery theo cách mà mỗi hàng trong bảng Ads Data Hub khớp với nhiều hàng trong bảng BigQuery. Ví dụ: truy vấn sau đây sẽ tạo ra một giá trị lặp lại nếu có nhiều hàng có cùng mã chiến dịch trong bq_table:

SELECT r.campaign_id, COUNT(*) AS cnt
FROM adh_table
INNER JOIN bq_table ON l.campaign_id = r.campaign_id

Trong trường hợp này, bạn nên tái cấu trúc truy vấn để bq_table chỉ có một hàng cho mỗi giá trị khoá nối (campaign_id trong trường hợp này).

Xin lưu ý rằng việc huỷ lồng một mảng khỏi bảng Ads Data Hub cũng có thể tạo ra hiệu ứng tương tự nếu hầu hết người dùng đều có cùng một mảng giá trị:

SELECT in_market_id, COUNT(*)
FROM adh.dv360_youtube_impressions,
UNNEST(in_market) AS in_market_id
GROUP BY 1

Tìm hiểu các phương pháp hay nhất khác về truy vấn.

Tái tổng hợp trực tiếp

Độ nhiễu được áp dụng cho lớp đầu tiên của dữ liệu tổng hợp trên nhiều người dùng trong truy vấn. Các truy vấn có nhiều lớp tổng hợp sẽ bị chặn:

WITH layer_1 AS (
  # Noise applied here to partial_result
  SELECT campaign_id, demographics, location, COUNT(*) AS partial_result
  FROM adh.google_ads_impressions
  GROUP BY 1,2,3
  HAVING partial_result > 5
)
# Reaggregation of partial_result with no user-level data, will be rejected
SELECT campaign_id, SUM(partial_result) AS final_result
FROM layer_1
GROUP BY 1

Để có kết quả tốt nhất từ độ nhiễu, hãy tính toán tất cả các thao tác trên nhiều người dùng trong một phép tổng hợp duy nhất. Ví dụ: lấy SUM sự kiện thay vì SUM số lượng trung gian. Bạn có thể viết lại truy vấn để tổng hợp lại các dữ liệu tổng hợp bị nhiễu, nhưng dữ liệu tổng hợp cuối cùng có thể có nhiều nhiễu hơn nhiều.

Nếu không thể tránh khỏi điều này, bạn có thể viết lại truy vấn để xuất kết quả trực tiếp từ lớp đầu tiên. Để thực hiện việc này trong một công việc mà không thay đổi kết quả tập lệnh, hãy tạo một bảng tạm thời (hoặc một bảng được xuất sang dự án BigQuery) bằng cú pháp OPTIONS(privacy_checked_export=true). Ví dụ:

CREATE TEMP TABLE layer_1 OPTIONS(privacy_checked_export=true) AS (
  # Noise applied here to partial_result
  SELECT campaign_id, demographics, location, COUNT(*) AS partial_result
  FROM adh.google_ads_impressions
  GROUP BY 1,2,3
  HAVING partial_result > 5
);
# Reaggregation of privacy checked data, no noise needed
SELECT campaign_id, SUM(partial_result) AS final_result
FROM layer_1
GROUP BY 1

Tìm hiểu thêm về bảng tạm.

Nếu lớp tổng hợp đầu tiên quá chi tiết để kiểm tra quyền riêng tư, hãy cân nhắc việc viết lại truy vấn bằng tổng hợp ở cấp người dùng. Nếu không thể thực hiện việc này, thì truy vấn này sẽ không được hỗ trợ ở chế độ nhiễu.

Mã nhận dạng người dùng chưa tham gia

Các truy vấn ở chế độ nhiễu không được kết hợp dữ liệu của các người dùng riêng biệt thành một hàng, ngoại trừ khi thực hiện tổng hợp với nhiễu. Do đó, các mối nối của dữ liệu chưa tổng hợp trong Ads Data Hub phải được nối rõ ràng trên cột user_id.

Truy vấn này không kết hợp rõ ràng trên cột user_id, dẫn đến lỗi xác thực:

SELECT 
FROM adh.google_ads_impressions
JOIN adh.google_ads_clicks USING(impression_id)

Bạn có thể khắc phục vấn đề này bằng cách điều chỉnh mệnh đề USING để bao gồm rõ ràng user_id – ví dụ: USING(impression_id, user_id).

Xin lưu ý rằng quy tắc hạn chế này chỉ áp dụng cho các mối liên kết giữa các bảng trong Trung tâm dữ liệu quảng cáo (ngoại trừ các bảng phương diện). Điều khoản này không áp dụng cho các bảng do khách hàng sở hữu. Ví dụ: Chúng tôi cho phép những nội dung sau:

SELECT 
FROM adh.google_ads_impressions
JOIN bigquery_project.dataset.table USING(any_column)

Dữ liệu hợp nhất Ads Data Hub-BigQuery

Các dữ liệu tổng hợp có tạp âm cần có giá trị nhận dạng người dùng để hoạt động hiệu quả. Dữ liệu do khách hàng sở hữu trong BigQuery không có giá trị nhận dạng người dùng, vì vậy, bạn không thể hợp nhất dữ liệu này vào một tập hợp dữ liệu nhiễu nếu không kết hợp với bảng Trung tâm dữ liệu quảng cáo.

Truy vấn này dẫn đến lỗi xác thực:

SELECT COUNT(*) FROM (
  SELECT 1 FROM adh.google_ads_impressions
  UNION ALL
  SELECT 1 FROM bigquery_project.dataset.table
)

Để khắc phục vấn đề này, bạn nên kết hợp bảng BigQuery để tăng cường dữ liệu Trung tâm dữ liệu quảng cáo thay vì hợp nhất hoặc tách riêng dữ liệu để tổng hợp từng nguồn.

Xin lưu ý rằng bạn có thể hợp nhất nhiều bảng Ads Data Hub với dữ liệu người dùng hoặc nhiều bảng BigQuery thuộc sở hữu của khách hàng, nhưng không thể kết hợp hai loại dữ liệu này.

Liên kết bên phải giữa Ads Data Hub và BigQuery

Các mối nối ngoài với dữ liệu do khách hàng sở hữu có thể dẫn đến các hàng bị thiếu giá trị nhận dạng người dùng, khiến tính năng loại bỏ tạp âm không hoạt động hiệu quả.

Cả hai truy vấn này đều dẫn đến lỗi xác thực vì cho phép các hàng không khớp bị thiếu giá trị nhận dạng người dùng ở phía Ads Data Hub:

SELECT 
FROM adh.google_ads_impressions
RIGHT JOIN bigquery_project.dataset.table USING(column)
SELECT 
FROM bigquery_project.dataset.table
LEFT JOIN adh.google_ads_impressions USING(column)

Lưu ý rằng cả hai phép nối đều hoạt động nếu thứ tự của các bảng bị đảo ngược.

Tóm tắt về hàng đã lọc

Thông số tóm tắt hàng đã lọc không được hỗ trợ ở chế độ nhiễu. Tính năng này thường không cần thiết đối với tiếng ồn do tốc độ lọc thấp hơn và không có tính năng lọc từ các lần kiểm tra chênh lệch.

Nếu bạn quan sát thấy việc lọc dữ liệu đáng kể trong kết quả có tiếng ồn, hãy tăng dữ liệu tổng hợp. Bạn có thể thực hiện tính năng tổng hợp song song trên toàn bộ tập dữ liệu để so sánh số liệu ước tính tổng thể, ví dụ:

SELECT campaign_name, COUNT(*)
FROM data
GROUP BY 1
UNION ALL
SELECT 'Total', COUNT(*)
FROM data
GROUP BY 1

Xin lưu ý rằng tổng số được làm nhiễu độc lập và tổng giá trị có thể không cộng lại với nhau, nhưng tổng số thường chính xác hơn so với việc lấy tổng các hàng bị nhiễu.

Các bảng được tạo ở chế độ chéo

Bạn chỉ có thể sử dụng các bảng chưa xuất trong Ads Data Hub với cùng chế độ quyền riêng tư mà bạn đã tạo các bảng đó. Bạn không thể tạo một bảng ở chế độ tổng hợp thông thường rồi sử dụng bảng đó ở chế độ nhiễu hoặc ngược lại (trừ phi trước tiên bạn xuất bảng đó sang BigQuery).