Кратко: Запускайте пользовательские DCR-запросы в режиме реального времени к данным атрибуции в системе AppsFlyer, к вашим пользовательским источникам или к их комбинации. Просмотрите результаты ваших запросов в режиме предпросмотра или загрузите полные результаты.
Информация о компании
Зачем использовать Dynamic Query?
Dynamic Query позволяет выполнять специальные пользовательские запросы к вашим данным DCR в режиме реального времени, чтобы быстро и эффективно получать ответы на конкретные маркетинговые вопросы.
- Используя возможности и гибкость SQL, он позволяет проводить углубленные исследования и выполнять сложные вычисления, которые невозможно выполнить иначе. С Dynamic Query вы можете применять свою бизнес-логику к данным, которые иначе были бы недоступны.
- Кроме того, Dynamic Query позволяет эффективно получать ответы на разовые или нерегулярные вопросы без необходимости настраивать отчеты. (Разумеется, традиционные отчеты DCR по-прежнему являются правильным решением для регулярного извлечения и загрузки данных.)
Dynamic Query доступен всем клиентам DCR и позволяет выполнять запросы и предварительно просматривать результаты без использования кредитов из вашего пакета DCR. Кредиты списываются только в том случае, если вы решите загрузить полные результаты. Так вы сможете убедиться, что правильно настроили запросы, и получите нужные ответы до того, как с вас спишут кредиты.
Язык и диалект запросов
Dynamic Query использует SQL (диалект Spark SQL) и поддерживает:
- Запросы SELECT
- Стандартные функции SQL
- Пользовательские функции (UDF) по запросу клиента
- Если вам нужна нестандартная функция SQL, обратитесь к своему CSM или напишите на hello@appsflyer.com, и мы сделаем все возможное, чтобы добавить ее.
Доступные источники
Dynamic Query позволяет выполнять пользовательские запросы к следующим источникам данных:
- Ваши данные атрибуции в системе AppsFlyer
- Узнать больше о таблицах данных атрибуции и о том, как выполнять запросы к ним
- Пользовательские источники, которые вы настроили в DCR
Вы можете запрашивать эти источники по отдельности или объединять 2 и более с помощью операторов JOIN или UNION. Благодаря такой гибкости Dynamic Query полезен в различных сценариях, например:
- Запросы только к данным атрибуции, чтобы получать инсайты по всем приложениям, анализировать целостность данных или рассчитывать пользовательские метрики атрибуции
- Запрос данных из ваших пользовательских источников в сочетании с данными атрибуции, чтобы обогатить ваши данные инсайтами атрибуции
В зависимости от типов источников, используемых в запросе, применяются правила, обеспечивающие строгое соблюдение конфиденциальности пользователей.
Примечание
В настоящее время Dynamic Query не запрашивает данные атрибуции и не возвращает результаты из Meta (Facebook, Instagram и т. д.) Чтобы запрашивать эти данные, настройте отчеты DCR. Чтобы запрашивать эти данные, настройте отчеты DCR.
Сохранение конфиденциальности
Чтобы обеспечить строгое соблюдение стандартов конфиденциальности DCR в Dynamic Query, ко всем запросам применяются следующие требования:
- Любой запрос, использующий данные атрибуции, должен включать оператор GROUP BY, чтобы результаты были агрегированы.
- Операторы UNION нельзя использовать для объединения пользовательских источников с данными атрибуции.
- Группировка по следующим полям не разрешена:
-
Поля данных атрибуции:
- appsflyer_id
- IDFA
- IDFV
- рекламный_идентификатор
- android_id
- идентификатор_пользователя_клиента
- ip
- Поля пользовательских источников, которые соединены с любым из указанных выше полей данных атрибуции.
-
Поля данных атрибуции:
- Следующие функции не разрешены при запуске для неагрегированных данных атрибуции. Они разрешены при запуске для агрегированных данных атрибуции или данных пользовательских источников:
- collect_list
- collect_set
- последняя
- last_value
- первая
- first_value
- max
- min (Минимальный)
Чтобы узнать больше о том, что можно и чего нельзя делать при создании запросов, см. примеры и пояснения для корректных и некорректных запросов.
Доступ к Dynamic Query
- В AppsFlyer в боковом меню выберите Сотрудничество > Data Clean Room.
- В верхнем меню выберите вкладку 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 (показы) | Рекламное объявление просматривается пользователем приложения или посетителем веб-сайта
|
Предыдущие 5 дней + текущий день |
Выборочные запросы
Эти запросы демонстрируют лишь несколько возможностей Dynamic Query. Их можно использовать просто для поиска идей или как отправную точку для собственных запросов.
Чтобы использовать примеры запросов как основу для своих запросов:
- Скопируйте и вставьте: скопируйте нужные примеры SQL и вставьте их в рабочий лист на вкладке Динамический запрос.
- Замените параметры: измените код SQL, заменив параметры на конкретные источники и поля, которые вы хотите запросить.
- Выполните: нажмите кнопку Запустить, чтобы запустить запрос и просмотреть результаты.
- Запуск запроса и предварительный просмотр результатов не расходуют кредиты.
- Кредиты из вашего пакета 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