Чем мы можем помочь?

Data Clean Room — Динамический запрос Категория "Премиум"

  • Обновлено

Кратко: Запускайте пользовательские DCR-запросы в режиме реального времени к данным атрибуции в системе AppsFlyer, к вашим пользовательским источникам или к их комбинации. Просмотрите результаты ваших запросов в режиме предпросмотра или загрузите полные результаты.

Информация о компании

Зачем использовать Dynamic Query?

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

  • Используя возможности и гибкость SQL, он позволяет проводить углубленные исследования и выполнять сложные вычисления, которые невозможно выполнить иначе. С Dynamic Query вы можете применять свою бизнес-логику к данным, которые иначе были бы недоступны.
  • Кроме того, Dynamic Query позволяет эффективно получать ответы на разовые или нерегулярные вопросы без необходимости настраивать отчеты. (Разумеется, традиционные отчеты DCR по-прежнему являются правильным решением для регулярного извлечения и загрузки данных.)

Dynamic Query доступен всем клиентам DCR и позволяет выполнять запросы и предварительно просматривать результаты без использования кредитов из вашего пакета DCR. Кредиты списываются только в том случае, если вы решите загрузить полные результаты. Так вы сможете убедиться, что правильно настроили запросы, и получите нужные ответы до того, как с вас спишут кредиты.

Язык и диалект запросов

Dynamic Query использует SQL (диалект Spark SQL) и поддерживает:

Доступные источники

Dynamic Query позволяет выполнять пользовательские запросы к следующим источникам данных:

Вы можете запрашивать эти источники по отдельности или объединять 2 и более с помощью операторов JOIN или UNION. Благодаря такой гибкости Dynamic Query полезен в различных сценариях, например:

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

Примечание

В настоящее время Dynamic Query не запрашивает данные атрибуции и не возвращает результаты из Meta (Facebook, Instagram и т. д.) Чтобы запрашивать эти данные, настройте отчеты DCR. Чтобы запрашивать эти данные, настройте отчеты DCR. 

Сохранение конфиденциальности

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

  1. Любой запрос, использующий данные атрибуции, должен включать оператор GROUP BY, чтобы результаты были агрегированы.
  2. Операторы UNION нельзя использовать для объединения пользовательских источников с данными атрибуции.
  3. Группировка по следующим полям не разрешена:
    • Поля данных атрибуции:
      • appsflyer_id
      • IDFA
      • IDFV
      • рекламный_идентификатор
      • android_id
      • идентификатор_пользователя_клиента
      • ip
    • Поля пользовательских источников, которые соединены с любым из указанных выше полей данных атрибуции.
  4. Следующие функции не разрешены при запуске для неагрегированных данных атрибуции. Они разрешены при запуске для агрегированных данных атрибуции или данных пользовательских источников:
    • collect_list
    • collect_set
    • последняя
    • last_value
    • первая
    • first_value
    • max
    • min (Минимальный)

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

Доступ к Dynamic Query

  1. В AppsFlyer в боковом меню выберите Сотрудничество > Data Clean Room.
  2. В верхнем меню выберите вкладку Dynamic Query.

Reference(?)

Справочник по запросам

Следующие вкладки содержат дополнительную информацию о создании запросов в среде Dynamic Query.

Объединение источников: JOIN и UNION

Операторы JOIN объединяют источники, сопоставляя общее поле:

  • Можно использовать для объединения любых источников: таблиц данных атрибуции и/или пользовательских источников
  • Можно использовать для объединения неограниченного числа источников
  • Обычно используется для обогащения данных пользовательских источников данными атрибуции

Операторы UNION объединяют таблицы с совпадающей схемой (с одинаковыми столбцами и типами данных):

  • Можно использовать для объединения таблиц данных атрибуции или пользовательских источников; нельзя использовать для объединения таблиц данных атрибуции с пользовательскими источниками
  • Можно использовать для объединения неограниченного числа источников
  • Обычно используется для выполнения запросов к нескольким таблицам данных атрибуции

Запросы к таблицам данных атрибуции

Данные атрибуции в системе AppsFlyer представлены в 8 разных таблицах:

  • Каждая таблица содержит разные типы событий атрибуции.
  • Период доступности данных для запросов зависит от таблицы.
    • При создании запроса в консоли Dynamic Query наведите указатель мыши на название таблицы на панели выбора, чтобы увидеть точные даты доступности данных для этой таблицы.
  • Таблицы в каждой из перечисленных ниже групп имеют совпадающую схему, поэтому вы можете использовать операторы UNION, чтобы легко выполнять запросы к нескольким таблицам одновременно.

Группа 1: установки приложения и события ретаргетинга

Название таблицы Description(Описание) Даты доступности данных
installs Пользователь загружает, устанавливает и запускает мобильное приложение Предыдущие 180 дней
(не включая текущий день)
re_installs Пользователь устанавливает приложение, затем удаляет и повторно устанавливает его в течение окна реатрибуции Предыдущие 180 дней
(не включая текущий день)
re_engagements Неактивный пользователь определенного приложения взаимодействует с кампанией ретаргетинга для этого приложения, а затем запускает его Предыдущие 180 дней
(не включая текущий день)
re_attribution Бывший пользователь определенного приложения (который удалил его) взаимодействует с кампанией ретаргетинга для этого приложения, а затем повторно устанавливает его Предыдущие 180 дней
(без учета текущего дня)
organic_installs Установка, не атрибутированная к конкретному медиаисточнику Предыдущие 180 дней
(без учета текущего дня)

Группа 2: События в приложении

Название таблицы Description(Описание) Даты доступности данных
in_app_events События после установки, настроенные для измерения в SDK приложения Предыдущий день + текущий день
in_app_organic_installs События в приложении после органической установки Предыдущий день + текущий день

Группа 3: Показы

Название таблицы Description(Описание) Даты доступности данных
impressions (показы) Рекламное объявление просматривается пользователем приложения или посетителем веб-сайта
  • Данные доступны только для рекламных сетей, не относящихся к SRN
Предыдущие 5 дней + текущий день

Выборочные запросы

Эти запросы демонстрируют лишь несколько возможностей Dynamic Query. Их можно использовать просто для поиска идей или как отправную точку для собственных запросов.

Чтобы использовать примеры запросов как основу для своих запросов:

  1. Скопируйте и вставьте: скопируйте нужные примеры SQL и вставьте их в рабочий лист на вкладке Динамический запрос.
  2. Замените параметры: измените код SQL, заменив параметры на конкретные источники и поля, которые вы хотите запросить.
  3. Выполните: нажмите кнопку Запустить, чтобы запустить запрос и просмотреть результаты.
     
    • Запуск запроса и предварительный просмотр результатов не расходуют кредиты.
    • Кредиты из вашего пакета DCR расходуются, только если вы загружаете полные результаты.

Получайте инсайты по всем приложениям

Этот запрос извлекает информацию о 3 приложениях с наибольшим количеством повторных установок из Snapchat за последние 3 дня.

SELECT app_id, COUNT(*) AS reinstall_count
FROM re_installs
WHERE media_source = 'snapchat_int' AND dt BETWEEN DATE_SUB(current_date(), 3) AND current_date()
GROUP BY app_id
ORDER BY reinstall_count DESC
LIMIT 3;

Подробнее о целостности данных

Чтобы помочь вам оценить целостность данных, этот запрос рассчитывает долю нулевых значений IDFA для 10 медиаисточников с наибольшим количеством установок за последние 7 дней.

SELECT media_source, COUNT(*) AS total_installs, ROUND((SUM(CASE WHEN idfa IS NULL THEN 1 ELSE 0 END) / COUNT(*)) * 100, 2) AS null_idfa_rate
FROM installs
WHERE dt BETWEEN DATE_SUB(current_date(), 3) AND current_date()
GROUP BY media_source
ORDER BY total_installs DESC
LIMIT 10;

Рассчитывайте кастомные метрики атрибуции

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

SELECT media_source,campaign,geo_mean(GREATEST(1, unix_timestamp(install_time, "yyyy-MM-dd HH:mm:ss") - unix_timestamp(attributed_touch_time, "yyyy-MM-dd HH:mm:ss.SSS")))
FROM installs
GROUP BY 1,2

Обогащайте свои пользовательские данные инсайтами атрибуции

Этот запрос использует данные атрибуции для группировки оценки из Custom Source C (c.score) по медиаисточнику, что позволяет использовать вашу пользовательскую метрику для оценки относительной эффективности различных медиаисточников.

SELECT media_source, sum(c.score)
FROM client_input c JOIN install i on i.appsflyer_id = c.appsflyer_id
GROUP BY media_source;

Сложная атрибуция и объединение собственных данных

Этот запрос использует более сложный процесс объединения данных, что позволяет получать расширенные инсайты. Сначала он извлекает и объединяет данные из 2 отдельных таблиц атрибуции ("install" и "installRetarget"). Затем он объединяет эти данные с 2 пользовательскими источниками first-party, чтобы предоставить инсайты о различных типах конверсий, включая агрегированную пользовательскую метрику эффективности (score) и максимальный возраст для каждого типа.

SELECT conversion_type, SUM(sum_score), MAX(max_age)
FROM (SELECT media_source, conversion_type, SUM(score) as sum_score, MAX(age) as max_age
FROM (SELECT * from install union all select * FROM installRetarget) af
JOIN client_input c on c.appsflyer_id = af.appsflyer_id
JOIN client_age ca on ca.appsflyer_id = c.appsflyer_id
GROUP BY media_source, conversion_type)
GROUP BY conversion_type

Недопустимые запросы

Эти запросы иллюстрируют некоторые правила, которые Dynamic Query использует для обеспечения соблюдения правовых норм в части требований к конфиденциальности пользователей. Используйте их, чтобы лучше понять, что можно и нельзя делать при построении запросов для DCR.

Отсутствует оператор GROUP BY

Каждый из следующих запросов недопустим, поскольку использует данные атрибуции, но не включает оператор GROUP BY:

SELECT *
FROM install;

-----------------------------------------------------

SELECT media_source, appId
FROM client_input c
JOIN install af on af.appsflyer_id = c.appsflyer_id;

Группировка по недопустимому полю данных атрибуции

Следующий запрос недопустим, поскольку он группирует по недопустимому полю данных атрибуции (appsflyer_id):

SELECT appsflyer_id, count(*)
FROM install
GROUP BY appsflyer_id

-----------------------------------------------------

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

SELECT substr(appsflyer_id, 0, 5), count(*)
FROM install
GROUP BY substr(appsflyer_id, 0, 5)

-----------------------------------------------------

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

SELECT appsflyer_id, count(*)
FROM install
GROUP BY 1

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

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

SELECT my_id, count(*)
FROM installs
JOIN my_source on my_source.my_id = installs.appsflyer_id
GROUP BY my_id

Ограниченная функция

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

SELECT App_id, collect_list(appsflyer_id)
FROM install
GROUP BY app_id

-----------------------------------------------------

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

SELECT app_id, collect_list(campaign)
FROM (select app_id, campaign
  FROM Install
  GROUP BY 1, 2)
GROUP BY app_id

-----------------------------------------------------

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

SELECT app_id, collect_list(c.score)
FROM client_input c
GROUP BY app_id