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 một cơ sở dữ liệu. Công 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 một truy vấn. Độ nhiễu này giúp bảo vệ quyền riêng tư của người dùng, đồng thời cung cấp kết quả có độ chính xác hợp lý, giúp bạn 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 kết quả đầu ra. Bạn có thể thực thi hầu hết các truy vấn hiện có ở 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 tiếng ồn

Không áp dụng quy trình kiểm tra sự khác biệt: Khi chạy các 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 nhóm kết quả trước đó. Điều này có nghĩa là bạn vẫn có thể có được cái nhìn toàn diện về dữ liệu trong khi vẫn bảo vệ được quyền riêng tư của người dùng.

Đơn giản hoá cách 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 việc khắc phục và điều chỉnh truy vấn trở nên đơn giản hơn.

Không có cú pháp mới để 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ất rõ ràng: Một công việc thành công sẽ cho biết tổng tỷ lệ phần trăm dữ liệu với độ nhiễu như dự kiến.

Tìm hiểu cách tiếng ồn ảnh hưởng đến 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 tiếng ồn không dựa vào 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 tổng hợp: Tính năng chèn tiếng ồn sẽ tạo ra dữ liệu lượt hiển thị được biểu thị bởi khoảng 20 người dùng riêng biệt trở lên và dữ liệu về lượt nhấp hoặc lượt chuyển đổi được biểu thị bởi khoảng 10 người dùng riêng biệt trở lên.

Kiểm tra tĩnh: Không ảnh hưở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 dùng với các bước kiểm tra khác biệt. Tương tự như các bước kiểm tra sự khác biệt, nếu thực thi cùng một truy vấn nhiều lần trên cùng một tậ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 đó. Điều này có thể xảy ra nếu bạn chạy các truy vấn cửa sổ trượt hoặc nếu bạn đưa ra cùng một yêu cầu nhiều lần.

Chế độ nhiễu áp dụng các giới hạn bổ sung, nghiêm ngặt hơn để tính toán lại các kết quả tổng hợp giống nhau trong hoặc trên các truy vấn. Tương tự như với hạn mức truy cập dữ liệu, bạn có thể mất quyền truy cập vào những ngày được truy vấn thường xuyên trong tập dữ liệu; nhưng các hạn chế 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 hạn chế các truy vấn ở chế độ kiểm tra sự khác biệt. Để 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 cách tính năng thêm tiếng ồn ảnh hưởng đến kết quả

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

Tính năng chèn tiếng ồn trong Ads Data Hub biến đổi kết quả truy vấn như sau:

  • Điểm số này sẽ giới hạn mức độ đóng góp của người dùng trong kết quả tổng hợp. Mô hình này tính tổng mức đóng góp của từng người dùng trong mỗi phương thức tổng hợp, sau đó giới hạn từng mức đóng góp với giới hạn ràng buộc tối thiểu và tối đa.
  • Chiến dịch này tổng hợp các khoản đóng góp kẹp của mỗi người dùng.
  • Hàm này sẽ tăng độ nhiễu vào từng 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. Quy mô của độ nhiễu ngẫu nhiên này tỷ lệ với các giới hạn bị giới hạn.
  • Tính năng này tính toán số lượng người dùng nhiễu cho mỗi hàng và loại bỏ những hàng có quá ít người dùng. Điều này tương tự như k-anonymity trong chế độ kiểm tra sự khác biệt, nhưng do độ nhiễu, nên các công việc chạy trên cùng một tập dữ liệu có thể làm giảm nhiều hàng. Ngoài ra, chế độ nhiễu sẽ giảm số hàng 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ó các kết quả tổng hợp gây nhiễu và các nhóm nhỏ đã bị loại bỏ. Điều này sẽ che giấu tác động của từng người dùng đối với các kết quả được trả về.

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

Tính năng chèn tiếng ồn trong Ads Data Hub sử dụng quy trình nén tổng hợp ngầm hoặc rõ ràng để hạn chế mức đóng góp của các điểm ngoại lai. Bạn có thể chọn loại kẹp, tuỳ thuộc vào trường hợp sử dụng của mình.

Kẹp ngầm

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

Việc kẹp ngầm định có thể không thành công khi một quá trình tổng hợp lấy 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. Những trường hợp này sẽ trả về kết quả NULL. Ngoài ra, xin 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 của 01.

Kẹp một cách rõ ràng

Việc kẹp rõ ràng sẽ giới hạn tổng mức đóng góp của mỗi người dùng vào một phạm vi được chỉ định. Giới hạn rõ ràng được áp dụng thống nhất cho tất cả các hàng và phải là giá trị theo nghĩa đen. 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, các giới hạn như nhau sẽ được áp dụng cho tất cả các hàng đó. Điều này giúp kết quả từ các hàng khác nhau tương đương với nhau, mặc dù một số hàng bị nhiễu nhiều hơn so với khi thực hiện việc kẹp ngầm.

Hoạt động kẹp rõ ràng sử dụng một nửa độ nhiễu bằng một nửa so với hoạt động kẹp ngầm, cho 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ẽ nhận đượ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 giới hạn rõ ràng, hãy đặt giới hạn cho mỗi 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 sử dụng tính năng chèn nhiễu

  1. Viết truy vấn hoặc mở một truy vấn hiện có. Để biết bạn có thể sử dụng hàm tổng hợp nào, hãy xem phần Các hàm được hỗ trợ.
  2. Trong trình chỉnh sửa truy vấn, hãy nhấp vào Run (Chạy) để nhập thông tin chi tiết cho một công việc mới.
  3. Nhấp vào nút chuyển Cài đặt quyền riêng tư sang vị trí Sử dụng độ nhiễu.
  4. Chạy truy vấn.
  5. Xem xét dữ liệu bị nhiễu thêm.
  6. Không bắt buộc: Điều chỉnh truy vấn để giảm tác động của độ nhiễu.

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

Sau khi hoàn tất thành công một truy vấn, Ads Data Hub sẽ hiển thị độ tin cậy của kết quả, dựa trên số lượng ô trong dữ liệu đầu ra có độ nhiễu dự kiến. Một giá trị trong bảng kết quả được coi là bị ảnh hưởng nhiều nếu quy mô của độ nhiễu bổ sung lớn hơn 5% kết quả trong ô. Hãy xem phạm vi tác động trong bảng sau.

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

Dữ liệu với độ nhiễu dự kiến Màu chỉ báo Mức độ tác động
>95% Xanh lục Tác động nhỏ
85% – 95% Vàng Tác động trung bình
75% – 85% Orange Tác động lớn
<75% Đỏ Tác động rất lớn

Cách xem thông tin chi tiết về mức độ ảnh hưởng của tiếng ồn:

  1. Nhấp vào Báo cáo.
  2. Chọn một báo cáo trong danh sách. Chú giải công cụ tóm tắt về quyền riêng tư cho biết tỷ lệ phần trăm kết quả có độ nhiễu dự kiến, tương ứng với mức độ nhiễu lớn hơn 5% của kết quả.
  3. Để xem thêm thông tin, hãy nhấp vào Việc làm > Chi tiết
  4. Xem Thông báo về quyền riêng tư trong chi tiết công việc. Kết quả thuộc một trong các danh mục được liệt kê.
  5. Nếu cần, hãy điều chỉnh cụm từ tìm kiếm của bạn để cải thiện kết quả.

Điều chỉnh truy vấn

Kết quả tổng hợp có nhiều khả năng gây ra độ nhiễu không mong muốn khi có ít người dùng đóng góp vào các 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 có thể điều chỉnh truy vấn của mình để tăng tỷ lệ phần trăm dữ liệu với độ nhiễu dự kiến.

Dưới đây là những 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 ít tham số hơn hoặc thay thế COUNTIF bằng COUNT.
  • Loại bỏ các cột gây nhiễu.
  • Sử dụng Kẹp một cách 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ợ độ 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 dùng với thông tin tham chiếu trực tiếp đến cột user_id từ bảng Ads Data Hub hoặc một 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 phương pháp tổng hợp khác có nhiễu để lấy kết quả thống kê. Xin lưu ý rằng các giá trị dạng số chỉ mang tính chất tham khảo:

  • LOGICAL_OR(...). Thay thế được đề xuất: COUNT(DISTINCT IF(..., user_id, NULL)) > 0
  • LOGICAL_AND(...). Thay thế được đề xuất: 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 đều được làm tròn. Tỷ lệ này thường không đáng kể so với quy mô 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 đến FLOAT64.


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 Ads Data Hub 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 hướng dẫn về cách truy vấn cùng một dữ liệu nhiều lần.

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

Tổng hợp ở cấp người dùng

Tổng hợp không hạn chế ở cấp người dùng được hỗ trợ theo cách tương tự như khi chúng ở chế độ kiểm tra sự khác biệt. Độ nhiễu chỉ được đưa vào các dữ liệu tổng hợp kết hợp dữ liệu của nhiều người dùng. Các phép tổng hợp được 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 bị nhiễu và không cho phép bất kỳ hàm nào. Dữ liệu tổng hợp ở cấp người dùng không được nhóm theo user_id một cách rõ ràng (ví dụ: GROUP BY impression_id) được coi là dữ liệu tổng hợp của nhiều người dùng, do đó độ 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ể dùng external_cookie để tham gia bảng *_match với bảng do khách hàng sở hữu, nhưng mọi hoạt động tổng hợp của một người dùng đều 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ổng hợp song song

Mỗi quy trình tổng hợp của nhiều người dùng đều nhận được độ nhiễu một cách độc lập. Bạn có thể chạy nhiều phương thức tổng hợp như vậy trong một câu lệnh, kết hợp các 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 việc này sẽ được hỗ trợ nhưng bạn nên tránh ở chế độ kiểm tra sự khác biệt. Phương pháp này không liên quan đến độ nhiễu, vì mỗi hàm tổng hợp song song được tạo âm thanh và được lọc một cách độ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 cửa sổ phân tích được 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 rồi tự kết hợp chúng trước khi tổng hợp lại. Những truy vấn này được hỗ trợ ở chế độ nhiễu và thường hoạt động tốt hơn so với khi ở chế độ kiểm tra 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 các 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 có sử dụng tính năng chèn nhiễu.

Cụm từ tìm kiếm trọn gói 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 như vậy ở chế độ kiểm tra sự khác biệt.) 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 sẽ giới hạn tần suất bạn có thể lặp lại cùng một phương thức 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à các ví dụ về cách điều này có thể xảy ra.

Truy vấn lặp lại xảy ra khi cùng một truy vấn được chạy nhiều lần với cùng tham số hoặc tham số rất giống nhau, chẳng hạn như 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 của mình.

Xin lưu ý rằng nếu hai công việc đang truy vấn phạm vi ngày trùng lặp, thì các công việc này có thể tạo ra các lệnh 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, được thực thi trên phạm vi ngày chồng chéo, tạo ra các lần lặp lại vì truy vấn này được phân chia 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 rời rạc.

Một ví dụ khác về tình trạng 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 tạo ra các trường hợp lặp lại 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 hoạt động 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ả không thay đổi.

Lặp lại quá trình tổng hợp xảy ra khi cùng một phương pháp 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 loại bỏ một trong các lần lặp lại.

Lưu ý rằng ngay cả khi các hoạt động tổng hợp có cú pháp khác nhau nhưng tính toán cùng một giá trị, thì các hoạt động tổng hợp đó vẫn được tính là một lần lặp lại. Nói cách khác, nếu giá trị của condition1condition2 là như nhau đối với tất cả người dùng có một số giá trị key, thì truy vấn sau sẽ có tần suất 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ế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 bảng Ads Data Hub được kết hợp với bảng BigQuery theo cách mà mỗi hàng của 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 trường hợp lặp lại nếu có nhiều hàng có cùng một 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 điều chỉnh cấu trúc truy vấn để bq_table chỉ có một hàng cho mỗi giá trị khoá kết hợp (campaign_id, trong trường hợp này).

Lưu ý rằng việc huỷ lồng một mảng trong bảng Ads Data Hub có thể tạo ra cùng một hiệu quả nếu hầu hết người dùng đều có cùng các 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ề cụm từ tìm kiếm.

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

Độ nhiễu được áp dụng cho lớp đầu tiên của quá trình tổng hợp 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

Để thu được kết quả tốt nhất từ độ nhiễu, hãy tính toán tất cả hoạt động của nhiều người dùng trong một phương thức 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 một 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 cao hơn nhiều.

Nếu không thể tránh khỏi, 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 cần 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 thời.

Nếu lớp tổng hợp đầu tiên quá chi tiết cho quy trình 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ính năng tổng hợp ở cấp người dùng. Nếu không thể, thì truy vấn này không được hỗ trợ ở chế độ nhiễu.

Mã nhận dạng người dùng chưa kết hợp

Các truy vấn ở chế độ nhiễu không được kết hợp dữ liệu từ những người dùng riêng biệt vào một hàng, trừ phi tổng hợp có độ nhiễu. Do đó, bạn phải kết hợp dữ liệu Trung tâm dữ liệu quảng cáo chưa được tổng hợp để kết hợp rõ ràng trên cột user_id.

Truy vấn này không tham gia cột user_id một cách rõ ràng, 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 để đưa user_id vào một cách rõ ràng – ví dụ như USING(impression_id, user_id).

Xin lưu ý rằng giới hạn này chỉ áp dụng cho việc liên kết giữa các bảng Ads Data Hub (ngoại trừ các bảng phương diện). Giá trị 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:

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

Liên kết Ads Data Hub-BigQuery

Các phép tổng hợp có độ nhiễu 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 dữ liệu tổng hợp độ nhiễu nếu không kết hợp với một bảng Ads Data Hub.

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 tham gia bảng BigQuery để tăng cường dữ liệu Ads Data Hub thay vì hợp nhất hoặc tách riêng dữ liệu để tổng hợp riêng biệt 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 quyền sở hữu của khách hàng, nhưng bạn không thể kết hợp cả hai.

Liên kết bên phải Ads Data Hub-BigQuery

Việc liên kết bên ngoài với dữ liệu thuộc sở hữu của khách hàng có thể dẫn đến các hàng bị thiếu giá trị nhận dạng người dùng, khiến độ nhiễu hoạt động không hiệu quả.

Cả hai truy vấn này đều dẫn đến lỗi xác thực vì chúng cho phép những hàng chưa 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)

Xin lưu ý rằng một trong hai cách liên kết đều sẽ hoạt động nếu thứ tự của các bảng được đảo ngược.

Tóm tắt hàng được 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 với độ nhiễu do tốc độ lọc thấp hơn và thiếu khả năng lọc khỏi các hoạt động kiểm tra sự khác biệt.

Nếu bạn quan sát thấy kết quả lọc dữ liệu có ý nghĩa quan trọng, hãy tăng dữ liệu tổng hợp. Bạn có thể thực hiện 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, ví dụ:

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

Lưu ý rằng tổng số lượng bị nhiễu độc lập và tổng giá trị có thể không cộng lại, 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.

Bảng được tạo ở nhiều chế độ

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ế độ bảo mật mà các bảng đó được tạo. Bạn không thể tạo bảng ở chế độ tổng hợp thông thường và sử dụng bảng ở chế độ nhiễu hoặc ngược lại (trừ phi trước đó, bảng đó được xuất sang BigQuery).