Ads Data Hub が行うあらゆる処理はエンドユーザーのプライバシー保護を念頭に置いたものとなっており、プラットフォームそのものがプライバシー保護を基礎として構築されています。Google ではプライバシーを保護し、お客様の規制遵守をサポートするために、お客様がプラットフォームから取得するデータの中に個々のユーザーに関するデータ 1が含まれないよう、一定のチェック機能と制限を設けています。
Ads Data Hub のプライバシー機能の概要は以下のとおりです。詳細については、後述のセクションをご覧ください。
- 静的チェック: クエリ内のステートメントを調べ、プライバシーに関する明らかで直接的な懸念がないか確認します。
- データアクセス予算: 特定のデータにアクセスできる回数の上限が指定されています。
- 集計チェック: 各行に含まれるユーザー数をしきい値以上にすることで、エンドユーザーのプライバシーを保護します。
- 差分チェック (または「差分チェック」): 結果セットを比較することで、集計要件を満たした複数のユーザーセットのデータを比較することで、個々のユーザーに関する情報が収集されるのを防ぐのに役立ちます。
- ノイズ インジェクション: 差分チェックの代替手段として使用されます。
クエリの集計
SELECT句にランダムノイズを追加することで、ユーザーのプライバシーを保護しつつ、ある程度の正確な結果を得ることができます。この方法を使用する場合は、差分チェックを使用する必要がなくなり、出力に必要な集計しきい値を引き下げることが可能になります。
プライバシー チェックの結果が不合格だった場合、Ads Data Hub にプライバシー メッセージが表示されるか、プライバシー メッセージが返され、行がフィルタされたことが通知されます。フィルタされるのは、1 行の場合もあれば、結果セット全体の場合もあります。フィルタされた行の概要を使用して 、除外された行のデータをカウントすることで、レポートの合計の精度を保つことができます2。
静的チェック
静的チェック: クエリ内のステートメントを調べ、プライバシーに関する明らかで直接的な懸念がないか確認します。たとえば、ユーザー識別子のエクスポート、ユーザー識別子を使った関数、ユーザー単位のデータを含むフィールドにおける許可されていない関数の使用がないかを調べます。静的チェックによるクエリエラーを回避するには、 ベスト プラクティスを確認し、 許可されている関数を把握してください。
データアクセス予算
データアクセス予算とは、同じデータにアクセスできる回数の上限を定めたものです。予算の終了が近づくと、
プライバシー メッセージと
タイプ DATA_ACCESS_BUDGET_IS_NEARLY_EXHAUSTEDで通知されます。予算は、
データアクセス予算のエントリポイント
を使用するか、管理画面で予算通知を確認することでモニタリングできます。
集計の要件
Ads Data Hub のプライバシー チェックでは、ユーザー集計のしきい値が基準となります。ほとんどのクエリでは、含まれるユーザーが 50 人未満の場合、レポートデータは取得できません。ただし、クリック数とコンバージョン数のみを参照するクエリの場合は、10 人以上であれば取得可能です。
- ユーザー ID が 0 のイベントは、そのイベントを行った実際のユーザーの数にかかわらず、集計のしきい値の 1 ユーザーとしてカウントされます。
- ID が null のユーザーは、集計しきい値にカウントされません。
- ノイズモードが集計要件に与える影響についてご確認ください。
ベスト プラクティス: 除外されたデータに関するレポートを作成するには、フィルタされた行の概要を設定します。これにより、レポートの基準を一定に保つことができます。
次の例では、キャンペーン 125 を含む行は最終結果から除外されます。これは、48 人のユーザーの結果を集計しているため、下限の 50 人を下回っているためです。
| キャンペーン ID | ユーザー数 | 表示回数 |
|---|---|---|
| 123 | 314 | 928 |
| 124 | 2,718 | 5,772 |
| 125 | 48 | 353 |
プライバシー モード
Ads Data Hub には、差分チェックとノイズ インジェクションの 2 つのプライバシー モードがあります。以降のセクションでは、これらのモードについて説明し、比較します。
差分チェックを使用する
差分チェックは、以下の方法により集計要件を満たした複数のユーザーセットのデータを比較することで、個々のユーザーに関する情報が収集されるのを防ぐのに役立ちます。
- 実行中のジョブの結果を以前の結果と比較します。
- 同じ結果セット内の行を比較します。
2 つのジョブの間で基になるデータに差異があると、差分チェック違反が発生します。ジョブの結果を過去の結果と比較する際、Ads Data Hub は個々のユーザーのレベルで脆弱性がないか確認します。 そのため、異なるキャンペーンの結果や、同じ数のユーザーを報告する結果でも、重複するユーザーが多い場合はフィルタされることがあります。
一方、2 つの集計結果セットのユーザー数は同一に見えても、個々のユーザーが重複していない場合は、プライバシーに配慮した状態であるためフィルタされません。
Ads Data Hub では、新しい結果の脆弱性を確認する際は、過去の結果のデータが使用されるため、同じクエリを繰り返し実行すると、新しい結果の脆弱性を確認する際に差分チェックで使用されるデータが増えます。さらに、基になるデータが変化する可能性があるため、安定していると考えられるクエリでもプライバシー チェック違反が発生する場合があります。
ジョブレベルでは結果が十分に異なっていても、個々の行が前のジョブの行と類似している場合、Ads Data Hub はその類似した行をフィルタします。この例では、2 番目のジョブの結果に含まれるキャンペーン 123 の行は、前の結果と 1 人のユーザーが異なるため、フィルタされます。
|
|
||||||||||||||||
結果セットのすべての行のユーザー数の合計が前のジョブのユーザー数の合計と類似している場合、Ads Data Hub によって結果セット全体がフィルタされます。この例では、2 番目のジョブのすべての結果がフィルタされます。
|
|
||||||||||||||||
ノイズ インジェクションを使用する
ノイズ インジェクションは、データベースにクエリを実行する際にユーザーのプライバシーを保護するために使用される技術です。これは、クエリの集計
SELECT
句にランダムノイズを追加することで機能します。このノイズによりユーザーのプライバシーが保護される一方で、ある程度の正確な結果が得られ、差分チェックの必要性がなくなり、出力に必要な集計しきい値が削減されます。いくつかの制限があるものの、既存のクエリのほとんどはノイズモードで実行できます。ノイズモードの詳細と、ノイズ
インジェクションがプライバシー要件に与える影響については、ノイズ インジェクションをご覧ください。
差分チェックとノイズ インジェクションを比較する
|
|
||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
フィルタされた行の概要
フィルタされた行の概要では、プライバシー チェックによって除外されたデータが集計されます。フィルタされた行のデータが合計され、キャッチオール行に追加されます。フィルタされたデータはこれ以上分析できませんが、結果から除外されたデータの量の概要を把握することができます。
明示的なプライバシー フィルタリング
クエリを分割する必要があるものの、集計結果を結合したい場合は、複数の小さなクエリに明示的にプライバシー チェックを適用し、それらの結果をプライバシー保護された方法で集計できます。
サンプル ユースケース:
- 広告主様が、リンクされた Google 広告アカウント(EEA データを含む)でアトリビューション イベント タイプ別のすべてのコンバージョンを探している。
- 測定パートナー様が、リンクされた Google 広告アカウントでアトリビューション イベント タイプ別のすべてのコンバージョンを探している。
Google 広告アカウントのコンバージョンの合計を取得するには、OPTIONS(privacy_checked_export=TRUE)
句を使用してクエリを書き換え、各 Google サービスに個別にプライバシー チェックを適用します。
このセクションの書き換え例では、次の処理を行います。
- 各 Google サービスに個別にクエリを実行し、各中間結果セットに明示的にプライバシー チェックを適用します。
- 各 Google サービス(YouTube、Gmail、ネットワーク)のプライバシー チェック済み結果に対して、個別の一時テーブルを作成します。
- 一時テーブルからプライバシー チェック済みのコンバージョン数を集計して合計します。
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メソッドを使用します。
-
ユーザーが共有に同意したデータ(パネルメンバーの場合など)以外を指します。 ↩
-
プライバシー上の制限によってできない場合(フィルタされた行の概要のユーザー数が集計要件を満たしていない場合など)を除きます。 ↩