概要:Data Locker中的SSOT报告结合ID匹配和SKAN等多种归因模式的数据,以一体化的视图全面准确地呈现应用广告的投放效果。 您可以将这些报告导入您的BI系统,从而强化贵司BI的分析和上报能力。如果您订购的套餐中已包含原始数据权限,则无需再单独购买Data Locker。
Data Locker简介
Data Locker能够以安全可靠的方式直接向AWS、GCS和Snowflake等主流云平台传输数据。广告主可以通过该解决方案便捷地完成数据对接和入库,便于对数据进行综合分析与上报。详情请见此文档。
单一可信数据源(SSOT)简介
SSOT报告结合ID匹配和SKAN等多种归因模式的数据,以一体化的视图全面准确地呈现应用广告的投放效果,旨在解决数据碎片化所带来的问题。详情请见此文档。
通过Data Locker获取SSOT报告的优势
单一可信数据源(SSOT)报告具有下列优势:
- 准确掌握完整的转化情况:SSOT可联合处理多种不同归因模式所产生的数据,有效避免多模式并行时的激活数据重复统计,从而确保相关数据能准确地反映真实的用户行为和转化。
- 将数据导入您的BI系统:SSOT能够使用汇总数据帮助您高效、精准地搭建您的内部BI系统。这些汇总数据包括归因、应用内事件以及收入数据,且涵盖所有的维度和指标。将这些数据导入BI后,您就可以在保障用户隐私的同时改善投放效果和优化流程。
- 最细颗粒度:SSOT提供可用范围内最细的数据颗粒度,即使是为了补齐SKAN数据缺口而通过模型推算得出的数据也不例外。这些详尽细致的数据能帮助您精准定位问题根因,进而作出明智的优化决策。
Data Locker的设置方式
SSOT报告详情说明
特点 | 说明 |
---|---|
可用报告 | 可用的报告类型有以下两种:
|
报告周期 | 该报告最多可呈现激活后7天内的群组指标。 |
文件目录结构 | 文件目录结构按激活日期设定。每个激活日期的文件夹中包含当日生成的多个数据版本,各版本呈现当日最新的累计数据。也就是说,您应仅处理最近期的那一版数据。了解详情 |
报告结构 | 报告结构(即报告中的维度和指标)是固定的,无法更改。 |
时区 | UTC |
数据时效性 |
|
报告结构
报告由不同的维度和指标组成。
这些指标涵盖了归因、收入以及完成具体事件的独立用户。ROI、ROAS等成本指标的计算需要同时用到收入和成本数据。收入数据可通过SSOT报告获取,而成本数据则需使用ROI360 Cost ETL。
字段格式
格式名称 | 说明 |
---|---|
字符串 [n] | 字符串的长度上限。AF接收数据时并不会对字段长度做出硬性限制,但超过上限的字段可能会被截断。 |
时间字符串 |
字符串的格式为: yyyy-mm-dd hh:mm:ss. 示例: 2019-09-17 00:09:25 |
枚举 [n] | 枚举字段仅可包含特定的值。比如selected_currency字段的值只能由指定的3字符货币代码组成。 |
时间戳 | 10位UNIX时间戳。比如: UTC时间2020年8月4日07:25的时间戳为: "timestamp": "1596525944" |
布尔 | 该字段中可能出现的值为TRUE或FALSE |
整数 | 整数 |
浮点数 | 浮点数(实型)中可以带小数点,且小数点后可以有值。 |
维度
字段名称 | 说明 | 格式 | ||||||
---|---|---|---|---|---|---|---|---|
af_ad_id | 广告标识符,广告层次结构中的一个层级。 | 字符串 | ||||||
af_ad | 广告名称。 | 字符串 | ||||||
af_adset_id | 广告组标识符,广告层次结构中的一个层级。 | 字符串 | ||||||
af_adset | 广告组名称。 | 字符串 | ||||||
app_id | 以“ID”开头的App ID(广告主应用)。 | 字符串 | ||||||
attribution_method | 用于对相关事件进行归因的机制。包括AppsFlyer归因机制、SKAN归因、以及自然量。 | 字符串 | ||||||
attributed_touch_type | 可能出现的值有:click(点击)、impression(展示)和null值。 | 字符串 | ||||||
campaign | 广告平台上报给AppsFlyer的广告系列名称 | 字符串 | ||||||
af_c_id | 广告系列标识符。 | 字符串 | ||||||
days_post_attribution | 转化后的天数(不是实际转化的时间戳) 小贴士:您可以使用该数据来计算留存和KPI天数。 |
int | ||||||
event_name | 用于标识事件。有些事件名称具有特定含义,而有些则与广告主在应用中设置的应用内事件有关。
|
字符串 | ||||||
geo | ISO国家/地区代码。AppsFlyer传统归因模式根据用户的IP地址判断此信息,而在SKAN模式中,该数据由广告平台上报或通过建模推算得出。 | 字符串 | ||||||
install_date |
SKAN:由AppsFlyer根据回传接收时间估算得出 AF:
|
字符串 | ||||||
is_primary_attribution |
UA(用户获取):True 再营销:在再互动窗口期内,AF会将用户同时归因到最初的拉新渠道(即再互动之前的渠道)以及带来再互动的渠道。如果事件发生在再互动窗口期内,初始媒体渠道字段会显示为FALSE(即不是主要渠道),而再互动渠道字段则为TRUE。 |
布尔值 | ||||||
media_source | 获得某个事件归因的广告平台。 | 字符串 | ||||||
selected_currency | 3个字母组成的货币代码(如USD、EUR等),由广告主在AF后台的应用设置页面中配置。需使用ISO-4217标准中的货币代码。这里的货币与SSOT面板中收入指标的货币单位一致。 | 字符串 | ||||||
conversion_type | 可能出现的值为: Install(激活):用户首次下载并打开相关应用。 Re-attribution(再归因):用户完成卸载重装,并归因到新的广告系列。 Re-download(重新下载,适用于SKAN):用户卸载相关应用后再次安装该应用。 Re-engagement(再互动):用户与再营销广告交互后再次打开相关应用。 |
字符串 |
指标
各指标在Data Locker中的名称 | 说明 | 格式 |
---|---|---|
revenue_selected_currency | 以选定货币为单位的累计收入金额。最多精确到小数点后2位。 举例来说:假设事件名称为event_name=purchase,窗口期为days_post_attribution=2,则该字段的值为激活后2天(而非仅第2天)内来自购买事件的总体收入。 |
双精度浮点数 |
revenue_usd | 以美元(USD)为单位的累计收入。 举例来说:假设事件名称为event_name=purchase,窗口期为days_post_attribution=2,则该字段的值为激活后2天(而非仅第2天)内来自购买事件的总体收入。 |
双精度浮点数 |
skan_duplicates | 对于由SKAN归因及AF传统归因模式归因到的激活进行去重处理,避免SSOT数据中出现重复。 | 长整型 |
uninstalls_count | 激活应用后卸载(删除)应用的用户数量(仅适用于用户获取) | 长整型 |
unique_users | 完成某个事件的独立用户数。该字段表达累计值。 举例来说:假设事件名称为event_name=purchase,窗口期为days_post_attribution=2,则该字段的值为激活后2天(而非仅第2天)内完成购买的独立用户数量。 |
整型 |
模型推算数据
AppsFlyer的数据模型可推算出基础SKAN数据无法提供的信息。
- 转化值(CV)为null:Apple为了保障用户隐私,会在SKAN中将实际值替换为“Null”值,再进行上报。为了填补数据缺口,SSOT会通过数据模型对这些null值进行推算。详情请见此文档。
- 激活后的监测窗口期更长:SKAN对用户激活后两天以外的行为无法提供粒度较细的数据,这方面的局限性会导致数据不准确。为了确保数据质量,我们会对激活后更长一段时间内产生的事件独立用户及收入进行建模推算。详情请见此文档。
国家/地区(Geo)数据:由于SKAN的数据颗粒度限制,国家/地区数据通常不可用。在这种情况下,我们会通过模型推算这些数据,帮助您进行有效的数据分析。详情请见此文档。
不完整数据
如果您需要对最近几个激活日期内产生的数据进行分析,这时较长期的激活后指标(如激活后7天)可能尚未达到完备状态。这种情况下,相关指标仍然可用,但其数据不完整。
请充分考虑下列事项:
- 每当有可用数据出现时,该报告就会立即呈现这些数据。
- 激活后两天内的指标会在5天后达到完备状态。*
- 激活后七天内的指标会在7天后达到完备状态。在激活后的15天内,我们的模型会不断对这些数据进行精细化处理。
出现不完整数据的原因有以下几种:
- 数据成熟度:如果激活日期与当前日期之间的时间段短于您要分析的时间段,则相关数据仍在累计中,尚不完整。
- SKAN延时:SKAN在发送数据时会有随机的延时。比如激活后2天内的用户行为数据最多可能会在激活后的96小时(即4天)后方才送达。
- 模型推算数据的处理节奏:我们会对激活后2天以上的SKAN数据进行建模推算,并在激活日期的7天之后生成首个推算值。在激活后第2到7天这段时间内,AppsFlyer传统归因模式的数据已达到可用状态,但SKAN的模型推算数据尚不可用。
示例(假设激活日期为1月1日):
- 1月2日:AppsFlyer尚未收到SKAN数据。激活后2天内的数据与激活后7天的数据相同,且两者都不完整,由AppsFlyer传统归因模式的数据组成。
- 1月3日:AppsFlyer接收到部分SKAN数据。激活后2天的数据不完整,但这时其中包含部分SKAN数据。激活后7天的数据尚不包含模型推算的SKAN数据(首个模型推算值将在激活日期起的7天后可用)。因此在激活后的2到7天内,激活后7天的指标值可能低于激活后2天的指标值。
- 1月6日:AppsFlyer己接收到激活后2天的完整SKAN数据,包括延时最长的回传。此时,激活后2天的指标已充分涵盖完整数据,但激活后7天的指标值尚不完整。
- 1月8日:激活后7天的SKAN模型推算数据已生成完成。我们的模型会持续细化该数据,一直到1月16日为止。
文件目录结构
报告文件夹的层次结构
-
主文件夹按报告类型整理归类。可能出现的
值包括:
- ssot_unified
- ssot_retargeting
- ssot_user_acquisition
- 这些文件夹下的子文件夹则按照激活日期 整理归类。
报告版本
- 每个激活日期的文件夹中都包含多个版本的数据, 每天一次写入Data Locker。
- 每个版本都反映该激活日期的 最新累计数据。
- 报告中包含该激活日期的所有可用数据。 例如在4月18日这天,各激活日期下最新版本的报告中涵盖 截至4月18日为止的所有数据。
- 提示:建议您总是处理最近期的那一版数据, 以确保数据准确性。
每个激活日期文件夹下最多可容纳15个版本的报告。激活日期的15天后, 所有指标都已充分覆盖完整数据,并已打磨完毕。 详情请见此文档。
目录与文件名结构
SSOT报告的路径格式如下:
<bucket-name>/t=<ssot_unified OR ssot_retargeting OR ssot_user_acquisition>/install_date=<yyyy-mm-dd>/version=<unix timestamp>/<parquet file number>
广告主存储桶中的文件夹层次结构示例:
bucket | └── t=ssot_unified | ├── install_date=2024-05-05 | | | └── version=1714890235 | | | | | ├── part-00000-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz | | | | | ├── part-00001-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz | | │ | | └── part-00002-4762858-d62a-446e-b499-dd05f2d5434d-c000.csv.gz | | | | | └── version=1714890286 | | | ├── part-00000-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz | | | ├── part-00001-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz | │ | └── part-00002-1d295376-d024-4321-8d34-1fbb37cbb58d-c000.csv.gz | | . . . .
说明:
- t:报告主题(类型)。
- install_date:用户激活相关应用的日期。也就是说, 激活后的用户行为数据会按相应的激活日期(即用户下载并首次打开相关应用的时间)呈现, 而非该用户行为 发生的日期。
- version:使用Unix时间戳来表示相关版本的创建时间。
BI开发者注意事项
报告中的数据范围:
这些报告中包含新增激活、再营销产生的再互动(即SKAN中的re-downloads)和再互动,以及相关的应用内事件。
报告入库
您可以同时将统一、UA和再营销报告 导入您的BI系统,也可以分开单独导入。如果您选择同时导入这三种报告, 需要自行筛选不同视图的数据:
- 统一报告:使用is_primary_attribution=true或null 来筛选数据。
- 用户获取报告:使用conversion_type=Install来筛选数据。
- 再营销报告:使用conversion_type=re-engagement或 re-attribution来筛选数据。
- 统一视图:如果您在数据入库的过程中使用统一视图, 可以按投放类型来拆分数据:
- 使用conversion_type=install、re-engagement或re-attribution (在SKAN中为re-download)来筛选数据。
- 详情请见《再营销事件的双重归因》 。
归因后的天数
重要提示!
报告中包含days_post_attribution(归因后的天数)维度, 该维度将收入及独立用户数据关联到激活后的 特定天数
- 对于转化(激活、再互动等),该维度的值 为0。
- 对于收入和应用内事件,相关数据会被分为两个预定义群组, 目前仅限激活后 “2”天和“7”天。
为了确保您能对应用内事件和收入进行准确分析,建议使用days_post_attribution维度来筛选数据。详情请见 详见下文说明。
一种常见的错误查询方式是运用过于简单的逻辑 将一系列维度的收入值进行加总。 由于这种方式会重复统计部分收入 (days_post_install=2的收入和days_post_install=7的收入之间有重叠), 因此得出的数据不准确。这个例子同样也适用于 特定应用内事件的独立用户数分析。
注意事项
请务必注意以下几点:
- 最新版本:总是查询各激活日期下 最近期的版本,以确保您在数据分析中使用的是 最新最准确的数据。
- 收入计算:以美元为单位的收入指标是 根据事件当天的汇率计算的。
- 归因分析:带有event_name=af_conversion的记录 即表示对转化的归因(包括激活、再归因/SKAN中的re-downloads以及再互动)。 SKAN中的re-downloads以及再互动)。归因到的转化数量 呈现在独立用户指标下, 这些字段的收入指标为空,days_post_attribution的值 为0。
- 面板对比:对比面板中的激活数时, 请使用重新下载(redownloads)和激活(install)这两种转化类型的总和, 因为面板会将这两种类型的转化都计为激活(install)。
- 应用内事件分析:event_name不等于 “af_conversion”的记录即表示应用内事件。完成该事件的独立用户数 呈现在独立用户指标下, 而这些事件带来的收入则呈现在 收入指标下。
- 转化类型:您可以使用这个维度 来区分拉新和再营销转化。请注意, SKAN数据还有另一层细分(区分激活与redownloads)。 与SSOT面板中的数据进行对比时, 需注意在面板中这类转化都计为激活。
- 广告收入事件:这类数据可用时会在相应的记录内呈现。
- 分应用取数:所有应用的数据都集中在一个文件中。 您可以使用App ID字段来区分各应用的数据, 或将Data Locker设置为按应用区分数据。
- 成本、点击和展示等归因前产生的数据 需要从Cost ETL报告中获取。
使用场景示例
本节列举了一些通过Data Locker 拉取数据并用于BI的常见使用场景,且每个示例 都配以相关的SQL语句及Excel表格数据, 作为更直观的说明。
针对每个广告系列计算归因到的转化总量
这类数据的查询方式如下:
- 针对各个激活日期, 分广告系列对归因到的独立转化数量进行加总。
- 筛选事件名称为“af_conversion” 且带有特定广告系列ID(af_c_id)的转化。
SELECT install_date, SUM(unique_users) AS total_attributions FROM ssot_unified WHERE event_name = 'af_conversion' AND af_c_id = '4475903638579' -- Change to your specific campaign AND app_id = 'YOUR_APP' GROUP BY install_date;
计算转化量(激活与re-downloads) 以对比面板中 各广告系列带来的激活
这类数据的查询方式如下:
- 分广告系列和激活日期计算新增激活 和重新下载(re-downloads) 的总量。
- 将转化总量与面板中的激活指标 (结合了“install”和“re-downloads”两类转化)进行对比。
SELECT install_date, conversion_type, SUM(unique_users) AS total_conversions FROM ssot_unified WHERE event_name = 'af_conversion' AND af_c_id = '4475903638579' -- Change to your specific campaign AND conversion_type IN ('install', 're-download')
-- The dashboard sums both under the install field AND app_id = 'YOUR_APP' GROUP BY install_date, conversion_type;
分国家/地区计算再营销转化量
这类数据的查询方式如下:
- 分国家/地区计算由再营销广告 带来的转化数量。
- 将转化类型设置为“re-attribution”和“re-engagement”, 筛选出这些转化。
SELECT install_date, conversion_type, geo, SUM(unique_users) AS total_conversions FROM ssot_unified WHERE event_name = 'af_conversion' AND conversion_type IN ('re-attribution', 're-engagement')
-- Both types are relevant for re-targeting AND app_id = 'YOUR_APP' GROUP BY install_date, conversion_type, geo;
按归因方式计算各媒体渠道的激活
这类数据的查询方式如下:
- 按归因方式(SKAN、 AppsFlyer传统归因和自然量)统计激活量, 并将该数据按媒体渠道细分。
- 筛选事件名称为“af_conversion” 且转化类型为“install”的记录。
SELECT install_date, attribution_method, media_source, SUM(unique_users)
AS total_installs FROM ssot_unified WHERE event_name = 'af_conversion' AND conversion_type = 'install' AND app_id = 'YOUR_APP' GROUP BY install_date, attribution_method, media_source;
计算Facebook上各广告组的 激活后7天累计收入
这里我们针对Facebook上投放的广告, 考察其激活后7天内的 累计收入。
SELECT install_date, af_adset, SUM(revenue_usd) AS total_revenue_day_7 FROM ssot_unified WHERE media_source = 'facebook' AND days_post_attribution = 7 -- Choose a specific post-install period (cohort) AND app_id = 'YOUR_APP' GROUP BY install_date, af_adset;
计算激活后指定时间段内的 累计收入
这类数据的查询方式如下:
- 计算激活后多天的 累计收入时,需要拆分激活后 2天和7天的总收入。
- 请注意,分析过去7天的激活时, 激活后7天的数据可能不完整。 详情请见 此处说明。
SELECT install_date, SUM(IF(days_post_attribution = 2, revenue_usd, 0)) AS total_revenue_day2, SUM(IF(days_post_attribution = 7, revenue_usd, 0)) AS total_revenue_day7 FROM ssot_unified WHERE app_id = 'YOUR_APP' GROUP BY install_date;
分媒体渠道计算特定应用内事件(购买) 带来的收入
这类数据的查询方式如下:
- 衡量某个特定事件 (如“af_purchase”)所带来的收入值, 并将该数据按媒体渠道细分。
- 按选定的激活后天数筛选数据, 避免重复统计。
SELECT install_date, media_source, SUM(revenue_usd) AS total_purchase_revenue FROM ssot_unified WHERE event_name = 'af_purchase' -- Change to your specific event AND days_post_attribution = 7 -- Choose a specific post-install period (cohort) AND app_id = 'YOUR_APP' GROUP BY install_date, media_source;
计算激活后2天内的应用内事件转化率
这里我们需要计算 某个特定应用内事件(如“af_complete_tutorial”) 在激活总量中的比率。
SELECT install_date, SUM(IF(days_post_attribution = 2 AND
event_name = 'af_complete_tutorial', unique_users, 0)) / SUM(IF(event_name = 'af_conversion', unique_users, 0))
AS conversion_rate_day2_af_tutorial_conversion FROM ssot_unified WHERE conversion_type = 'install'
-- Choose the conversion types for the sample group you want to measure AND app_id = 'YOUR_APP' GROUP BY install_date;
分广告系列ID计算激活后 7天和2天的ARPU
这类数据的查询方式如下:
- 计算各广告系列在激活后2天和7天的 每用户平均收入(ARPU)。
- 请注意,分析过去7天的激活时, 激活后7天的数据可能不完整。 详情请见 此处说明。
SELECT install_date, af_c_id, SUM(IF(days_post_attribution = 2, revenue_usd, 0)) / SUM(IF(event_name = 'af_conversion', unique_users, 0)) AS ARPU_day2, SUM(IF(days_post_attribution = 7, revenue_usd, 0)) / SUM(IF(event_name = 'af_conversion', unique_users, 0)) AS ARPU_day7 FROM ssot_unified WHERE conversion_type = 'install' -- Choose the conversion types for the sample group you want to measure AND app_id = 'YOUR_APP' GROUP BY install_date, af_c_id;
计算分媒体渠道的 重复数据量
这里我们需要 按媒体渠道和激活日期来计算 重复归因的用户总量, 来考察哪些渠道的用户归因重复率较高。
SELECT install_date, media_source, SUM(skan_duplicates) FROM ssot_unified WHERE app_id = 'YOUR_APP' AND event_name = 'af_conversion' GROUP BY install_date, media_source;
SELECT install_date, media_source, SUM(skan_duplicates) FROM ssot_unified WHERE app_id = 'YOUR_APP' GROUP BY install_date, media_source;
特点与局限性
特点与局限性 | 说明 |
---|---|
成本数据 | Data Locker中的SSOT报告不提供成本数据。如需拉取成本数据,可使用Cost ETL。 |
各天的报告可用性 | 在激活日期结束时SSOT开关必须处于打开状态,否则该日期没有SSOT报告 |
激活后2天的指标
|
|
应用内事件可用性
|
|
收入 | 如果您仅针对某些事件配置了SKAN收入,则SSOT收入指标仅包含这些事件的AF上报收入。 |
SKAN中重新下载(redownloads)的细分数据 | 可用。但SSOT面板将激活和redownloads都计为激活,因此没有单独的redownloads数据。 |
SKAN转化值操作台配置变更
|
更改SKAN转化值操作台的配置可能会导致SSOT数据持续约96小时出现不准确,这是因为这段时间内AppsFlyer仍会收到使用之前的映射构架编码的激活回传。 |
时区 | 不支持AF后台应用配置中的指定时区。 |
自然量数据 |
|
转化(激活、再归因、再互动)后天数 | 仅支持转化后7天 |
代理数据透明化
|
支持。X Ads和Meta ads数据总是对广告主可见 |
广告系列名称变更
|
不支持。如果广告系列名称发生变更,请使用广告系列ID对数据进行分组和筛选。 |
广告平台
|
|
代理访问权限
|
不支持。代理可以在SSOT面板中查看SSOT数据。 |
D7(激活后7天)指标
|
|
预定义事件名称
|
由于事件名称“af_conversion”用于表达转化类型,因此如果相关应用配置了名为“af_conversion”事件,该事件会重命名为“af_conversion_event”。 |
指定货币的数据差异
|
由于SSOT面板和Data Locker中SSOT报告的数据不是同时计算的,因此您在对比面板和报告中以指定货币为单位的收入值时,可能会略有差异。这是因为在不同时间计算收入数据时使用的汇率可能会有浮动。 |
SKAN的D7不完整数据 | 由于SKAN的D7数据是模型推算数据,且首版数据在激活后的7天生成,分析最近7天内的D7数据时需要注意,这里的D7数据是不完整的。对于归因方式为SKAN的记录,D7指标会低于D2指标。 |
D7收入和应用内事件指标的颗粒度有限 | 激活后7天的收入和事件独立用户指标不支持广告组、广告和转化类型级别的颗粒度。由于SKAN一般不提供如此详细的信息,因此我们的数据模型不考虑这些维度。 |
变现收入时效性 |
广告收入数据会有一天的延迟。 举例来说,7月3日上午生成的报告中包含截至7月1日(含)的广告收入数据。 |