使用者隱私是廣告資料中心的運作核心,也是 Google 平台的建構基礎。為了保護使用者隱私,並協助客戶遵循監管法規,我們採取若干檢查與限制措施,防止 Google 平台提供的資料含有個別使用者的資料1。
以下簡要說明廣告資料中心的隱私權功能,詳情請參閱後續章節:
- 靜態檢查會檢查查詢中的陳述式,找出顯而易見的隱私權問題。
- 資料存取預算 - 限制可存取特定資料的總次數。
- 匯總檢查 - 確保每一列的使用者達到一定人數,保障使用者隱私。
- 差異檢查 (或「差異檢查」) 會比較結果集,防止您比較多個使用者群的資料,藉此蒐集個別使用者的資訊。
- 雜訊插入 - 差異檢查的替代方式。
在查詢的匯總
SELECT子句中加入隨機雜訊,不但能保護使用者隱私,同時可產生合理準確的結果,不用再執行差異檢查,還能降低規定的輸出結果匯總門檻。
如果結果未通過隱私權檢查,廣告資料中心會顯示或傳回隱私權訊息,指出有資料列已遭篩除。篩除的可能是單一資料列,甚至是整個結果集。為了確保報表總和仍然正確,請使用篩除資料列摘要,計算捨棄的列含有多少資料2。
靜態檢查
靜態檢查會檢查查詢中的陳述式,找出顯而易見的隱私權問題,例如:匯出使用者 ID 或任何使用者 ID 的函式,或是對包含使用者層級資料的欄位套用不允許的函式。如要避免靜態檢查導致查詢錯誤,請參閱最佳做法,並瞭解允許使用的函式。
資料存取預算
「資料存取預算」會限制可存取特定資料的總次數。預算即將用完時,使用者會收到類型為 DATA_ACCESS_BUDGET_IS_NEARLY_EXHAUSTED 的隱私權訊息通知。您可以透過資料存取預算進入點,或是觀察使用者介面中的預算通知,監控預算使用情況。
匯總需求條件
廣告資料中心在執行隱私權檢查時,是以使用者匯總門檻做為核心標準。大多數查詢只能產生含括 50 位以上使用者的報表資料,但如果是只存取點擊和轉換資料的查詢,報表資料的使用者匯總門檻是 10 位
- 無論實際上有多少使用者建立 User ID 為 0 的事件,這類事件都會計為單一使用者,並計入匯總門檻。
- ID 為空值的使用者不會計入匯總門檻。
- 瞭解雜訊模式對匯總規定的影響。
最佳做法:設定篩除資料列摘要,針對省略的資料產生報表。這有助報表基準保持一致。
在以下範例中,包含廣告活動 125 的列會從最終結果中篩除,因為該列只匯總 48 位使用者的資料,未達 50 位使用者門檻。
| 廣告活動 ID | 使用者 | 曝光次數 |
|---|---|---|
| 123 | 314 | 928 |
| 124 | 2718 | 5772 |
| 125 | 48 | 353 |
隱私模式
廣告資料中心提供兩種隱私權模式:差異檢查和雜訊注入。以下各節將說明並比較這些模式。
使用差異檢查
差異檢查會比較多個充分匯總的結果,確保無法辨識使用者身分,方式如下:
- 比較執行中的工作結果和先前的結果。
- 比較相同結果集中的資料列。
當兩個工作之間的基礎資料有異動時,就會觸發差異檢查通報違規。比較工作結果與之前的結果時,廣告資料中心會檢視個別使用者層級是否存在漏洞。也就是說,即便結果來自不同廣告活動或是報表中的使用者人數相同,只要有大量重疊的使用者,結果就可能會遭到篩除。
另一方面,如果兩個匯總結果集的使用者人數相同 (兩個結果集看起來一樣),但沒有個別使用者重疊,在此情況下可確保使用者隱私安全,結果就不會遭到篩除。
廣告資料中心在評估新結果是否存在安全漏洞時,會參考過往結果的資料。也就是說,一再重複執行相同的查詢會產生越來越多的資料,而系統進行差異檢查時,便會依據這些資料評估新結果是否有安全漏洞。此外,基礎資料可能會有所變動,導致結果本應穩定的查詢無法通過隱私權檢查。
如果工作層級結果有明顯差異,但個別資料列和上一個工作的資料列相似,廣告資料中心就會篩除類似的資料列。在這個範例中,第二項作業結果中含有廣告活動 123 的資料列會遭到篩除,因為該列與之前的結果僅相差一位使用者。
|
|
||||||||||||||||
如果結果集中所有資料列的使用者總數與上一個工作相似,廣告資料中心會篩除整個結果集。在這個範例中,系統會篩除第二個工作的所有結果。
|
|
||||||||||||||||
使用雜訊插入功能
查詢資料庫時,雜訊插入技術可保護使用者隱私,運作方式是在查詢的 SELECT 匯總子句中加入隨機雜訊。在保護使用者隱私之餘,這個雜訊能還能提供合理準確的結果,為您省去進行差異檢查的麻煩,並降低取得結果所需達到的匯總門檻。目前大多數的查詢都能在雜訊模式下執行,但有一些限制。如要進一步瞭解雜訊模式,以及雜訊插入對隱私權規定的影響,請參閱「雜訊插入」。
比較差異檢查和雜訊插入
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
篩除資料列摘要
篩除資料列摘要會匯總因隱私權檢查而篩除的資料。篩除資料列中的資料在加總後會加進綜合資料列。雖然篩除後的資料無法進一步分析,但可以歸納出從結果中篩除的資料量。
隱私權篩選功能
如果需要將查詢拆開,但想合併匯總結果,您可以對多個較小的查詢明確套用隱私權檢查,然後以隱私權安全的方式匯總這些結果。
應用情境範例:
- 您是廣告主,想在已連結的 Google Ads 帳戶中,依歸因事件類型查看所有轉換,包括歐洲經濟區資料。
- 您是評估合作夥伴,想在已連結的 Google Ads 帳戶中,依歸因事件類型查看所有轉換。
如要取得 Google Ads 帳戶的轉換總和,您可以使用 OPTIONS(privacy_checked_export=TRUE) 子句重新編寫查詢,個別對每個 Google 服務套用隱私權檢查。
本節中的重寫範例會執行下列操作:
- 這項功能會個別查詢每項 Google 服務,並明確對每個中繼結果集套用隱私權檢查。
- 系統會為每項 Google 服務 (YouTube、Gmail 和 Google 網路) 經過隱私權檢查的結果,建立個別的臨時資料表。
- 系統會匯總並加總臨時資料表中通過隱私權檢查的轉換次數。
CREATE TEMP TABLE youtube_agg OPTIONS(privacy_checked_export=TRUE) AS
SELECT
impression_data.campaign_id,
attribution_event_type,
COUNT(1) AS num_convs
FROM adh.google_ads_conversions_policy_isolated_youtube
WHERE impression_data.campaign_id IN UNNEST(@campaign_ids)
AND conversion_type IN UNNEST(@conversion_type_list)
GROUP BY campaign_id, attribution_event_type;
CREATE TEMP TABLE network_agg OPTIONS(privacy_checked_export=TRUE) AS
SELECT
impression_data.campaign_id,
attribution_event_type,
COUNT(1) AS num_convs
FROM adh.google_ads_conversions_policy_isolated_network
WHERE impression_data.campaign_id IN UNNEST(@campaign_ids)
AND conversion_type IN UNNEST(@conversion_type_list)
GROUP BY campaign_id, attribution_event_type;
CREATE TEMP TABLE gmail_agg OPTIONS(privacy_checked_export=TRUE) AS
SELECT
impression_data.campaign_id,
attribution_event_type,
COUNT(1) AS num_convs
FROM adh.google_ads_conversions_policy_isolated_gmail
WHERE impression_data.campaign_id IN UNNEST(@campaign_ids)
AND conversion_type IN UNNEST(@conversion_type_list)
GROUP BY campaign_id, attribution_event_type;
SELECT
campaign_id,
attribution_event_type,
SUM(num_convs) AS num_convs
FROM (
SELECT * FROM youtube_agg
UNION ALL
SELECT * FROM network_agg
UNION ALL
SELECT * FROM gmail_agg
)
GROUP BY campaign_id, attribution_event_type
請注意,這項查詢不會使用 JOIN 直接合併資料表之間的資料,而是先針對每個資料表執行查詢,對每個中繼資料表套用隱私權檢查,然後使用 UNION 加總通過隱私權檢查的值。
查詢建議工具
如果 SQL 有效但可能觸發過度篩除,查詢建議工具會在查詢建構過程中顯示可行的建議,避免產生不適當的結果。
觸發條件含括以下模式:
如何使用查詢建議工具:
- 使用者介面:建議會顯示在查詢編輯器中的查詢文字上方。
- API:請使用
customers.analysisQueries.validate方法。