Проверки конфиденциальности в Ads Data Hub

Конфиденциальность данных конечных пользователей лежит в основе всего, что делает Ads Data Hub; это фундамент, на котором построена наша платформа. Чтобы обеспечить конфиденциальность и помочь нашим клиентам соблюдать нормативные требования, мы применяем определённые проверки и ограничения, призванные предотвратить передачу данных об отдельных пользователях1 в данных, которые вы получаете через платформу.

Ниже представлен обзор функций конфиденциальности Ads Data Hub, более подробная информация представлена ​​в следующих разделах:

  • Статические проверки проверяют утверждения в ваших запросах на предмет очевидных и непосредственных проблем с конфиденциальностью.
  • Бюджеты доступа к данным ограничивают общее количество раз, когда вы можете получить доступ к определенному фрагменту данных.
  • Проверки агрегации гарантируют, что каждая строка содержит достаточно большое количество пользователей для защиты конфиденциальности конечного пользователя.
  • Проверки различий (или «diff-проверки») сравнивают наборы результатов, чтобы предотвратить сбор информации об отдельных пользователях путем сравнения данных из нескольких наборов пользователей.
  • Вставка шума — альтернатива проверке различий. Добавление случайного шума в агрегирующий оператор SELECT запроса защищает конфиденциальность пользователя, обеспечивая при этом достаточно точные результаты, устраняя необходимость в проверке различий и снижая требуемый порог агрегации для выходных данных.

Если результат не проходит проверку конфиденциальности, Ads Data Hub отображает или возвращает сообщение о том, что строка была отфильтрована. Это может быть как отдельная строка, так и целый набор результатов. Чтобы обеспечить точность итоговых данных в отчёте, используйте сводку по отфильтрованным строкам для подсчёта данных из отфильтрованных строк 2 .

Статические проверки

Статические проверки проверяют операторы в ваших запросах на наличие очевидных и непосредственных проблем с конфиденциальностью, таких как экспорт идентификаторов пользователей, использование любых функций идентификаторов пользователей или использование запрещённых функций в полях, содержащих данные на уровне пользователя. Чтобы избежать ошибок запросов, возникающих при статических проверках, ознакомьтесь с рекомендациями и узнайте, какие функции разрешены .

Бюджет доступа к данным

Ваш бюджет доступа к данным ограничивает общее количество раз, которое вы можете получить доступ к определённому фрагменту данных. Пользователи, у которых бюджет подходит к концу, получат уведомление о конфиденциальности с типом DATA_ACCESS_BUDGET_IS_NEARLY_EXHAUSTED . Вы можете контролировать бюджет, используя точку ввода бюджета доступа к данным или просматривая уведомления о бюджете в пользовательском интерфейсе.

Требования к агрегации

В основе проверок конфиденциальности Ads Data Hub лежит порог агрегации пользователей. Для большинства запросов можно получить отчётные данные только по 50 или более пользователям. Однако запросы, которые получают доступ только к кликам и конверсиям, можно использовать для отчётности по 10 или более пользователям.

  • События с нулевыми идентификаторами пользователей учитываются как один пользователь при расчете порога агрегации, независимо от того, сколько фактических пользователей создали события.
  • Пользователи с нулевыми идентификаторами не учитываются при расчете порога агрегации.
  • Узнайте, как режим шума влияет на требования к агрегации .

Рекомендация: настройте отфильтрованную сводку по строкам , чтобы отобразить пропущенные данные. Это поможет поддерживать единообразие исходных данных в отчётах.

В следующем примере строка, содержащая кампанию 125, будет отфильтрована из окончательных результатов, поскольку она объединяет результаты от 48 пользователей, что ниже минимума в 50 пользователей.

Идентификатор кампании Пользователи Впечатления
123 314 928
124 2718 5772
125 48 353

Режимы конфиденциальности

Ads Data Hub предлагает два режима конфиденциальности : проверку различий и добавление шума . В следующих разделах описываются и сравниваются эти режимы.

Использовать проверки различий

Проверки различий помогают гарантировать, что пользователи не смогут быть идентифицированы путем сравнения нескольких достаточно агрегированных результатов следующими способами:

  • Они сравнивают результаты текущей работы с предыдущими результатами.
  • Они сравнивают строки в одном и том же наборе результатов.

Нарушения проверки различий могут быть вызваны изменениями в базовых данных между двумя заданиями. При сравнении результатов задания с предыдущими результатами Ads Data Hub ищет уязвимости на уровне отдельных пользователей. Благодаря этому даже результаты из разных кампаний или результаты с одинаковым количеством пользователей могут быть отфильтрованы, если в них много пересекающихся пользователей.

С другой стороны, два агрегированных набора результатов могут иметь одинаковое количество пользователей (кажущихся идентичными), но не содержать отдельных пользователей и, следовательно, быть конфиденциальными, в этом случае они не будут фильтроваться.

Ads Data Hub использует данные из ваших исторических результатов при оценке уязвимости нового результата. Это означает, что многократное выполнение одного и того же запроса создаёт больше данных для проверки различий, которые можно использовать при оценке уязвимости нового результата. Кроме того, базовые данные могут изменяться, что приводит к нарушениям проверки конфиденциальности в запросах, которые считаются стабильными.

Если результаты на уровне задания различаются достаточно существенно, но отдельная строка похожа на строку в предыдущем задании, Ads Data Hub отфильтрует похожую строку. В этом примере будет отфильтрована строка, содержащая кампанию 123 в результатах второго задания, поскольку она отличается от предыдущего результата всего на одного пользователя.

Работа 1
Идентификатор кампании Пользователи
123 400
124 569
Работа 2
Идентификатор кампании Пользователи
123 401
224 1325

Если сумма пользователей во всех строках набора результатов совпадает с суммой из предыдущего задания, Ads Data Hub отфильтрует весь набор результатов. В этом примере будут отфильтрованы все результаты из второго задания.

Работа 1
Идентификатор кампании Пользователи
123 400
124 1367
Работа 2
Идентификатор кампании Пользователи
123 402
124 1367

Использовать инъекцию шума

Внесение шума — это метод защиты конфиденциальности пользователей при запросах к базе данных. Он работает путём добавления случайного шума к агрегирующему предложению SELECT запроса. Этот шум защищает конфиденциальность пользователей, обеспечивая при этом достаточно точные результаты, устраняя необходимость в проверке различий и снижая требуемый порог агрегации для выходных данных. Большинство существующих запросов можно выполнять в режиме шума, но с некоторыми ограничениями. Чтобы узнать больше о режиме шума и о том, как внесение шума влияет на требования к конфиденциальности, см. статью «Внесение шума» .

Сравните проверки различий с введением шума

Фактические данные
Идентификатор кампании Количество показов
101 35
102 63
201 142
202 21
301 56
302 99
Результаты с использованием проверок различий
Идентификатор кампании Количество показов
101 35
102 63
201 142
202 21
301 56
302 99
Результаты с использованием инъекции шума
Идентификатор кампании Количество показов
101 37.8373
102 60.9104
201 182.0955
202 26.2332
301 58.0871
302 97.5018
Пример кампании 101 в шумовом режиме
Идентификатор кампании Фактические впечатления Добавлен шум Возвращенные показы ( ANON_COUNT )
101 35 2.8373 37.8373

Сводка отфильтрованных строк

Сводки по отфильтрованным строкам содержат данные, отфильтрованные в результате проверок конфиденциальности. Данные из отфильтрованных строк суммируются и добавляются в строку сбора данных. Хотя отфильтрованные данные не подлежат дальнейшему анализу, они дают представление о том, какой объём данных был отфильтрован из результатов.

Явная фильтрация конфиденциальности

В случаях, когда вам необходимо разбить запрос, но вы хотите объединить агрегированные результаты, вы можете явно применить проверки конфиденциальности к нескольким небольшим запросам, а затем объединить эти результаты вместе безопасным для конфиденциальности способом.

Примеры использования:

  • Вы — рекламодатель, который ищет все конверсии по типу события атрибуции в своем связанном аккаунте Google Ads, включая данные ЕЭЗ.
  • Вы являетесь партнером по измерению, который ищет все конверсии по типу события атрибуции в вашем связанном аккаунте Google Ads.

Чтобы получить сумму конверсий для вашего аккаунта Google Ads, вы можете переписать запрос, используя предложение OPTIONS(privacy_checked_export=TRUE) , чтобы применить проверки конфиденциальности к каждой службе Google по отдельности.

Пример переписывания в этом разделе делает следующее:

  1. Он запрашивает каждую службу Google по отдельности, явно применяя проверки конфиденциальности к каждому набору промежуточных результатов.
  2. Он создает отдельную временную таблицу для проверенных на конфиденциальность результатов каждого сервиса Google: YouTube, Gmail и Network.
  3. Он объединяет и суммирует проверенные на конфиденциальность счетчики конверсий из временных таблиц.
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 .

  1. За исключением данных, на предоставление которых они дали согласие, например, в случае с участниками дискуссии.

  2. Если только это не противоречит ограничениям конфиденциальности, например, если пользователи в отфильтрованной строке сводки не соответствуют требованиям агрегации.