Chèn nhiễu là một kỹ thuật được 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. Cơ chế này hoạt động bằng cách thêm nhiễu ngẫu nhiên vào một mệnh đề tổng hợp SELECT
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 trong khi vẫn cung cấp kết quả tương đối chính xác, loại bỏ nhu cầu 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 lợi ích của việc sử dụng tính năng chèn nhiễu
Không áp dụng quy trình kiểm tra chênh lệch: Khi chạy các truy vấn có tính năng chèn nhiễu, Ads Data Hub không lọc các hàng do có điểm 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 dữ liệu một cách tổng thể trong khi bảo vệ quyền riêng tư của người dùng.
Đơn giản hoá quy trình khắc phục sự cố: Các hàng chỉ bị bỏ qua do yêu cầu tổng hợp, giúp bạn dễ dàng khắc phục sự cố và điều chỉnh các truy vấn.
Không cần học cú pháp mới: Bạn không cần học bất kỳ cú pháp truy vấn mới nào hoặc nắm vững 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: Một công việc thành công cho thấy tổng tỷ lệ phần trăm dữ liệu có mức độ 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 nhiễu không dựa vào các hoạt động 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, các chế độ kiểm tra chênh lệch sẽ bị tắt.
Yêu cầu về việc tổng hợp: Tính năng chèn nhiễu xuất dữ liệu lượt hiển thị do khoảng 20 người dùng duy nhất trở lên đạ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 trở lên đại diệ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 lượt kiểm tra chênh lệch. Tương tự như kiểm tra chênh lệch, nếu thực hiện 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 những 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 đặt các giới hạn bổ sung và 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 giữa các truy vấn. 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 những ngày được truy vấn thường xuyên trong tập dữ liệu; nhưng những 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 chênh lệch. Để biết thêm thông tin, hãy xem phần Kết quả trùng lặp.
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 ảnh hưởng của việc chèn nhiễu đến kết quả
Ads Data Hub chèn nhiễu để giảm thiểu nguy cơ tiết lộ – nguy cơ mà người khác có thể biết được thông tin về một người dùng cá nhân. Công nghệ này cân bằng giữa quyền riêng tư và sự tiện ích.
Tính năng chèn nhiễu trong Ads Data Hub sẽ chuyển đổi kết quả truy vấn như sau:
- Thao tác này sẽ giới hạn mức đóng góp của những người dùng có hành vi bất thường trong kết quả tổng hợp. Thao tác này sẽ tính tổng mức đóng góp của mỗi người dùng trong mỗi hoạt động tổng hợp, sau đó giới hạn mỗi mức đóng góp bằng các giới hạn kẹp tối thiểu và tối đa.
- Thao tác này tổng hợp các giá trị đóng góp bị giới hạn của từng người dùng.
- Thao tác này sẽ thêm nhiễu vào từng kết quả tổng hợp – kết quả của từng 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ệ thuận với các ranh giới bị kẹp.
- Thao tác này tính toán số lượng người dùng bị nhiễu cho từng 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 ở chế độ kiểm tra sự khác biệt, 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 về việc 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 nhiễu và các nhóm nhỏ đã bị loại bỏ. Điều này che giấu ảnh hưởng của một người dùng riêng lẻ đối với kết quả được trả về.
Giới thiệu về tính năng giới hạn tổng hợp
Tính năng chèn nhiễu trong Ads Data Hub sử dụng tính năng giới hạn tổng hợp ngầm ẩn hoặc rõ ràng để hạn chế mức đóng góp của các giá trị ngoại lệ. 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 bạn.
Kẹp ngầm
Trong phương pháp kẹp ngầm, các ranh giới đượ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 giới hạn ngầm. Nếu một hàng có phạm vi giá trị rộng hơn một hàng khác, thì tính năng phân ranh giới ngầm định sẽ tìm thấy các ranh giới khác nhau cho những hàng này. Điều này thường giúp giảm tỷ lệ lỗi cho từng kết quả. Mặt khác, mỗi hoạt động tổng hợp sẽ có các giới hạn chặn và mức độ nhiễu khác nhau, điều này có thể khiến bạn khó so sánh chúng.
Việc giới hạn ngầm ẩn có thể không thành công khi một hoạt động tổng hợp nhận được dữ liệu từ quá ít người dùng, chẳng hạn như lệnh gọi COUNTIF()
có điều kiện hiếm gặp. Những trường hợp này trả về NULL
kết quả. Ngoài ra, xin lưu ý rằng COUNT(DISTINCT user_id)
sẽ tự động sử dụng tính năng kẹp rõ ràng với các giới hạn là 0
và 1
.
Kẹp rõ ràng
Việc giới hạn rõ ràng sẽ giới hạn tổng mức đóng góp của mỗi người dùng trong một phạm vi cụ thể. Các ranh giới 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 trên mỗi người dùng rộng hơn những hàng khác, thì các giới hạn tương tự vẫn đượ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 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 tính năng giới hạn ngầm.
Phương pháp kẹp rõ ràng sử dụng một nửa lượng nhiễu so với phương pháp kẹp ngầm ẩn, đối với một nhóm 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 ranh giới cho từng hàm tổng hợp được hỗ trợ bằng cách thêm các số nguyên biểu thị ranh giới dưới và ranh giới 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 một truy vấn bằng cách thêm nhiễu
- Mở một báo cáo.
- 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.
- Chạy truy vấn.
- Xem xét tác động của tạp âm được thêm.
- 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, Ads Data Hub sẽ hiển thị độ tin cậy của kết quả trong bản tóm tắt về quyền riêng tư. Độ tin cậy được xác định dựa trên tỷ lệ phần trăm số ô trong đầu ra chịu ảnh hưởng lớn của độ 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 dữ liệu 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 chịu ảnh hưởng, bản tóm tắt về quyền riêng tư liệt kê 10 cột có độ nhiễu cao 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à thông tin chi tiết về lượng dữ liệu 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 nhỏ |
5% – 15% | Vàng | Tác động trung bình |
15% – 25% | Màu cam | Tác động lớn |
>25% | Đỏ | Tác động rất lớn |
Bạn cũng có thể xem trước bản 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 thông tin về quyền riêng tư của một việc làm cụ thể, hãy giữ con trỏ lên biểu tượng mẹo về quyền riêng tư privacy_tip trong thẻ việc làm ở mục 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 có lượng dữ liệu nhiễu không mong muốn khi có ít người dùng đóng góp vào những 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ể muốn điều chỉnh truy vấn để tăng tỷ lệ phần trăm dữ liệu có lượng 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 độ 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ằngCOUNT
. - Xoá các cột gây nhiễu.
- Sử dụng phương pháp 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ợ có 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 một giá trị tham chiếu trực tiếp đến cột user_id
trong 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))
.
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 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. Đ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ả, thì hãy tránh viết các hàm trả về INT64
, chẳng hạn như bằng cách sử dụng SUM
với đầu vào được truyền đến FLOAT64
.
Giới thiệu về kết quả phủ định
Về nguyên tắc, nhiễu có giá trị rất nhỏ có thể dẫn đến số âm, ngay cả khi điều này không thể xảy ra về mặt ngữ nghĩa đối với truy vấn. Để duy trì hành vi dự kiến, tất cả các dạng COUNT
và COUNTIF
đều tự động được giới hạn ở 0, do đó, chúng không bao giờ cho kết quả âm. Nếu muốn có hành vi tương tự với một hàm khác, chẳng hạn như SUM
, thì bạn có thể giới hạn kết quả theo cách thủ công bằng cách sử dụng GREATEST(0, SUM(...))
.
Thay đổi này thường không đáng kể, nhưng nó có thể tạo ra một sai số dương nhỏ cho kết quả tổng thể. Nếu bạn cần tránh trường hợp này, hãy cân nhắc sử dụng ADH.ANON_COUNT
thay vì COUNT
hoặc cân nhắc sử dụng GROUP BY ROLLUP
để tính tổng số lượt trên các hàng.
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 Ads Data Hub vẫn áp dụng cho những 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ề việc 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 cách sử dụng tính năng chèn nhiễu.
Số liệu tổng hợp ở cấp người dùng
Các giá trị 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ư trong chế độ kiểm tra chênh lệch. Nhiễu chỉ được chèn vào các hoạt động tổng hợp kết hợp dữ liệu của nhiều người dùng. Các hàm 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 phép. Các phép 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à các phép tổng hợp trên nhiều người dùng, vì vậy, 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 để kết hợp các 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 một người dùng đều phải nhóm theo cột user_id một cách rõ ràng, chứ không chỉ theo 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 hoạt động tổng hợp trên 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ép tổng hợp như vậy trong một câu lệnh duy nhất, 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 chế độ này sẽ được hỗ trợ nhưng bạn nên tránh sử dụng trong chế độ kiểm tra sự khác biệt. Phương pháp này không gặp vấn đề về nhiễu, vì mỗi giá trị tổng hợp song song đều được tạo nhiễu và lọc độc lập.
Dữ liệu tổng hợp 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 thường dùng là tổng hợp riêng các kết quả này và tự kết hợp chúng 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 chênh lệch 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 không khuyến khích việc tổng hợp lại kết quả tổng hợp, chẳng hạn như AVG(campaign_imps)
.
Các 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
Các truy vấn ở chế độ nhiễu 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 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ả trùng lặp
Ở 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 phép tổng hợp. Nếu đạ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 những 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.
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ố tương tự nhau, chẳng hạn như các dải ngày trùng nhau. Bạn có thể tránh trường hợp này bằng cách sử dụng dữ liệu đã được xuất sang dự án BigQuery của bạn.
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 lần 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ượt 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 tục.
Một ví dụ khác về sự lặp lại là khi dữ liệu không phụ thuộc vào ngày. Truy vấn sau đây tạo ra các lượt lặp lại khi được thực thi vào các ngày trùng nhau, 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ả không thay đổi.
Sự lặp lại của hàm tổng hợp xảy ra khi cùng một hàm 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ề mặt cú pháp nhưng tính toán cùng một giá trị, thì đó vẫn được coi là một phép lặp lại. Nói cách khác, nếu giá trị của condition1
và condition2
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 sẽ có một lần 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
.
Trường hợp 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 lượt 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á kết hợp (trong trường hợp này là campaign_id
).
Xin lưu ý rằng việc huỷ lồng một mảng từ bảng Ads Data Hub có thể tạo ra hiệu ứng tương tự nếu hầu hết người dùng có cùng 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 về các phương pháp hay nhất khác cho 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 tổng hợp đầu tiên 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ẽ kết hợp các kết quả nhiễu, vì vậy, các giá trị tổng hợp cuối cùng có thể có nhiều nhiễu hơn. Những truy vấn này sẽ nhận được cảnh báo khi xác thực:
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 quy trình tổng hợp duy nhất. Ví dụ: lấy SUM
sự kiện thay vì SUM
số lượng trung gian.
Nếu không thể tránh được việc tổng hợp nhiều lớp, bạn có thể giải quyết cảnh báo bằng cách 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 tác vụ duy nhất 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 của bạn) 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 các 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 các giá trị 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ế độ khử tiếng ồn.
Mã nhận dạng người dùng chưa được liên kết
Các truy vấn ở chế độ tạo nhiễu không được kết hợp dữ liệu của nhiều người dùng riêng biệt thành một hàng duy nhất, trừ phi bạn thực hiện một phép tổng hợp có nhiễu. Do đó, các thao tác kết hợp dữ liệu chưa được tổng hợp của Ads Data Hub phải kết hợp một cách 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 cảnh báo xác thực:
SELECT …
FROM adh.google_ads_impressions
JOIN adh.google_ads_clicks USING(impression_id)
Các phép kết hợp như thế này có thể không hoạt động như mong đợi vì chỉ những hàng có cùng giá trị user_id
mới khớp. 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ụ: USING(impression_id, user_id)
.
Xin lưu ý rằng hạn chế này chỉ áp dụng cho các thao tác kết hợp giữa các bảng Ads Data Hub (ngoại trừ bảng phương diện). Quy tắc 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 thông tin sau:
SELECT …
FROM adh.google_ads_impressions
JOIN bigquery_project.dataset.table USING(any_column)
Phép kết hợp bên phải Ads Data Hub – BigQuery
Các phép kết hợp 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, điều này khiến nhiễu không hoạt động hiệu quả.
Cả hai truy vấn này đều dẫn đến cảnh báo xác thực vì chúng cho phép các hàng không khớp có giá trị nhận dạng người dùng bị thiếu ở 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 cả hai thao tác kết hợp đều sẽ hoạt động nếu thứ tự của các bảng bị đảo ngược. Cũng có một trường hợp ngoại lệ đối với các bảng RDID kết hợp trực tiếp trên device_id_md5
. Ví dụ: truy vấn sau sẽ hoạt động mà không có cảnh báo:
SELECT …
FROM bigquery_project.dataset.table
LEFT JOIN adh.google_ads_impressions_rdid USING(device_id_md5)
Nội dung tóm tắt về hàng đã lọc
Chế độ 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 khi có 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 sai biệt.
Nếu bạn nhận thấy việc lọc dữ liệu đáng kể trong kết quả nhiễu, hãy tăng dữ liệu tổng hợp. Bạn có thể thực hiện một quy trình tổng hợp song song trên toàn bộ tập dữ liệu để so sánh một giá trị ước tính của tổng số, 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, nhưng tổng số thường chính xác hơn so với việc lấy tổng của các hàng bị làm nhiễu.
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 ở cùng chế độ riêng tư nơi bạn tạo các bảng đó. 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 bảng đó được xuất sang BigQuery trước).