什么是汇总键、它们在 Attribution Reporting API 中的使用方式,以及您如何将目标转换为键。
一家广告技术公司在多个营业地点针对各种产品类别投放广告系列,您希望帮助广告客户回答以下问题:
- 针对各个产品类别,我在各个地理区域的每个广告系列分别带来了多少次购买?
- 我在各个地理区域中的每个产品类别分别带来了多少收入?
虽然许多广告技术公司都鼓励广告客户配置各种转化类型,但关注最重要的转化(例如购买)是确保针对这些重要事件获得详细而准确的摘要结果的好方法。
因此,在收集数据之前,您需要思考要回答哪些问题。
维度、键和值
为了回答这些问题,我们来看看维度、键和值。
维度
如下文所述,要了解广告系列是如何创收的,您需要跟踪以下维度:
- 广告系列 ID:特定广告系列的标识符。
- 地理位置 ID:投放广告的地理区域。
- 产品类别:您定义的产品类型。
虽然在投放广告时“广告系列 ID”和“地理位置 ID”维度(广告投放时间)是已知的,但在用户完成转化(转化时间)时,可以通过触发器事件得知产品类别。
对于此示例,您要跟踪的维度如下图所示:
<ph type="x-smartling-placeholder">什么是汇总键(分桶)?
术语“汇总键”和“存储分区”指的是同一对象。汇总键用于配置报告的浏览器 API。“分桶”一词在可汇总报告和摘要报告和汇总服务 API 中使用。
汇总键(简称键)是一段数据,表示所跟踪的维度的值。之后,数据将沿着每个汇总键进行汇总。
例如,假设您跟踪的是“产品类别”、“地理位置 ID”和“广告系列 ID”这三个维度。
如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,并稍后通过购买产品类别 25 中的产品完成转化,那么您可以设置如下图所示的汇总键:
稍后您会看到,汇总键的实际情况并不完全相同,但现在我们重点看一下键中包含的信息。
什么是可汇总值?
为解答您对我们概述的维度的问题,您需要了解以下信息:
- 购买次数(购买次数)。汇总并显示在摘要报告中后,这就是总购买次数(摘要价值)。
- 每次购买的收入(购买价值)。汇总并显示在摘要报告中后,这就是总收入(汇总值)。
所有这些转化(即一次转化的购买次数和一次转化的购买价值)都是可汇总的价值。您可以将可汇总的值视为衡量目标的价值。
问题 | 可汇总的值 = 衡量目标 |
---|---|
有多少购买... | 购买次数 |
需要多少收入... | 购买价值 |
如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,并在稍后通过以 120 美元(假设您的货币为美元)购买了产品类别 25 的产品实现转化,您可以设置如下所示的汇总键和可汇总值:
<ph type="x-smartling-placeholder">系统会按键对多个用户中的可汇总值进行求和,从而在摘要报告中以汇总值的形式生成汇总的数据分析。
系统会对可汇总的值求和,以针对您的衡量目标生成汇总的数据洞见。
请注意,此图省略了解密步骤,仅展示了一个未应用噪声的简化示例。在下一部分,我们将使用噪声来概述此示例。
从键和值到报告
现在,我们来讨论一下可汇总的键和值与报告之间的关系。
可汇总的报告
当用户点击或查看广告并在稍后完成转化时,您可以指示浏览器存储一个 {aggregation key, aggregatable value} 对。
在我们的示例中,当用户点击或查看广告并在稍后完成转化时,您指示浏览器生成两次贡献(每个衡量目标一次)。
稍后,您会发现 {aggregate key, aggregatable value} 可汇总的报告与本示例并不完全相同,但现在我们先重点了解一下该报告中包含的信息。
当您指示浏览器生成两次贡献时,浏览器会生成可汇总报告(前提是它可以将相应转化与之前的查看或点击相匹配)。
可汇总报告包含以下内容:
- 您配置的贡献。
- 有关点击或观看事件和转化事件的元数据:发生转化的网站等。查看可汇总报告中的所有字段。
可汇总报告采用 JSON 格式,其中包括但不限于:可用作最终摘要报告的数据输入的载荷字段。
该载荷包含一个贡献列表,其中每个贡献都是一个 {aggregation key, aggregatable value} 对:
bucket
:汇总键,编码为字节串。value
:该衡量目标的可汇总值,编码为字节串。
示例如下:
{
"data": [
{
"bucket": "111001001",
"value": "11111010000",
}
],
"operation": "histogram"
}
实际上,可汇总报告的编码方式会使分桶和值看起来与上一个示例中不同(即,分桶可能类似于 \u0000\u0000\x80\u0000
)。Bucket 和 value 都是字节串。
摘要报告
可汇总的报告会跨多种浏览器和设备(用户)进行汇总,具体如下:
- 广告技术平台请求获取一组给定键的摘要报告,以及来自许多不同浏览器(用户)的一组给定可汇总报告。
- 可汇总的报告由汇总服务解密。
- 对于每个键,系统会对可汇总报告中的可汇总值求和。
- 汇总值中会添加噪声。
生成包含一组 {aggregate key, summary value} 对的摘要报告。
摘要报告包含一组 JSON 字典样式的键值对。每个键值对均包含:
bucket
:汇总键,编码为字节串。value
:指定衡量目标的十进制摘要值,根据所有可用的可汇总报告计算得出,并添加了噪声。
示例:
[
{"bucket": "111001001", "value": "2558500"},
{"bucket": "111101001", "value": "3256211"},
{...}
]
实际上,摘要报告的编码方式会使分桶和值看上去与示例中所述的不同(即,分桶可能类似于 \u0000\u0000\x80\u0000
)。Bucket 和 value 都是字节串。
聚合键的实际应用
汇总键(存储分区)由广告技术公司定义,通常分为两个步骤:当用户点击或查看广告时,以及当用户完成转化时。
密钥结构
我们将使用术语“键结构”来指定编码到键中的一组维度。
例如,广告系列 ID × 地理 ID × 产品类别就是一个关键结构。
密钥类型
系统会对给定键在多个用户/浏览器间的可汇总值求和。不过我们发现,可汇总的值可以跟踪不同的衡量目标,例如购买价值或购买次数。您希望确保汇总服务会对同一类型的可汇总值求和。
为此,请在每个键中对一段数据进行编码,让您了解摘要值所代表的含义,即此键所指的衡量目标。一种方法是为您的键另外创建一个维度来代表衡量目标类型。
在前面的示例中,此衡量目标类型将具有两个不同的可能值:
- 购买次数是第一类衡量目标。
- 购买价值是第二种衡量目标。
如果您有 n 个衡量目标,那么衡量目标类型将有 n 种不同类型的值。
您可以将键的维度视为一种指标。例如,“每个地理位置的每个广告系列对特定产品的购买次数”。
键大小、维度大小
最大密钥大小以位为单位,即创建完整密钥所需的零和 1 数量(以二进制形式表示)。该 API 允许密钥长度为 128 位。
此大小允许非常精细的键,但更精细的键更有可能产生更多的噪声值。如需详细了解噪声,请参阅了解噪声。
如前所述,维度会编码到汇总键中。每个维度都有特定的基数,即维度可采用的不同值的数量。根据其基数,每个维度都需要用一定数量的位表示。借助 n 位,可以表示 2n 个不同的选项。
例如,“国家/地区”维度的基数可能为 200,因为世界上大约有 200 个国家/地区。对此维度进行编码需要多少位?
7 位将只存储 27 = 128 个不同的选项,这少于必要的 200 个选项。
8 位将存储 28 = 256 个不同的选项,这超过了必要的 200 个选项,因此您可以使用 n=8 位对此维度进行编码。
密钥编码
在浏览器中设置密钥时,它们应采用十六进制编码。在摘要报告中,键将以二进制文件形式显示(并命名为存储分区)。
为完整密钥设置两个关键部分
假设您使用某个键跟踪以下维度:
- 广告系列 ID
- 地理位置 ID
- 产品类别
虽然在投放广告时“广告系列 ID”和“地理位置 ID”维度(广告投放时间)是已知的,但是当用户完成转化(转化时间)时,可以通过触发器事件了解产品类别。
实际上,这意味着您需要分两步设置键:
- 您可以在点击或查看时设置键的一部分(广告系列 ID × 地理位置 ID)。
- 您需要在转化时设置键的第二部分(商品类别)。
键的这些不同部分称为“键部分”。
键的计算方法是取其键部分的 XOR (^
)。
示例:
- 来源端密钥部分 =
0x159
- 触发器端键部分 =
0x400
- 键 =
0x159 ^ 0x400 = 0x559
对齐关键部分
使用小心放置的 64 位填充符/偏移量(十六位 0)将两个 64 位密钥部分扩展为 128 位,对密钥进行 XOR 运算等同于将它们串联起来,更易于推理和验证:
- 来源端密钥部分 =
0xa7e297e7c8c8d0540000000000000000
- 触发器端键部分 =
0x0000000000000000674fbe308a597271
- 键 =
0xa7e297e7c8c8d0540000000000000000 ^ 0x0000000000000000674fbe308a597271 = 0xa7e297e7c8c8d054674fbe308a597271
每次广告点击或观看有多个键
在实际操作中,您可以为每个归因来源事件(广告点击或观看)设置多个键。例如,您可以设置:
- 用于跟踪地理位置 ID × 广告系列 ID 的键。
- 另一个用于跟踪广告素材类型 × 广告系列 ID 的键。
我们来看另一个示例策略 B。
将维度编码为键
请求摘要报告时,您需要请求汇总一组特定汇总键的摘要报告,从而告知汇总服务您要访问哪些指标。
摘要报告包含原始 {key, summary value} 对,不包含有关键的其他信息。这意味着:
- 如果将键设置为用户浏览或点击广告并在稍后完成转化时,您需要根据键所代表的维度值可靠地设置键。
- 在定义要请求获取摘要报告的键时,您需要根据您希望查看汇总数据的维度值,即时生成或访问与用户查看或点击并转化时设置的键相同的键。
使用键结构映射对维度进行编码
若要将维度编码为键,您可以在定义键时(在广告投放前)提前创建和维护键结构映射。
键结构映射表示您的每个维度及其在键中的位置。
在实践中,创建和维护键结构映射意味着您必须实现和维护解码器逻辑。如果您正在寻找不需要的方法,不妨考虑使用基于哈希的方法。
示例如下:
假设您打算同时跟踪特定广告系列、地理区域和产品的购买和购买价值。
产品类别、地理位置 ID 和广告系列 ID 必须是键中的维度。此外,由于您想要跟踪两个不同的衡量目标(购买次数和购买价值),因此您需要在键中添加一个跟踪键类型的维度。这样,您就可以在摘要报告中收到 {key, aggregatable value} 对时,定义可汇总值实际表示的内容。
在这些衡量目标中,键具有以下维度:
- 产品类别
- 衡量目标类型
- 地理位置 ID
- 广告系列 ID
现在,我们来看看每个维度,我们假设您的用例需要跟踪以下内容:
- 29 种不同的产品类别。
- 8 个不同的地理区域:北美洲、中美洲、南美洲、欧洲、非洲、亚洲、加勒比以及大洋洲。
- 16 个不同的广告系列。
以下是对密钥中的每个维度进行编码所需的位数:
- 商品类别:5 位 (25 = 32 > 29)。
- 衡量目标类型:1 位。衡量目标是购买次数或购买价值,这意味着两种不同的可能情况:因此,存储一个位就足够了
地理位置 ID:3 位 (23 = 8)。您还可以定义地理位置 ID 的维度映射,以了解每个二进制值代表的地理区域。“地理位置 ID”维度的维度映射可能如下所示:
键中的二进制值 地理位置 000 北美洲 001 中美洲 010 南美洲 011 欧洲 100 非洲 101 亚洲 110 加勒比人 111 大洋洲 广告系列 ID:4 位 (24 = 16)
遵循此结构的键将为 13 位长 (5 + 1 + 3 + 4)。
在本示例中,这些键的键结构映射将如下所示:
键中的维度顺序由您决定。
为了说明维度如何构成关键结构,我们将使用二进制表示法,这就是为什么广告系列 ID(前位)位于最右侧,而产品类别(最后位)位于最左边。
在每个维度中,最高有效位(带有最大数值的位)是最左边的位。最低有效位(带有最小数值的位)是最右侧的位。
我们来看看如何使用键结构映射来解码键。
我们以 0b1100100111100 作为任意示例键,并假设您知道此键遵循上图中的键结构映射。
根据按键结构映射,此键将解码为 11001 0 011 1100
。
因此,键 0b1100100111100 表示在欧洲发布的广告系列 ID 12 对应的产品类别 25 的购买次数。
使用哈希函数对维度进行编码
您可以使用哈希函数以一致且可靠的方式动态生成键,而不是使用键结构映射。
其工作原理如下:
- 选择一种哈希算法。
- 在广告投放时,生成一个字符串,其中包含您要跟踪的所有维度及其值。如需生成来源端密钥部分,请执行以下操作:
对此字符串进行哈希处理,并考虑添加 64 位零后缀以执行 align
与触发器端键部分搭配使用,使 XOR 更易于推断。
- 来源端密钥部分
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
- 请注意,在键结构映射方法中,
COUNT
编码的内容与measurementGoalType=0
相同。COUNT
会更精简、更明确。
- 来源端密钥部分
- 在转化时,生成包含您要跟踪的所有维度的字符串,并且
价值观。如需生成触发器端键部分,请对此字符串进行哈希处理,并添加 64 位零前缀:
<ph type="x-smartling-placeholder">
- </ph>
- 触发器端键部分
=
<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- 触发器端键部分
=
- 浏览器通过 XOR 对这些关键部分进行 XOR 运算以生成密钥。
- 128 位汇总键
=<64-bit hex source-side key piece hash><64-bit hex source-side key piece hash>
- 128 位汇总键
- 稍后,当您准备好请求获取此键的摘要报告时,可以即时生成该报告:
<ph type="x-smartling-placeholder">
- </ph>
- 根据您感兴趣的维度,像之前一样生成来源端和触发器端键部分。
- 来源端密钥部分
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
- 触发器端键部分
=<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- 触发器端键部分 =
toHex(hash("productCategory=25"))
- 来源端密钥部分
- 与浏览器类似,通过 XOR 技术将这些密钥部分生成,以生成浏览器之前生成的相同密钥。
- 128 位汇总键
=<64-bit source-side key piece hash><64-bit source-side key piece hash>
- 128 位汇总键
- 根据您感兴趣的维度,像之前一样生成来源端和触发器端键部分。
如果您使用此基于哈希的方法,请参考以下实用提示:
- 始终使用相同的维度顺序。这可确保可以可靠地重新生成哈希。(
"COUNT, CampaignID=12, GeoID=7"
不会生成与"COUNT, GeoID=7, CampaignID=12"
相同的哈希值)。实现此目标的一种直接方法是按字母数字顺序对维度进行排序。这就是我们将在示例中执行的操作,只是始终将COUNT
或VALUE
设为维度中的第一项,这是提高可读性的选择,因为COUNT
或VALUE
编码的信息在概念上与所有其他维度略有不同。 - 跟踪您在键中使用的一组维度。您希望避免根据一组您从未使用过的维度生成键。
- 如果使用了合适的哈希函数,则很少会发生哈希冲突,但检查之前使用的哈希(应存储这些哈希以解释汇总服务的结果)可以避免引入与旧键冲突的新键。
请参阅每次点击一次转化或查看示例,了解如何在实践中使用基于哈希的键。
可汇总值的实际应用
广告技术公司会在用户完成转化时设置可汇总的价值。
为保护用户隐私,每位用户的贡献都有上限。在与单个来源(广告点击或观看)关联的所有可汇总值中,任何值都不能高于特定贡献限制。
我们将此限制称为 CONTRIBUTION_BUDGET
。在说明中,此限制称为 L1 预算,但它与 CONTRIBUTION_BUDGET
相同。
如需深入讨论贡献预算,请参阅摘要报告的贡献预算。
示例:每次点击或浏览只记录一次转化
在此示例中,我们假设您希望回答以下问题:
- 在每个地区,哪些商品类别最有价值?
- 在每个地区,哪些广告系列策略最为有效?
我们还假设您的用例需要每周数据分析。
您还需要跟踪以下各项:
- 16 个不同的广告系列。
- 8 个不同的地理区域:北美洲、中美洲、南美洲、欧洲、非洲、亚洲、加勒比以及大洋洲。
- 29 种不同的产品类别。
衡量的指标
虽然许多广告技术公司都鼓励广告客户配置各种转化类型,但关注最重要的转化(例如购买)是确保这些重要转化事件的汇总结果详细而准确的好方法。 事实上,您衡量的指标越多,每个指标的贡献预算就越少,因此每个值可能的噪声也就越大。因此,您需要仔细选择要衡量的指标。
在此示例中,我们将重点关注对每次点击或观看只衡量一次转化(即购买)的广告系列设置。
您仍需衡量购买次数和购买价值,并且可以访问各种重要的汇总统计信息,例如总购买价值和地理位置细分。 这样可以确保噪声控制在合理范围内,并确保能以简单的方式调整捐赠预算。
货币呢?
在不同区域投放广告系列意味着要考虑币种。 您可以执行以下操作:
- 将货币设置为汇总键中的专用维度。
- 或者根据广告系列 ID 推断币种,并将所有币种转换为参考币种。
在本示例中,我们假定您可以根据广告系列 ID 推断出币种。这样,您就可以将任何给定的购买价值从用户的本地货币转换为您选择的参考货币。您也可以在用户购买商品时实时执行该转化。
通过这种方法,所有可汇总的值均采用相同的参考货币,因此可以进行求和以生成总的购买价值,即购买汇总价值。
将目标转化为关键
通过衡量目标和指标,您可以 关键策略我们重点关注其中两种策略:
- 策略 A:一个精细的键结构。
- 策略 B:两个粗略的关键结构。
策略 A:一个深度树(一个精细的键结构)
在策略 A 中,您使用一个精细的键结构,其中包含所有 所需维度:
您的所有密钥都使用此结构。
您将此键结构拆分为两种键类型,以支持两种衡量方式 目标。
- 键类型 0:衡量目标类型 = 0,您决定将其定义为 购买次数。
- 键类型 1:衡量目标类型 = 1,您决定将其定义为 购买价值。
摘要报告如下所示:
您可以将策略 A 视为“一棵深树”。策略:
- 摘要报告中的每个摘要值都会与 您要跟踪的维度
- 您可以将这些摘要值与各个维度一起汇总 因此,这些总览的深度可与您拥有的维度数相等。
如果采用策略 A,您需要回答以下问题:
问题 | 答案 |
---|---|
在每个地区,哪些商品类别最有价值? | 对摘要中的购买次数和价值进行求和
报告。 这样,您就可以了解每个地理位置 ID × 产品的购买次数和价值 类别。 对于每个地区,比较不同地区的购买价值和数量 产品类别。 |
在每个地区,哪些广告系列策略最为有效? | 对摘要中的购买次数和价值进行求和
报告。 这样,您就可以了解每个广告系列 ID × 地理位置 ID 的购买次数和价值。 对于每个地区,比较不同地区的购买价值和数量 广告系列。 |
通过策略 A,您还可以直接回答第三个问题:
“我在各个地理位置的每个广告系列带来的每种产品分别获得了多少收入 区域生成?”
虽然汇总值会比较嘈杂,但您也可以确定何时 每个广告系列之间衡量的价值存在差异并非由噪声造成 。如需了解如何实现这一点,请参阅了解噪声。
策略 B:两个浅树(两个粗略的键结构)
在策略 B 中,您使用了两个粗略的关键结构,每个结构都包含 所需的维度:
您将每个密钥结构拆分为两种密钥类型,以支持两种密钥 衡量目标。
- 衡量目标类型 = 0,您决定将其定义为购买 count。
- 衡量目标类型 = 1,您决定将其定义为购买 值。
最终您将得到四种密钥类型:
- 密钥类型 I-0:密钥结构 I,购买次数。
- 键类型 I-1:键结构 I,购买价值。
- 密钥类型 II-0:密钥结构 II、购买次数。
- 密钥类型 II-1:密钥结构 II,购买价值。
摘要报告如下所示:
您可以将策略 B 视为“两个浅层树”策略:
- 摘要报告中的摘要值会映射到 维度。
- 您可以将这些摘要值与 这表明这些总览没有选项 A 那么深, 因为汇总的维度更少
如果采用策略 B,您需要回答以下问题:
问题 | 答案 |
---|---|
在每个地区,哪些商品类别最有价值? | 直接查看 查看这些摘要报告 |
在每个地区,哪些广告系列策略最为有效? | 直接查看 查看这些摘要报告 |
决策:策略 A
策略 A 比较简单所有数据都遵循相同的键结构, 意味着您只需要维护一个键结构。
不过,对于策略 A,您需要将 摘要报告可以解答您的一些问题。以下每个摘要值 很嘈杂。通过汇总这些数据,您还可以 汇总噪声。
策略 B 则并非如此,它在摘要中显示摘要值 已经为您提供了所需信息。也就是说,策略 B 与策略 A 相比,噪声带来的影响较小。
您应如何确定要使用的策略?对于现有广告客户或 则您可以基于历史数据来确定 策略 A 或策略 B 更适合采用“转化次数”出价策略。但是,对于新的 广告客户或广告系列,您可以决定:
- 使用精细的键收集一个月的数据(策略 A)。 由于您将延长数据收集的时长,因此摘要值 会更高,噪声会相对较低。
- 以合理的精度评估每周转化次数和 购买价值。
在本示例中,我们假设每周购买次数和购买价值 策略 A 足够高,因此会造成您认为的噪声百分比 适合自己的用例。
因为策略 A 更简单,并且能产生 影响决策能力,您决定采用策略 A。
选择哈希算法
您决定采用基于哈希的方法 来生成密钥。为此,您需要选择一种哈希算法 支持这种方法。
假设您选择了 SHA-256。您还可以使用更简单、更简洁 例如 MD5。
在浏览器中:设置键和值
现在,您已经确定了密钥结构和哈希算法, 在用户点击或查看广告时注册键和值,随后 转化。
接下来概述您要在 浏览器:
设置源代码端键部分
当用户点击或查看广告时,在
Attribution-Reporting-Register-Aggregatable-Source
标头。
在此阶段,对于每个键,您只能设置键的一部分,或者
关键部分,这在广告投放时就知道。
我们来生成关键部分:
密钥 ID 的来源端密钥部分... | 包含您要设置的维度值的字符串 | 此字符串的十六进制哈希值,并修剪到前 64 位 (64/4) = 16 个字符1) | 带有附加零的十六进制哈希值以简化 XOR 运算。这是来源端密钥部分。 |
---|---|---|---|
key_purchaseCount |
COUNT, CampaignID=12, GeoID=7 |
0x3cf867903fbb73ec | 0x3cf867903fbb73ec0000000000000000 |
key_purchaseValue |
VALUE, CampaignID=12, GeoID=7 |
0x245265f432f16e73 | 0x245265f432f16e730000000000000000 |
现在,我们来设置关键部分:
// Upon receiving the request from the publisher site
res.set(
"Attribution-Reporting-Register-Aggregatable-Source",
JSON.stringify([
{
"id": "key_purchaseCount",
"key_piece": "0x3cf867903fbb73ec0000000000000000"
},
{
"id": "key_purchaseValue",
"key_piece": "0x245265f432f16e730000000000000000"
}
])
);
请注意,最终报告中不会显示密钥 ID。它们仅用于 在浏览器中设置键时,确保来源端和触发器端的键 部分可以相互映射并组合成一个完整的键。
可选:事件级报告
如果您需要同时使用事件级报告和可汇总报告,请确保对于给定来源,事件级数据(来源事件 ID 和触发器数据)和 汇总键是否匹配。
在某些情况下,例如,如果您打算使用事件级报告来运行模型,从而分析哪些类型的广告往往能带来最多购买,就可以同时使用这两种报告。
用户完成转化
当用户完成转化时,系统通常会向广告技术平台服务器发送一个像素请求。 收到此请求后:
- 设置转化端(触发器端)键部分,以完成相应键。
您需要通过
Attribution-Reporting-Register-Aggregatable-Trigger-Data
。 - 通过标头设置该转化的可汇总值
Attribution-Reporting-Register-Aggregatable-Values
。
设置触发器端键部分,完成键
我们来生成关键部分:
密钥 ID 的触发器端键部分... | 包含您要设置的维度值的字符串 | 此字符串的十六进制哈希值,并修剪到前 64 位 (64/4) = 16 个字符1) | 带有附加零的十六进制哈希,以简化异或运算。 这是来源端密钥部分。 |
---|---|---|---|
key_purchaseCount |
ProductCategory=25 |
0x1c7ce88c4904bbe2 | 0x0000000000000000f9e491fe37e55a0c |
key_purchaseValue |
(相同) | (相同) | (相同) |
现在,我们来设置关键部分:
// Upon receiving the pixel request from the advertiser site
res.set(
"Attribution-Reporting-Register-Aggregatable-Trigger-Data",
JSON.stringify([
// Each dictionary independently adds pieces to multiple source keys
{
"key_piece": "0x0000000000000000f9e491fe37e55a0c",
"source_keys": ["key_purchaseCount", "key_purchaseValue"]
},
])
);
注意如何通过列出多个键将相同的键部分添加到多个键中
source_keys
中的密钥 ID - 密钥部分将添加到这两个密钥中。
设置可汇总的值
在设置可汇总值之前,您需要对这些值进行扩展, 来降低噪声。
假设用户针对商品类型 25 购买了一次,价格为 52 美元。
您不能直接将这些属性设置为可汇总的值:
key_purchaseCount
:1 次转化key_purchaseValue
:52 美元
相反,在注册这些可汇总值之前,您需要 扩缩 从而尽可能减少噪声。
您有两个目标需要花费贡献预算,因此可能需要 因此决定将资助预算一分为二
在这种情况下,每个目标最多可分配 CONTRIBUTION_BUDGET/2
(=65,536/2=32,768)。
假设单个用户的最高购买价值(基于购买) 为 1500 美元可能会有离群值, 例如,很少有用户花费超过该金额,但您可能会决定忽略 这些离群值。
购买价值的调整系数应为:
((CONTRIBUTION_BUDGET
/2) / 1500)= 32768/1500 = 21.8 ~ 22
您的购买次数的调整系数为 32,768/1 = 32,768,因为 决定对每次广告点击或观看(来源事件)最多跟踪一次购买。
您现在可以设置以下值:
key_purchaseCount
:1 × 32768 = 32768key_purchaseValue
:52 × 22 = 1144
实际上,您可以使用专用标头按如下方式进行设置:
Attribution-Reporting-Register-Aggregatable-Values
:
// Instruct the browser to schedule-send a report
res.set(
"Attribution-Reporting-Register-Aggregatable-Values",
JSON.stringify({
"key_purchaseCount": 32768,
"key_purchaseValue": 1144,
})
);
系统会生成可汇总报告
浏览器将转化与之前的查看或点击进行匹配,并生成 可汇总报告,该报告旁边包含加密的载荷 元数据。
以下示例展示了可在 可汇总报告(如果它以明文形式阅读):
[
{
key: 0x3cf867903fbb73ecf9e491fe37e55a0c, // = source-side key piece XOR conversion-side key piece for the key key_purchaseCount
value: 32768 // the scaled value for 1 conversion, in the context of [CONTRIBUTION_BUDGET/2]
},
{
key: 0x245265f432f16e73f9e491fe37e55a0c, // source-side key piece XOR conversion-side key piece for the key key_purchaseValue
value: 1144 // the scaled value for $52, in the context of [CONTRIBUTION_BUDGET/2]
},
]
在这里,您可以看到一个可汇总的单个内容中 报告。
请求摘要报告
- 批量可汇总报告。请遵循 批处理。
- 生成要查看其数据的密钥。例如,要查看
COUNT
(总购买次数)和VALUE
(总购买价值)的数据 对于广告系列 ID 12 × 地理位置 ID 7 × 产品类别 25: <ph type="x-smartling-placeholder">- </ph>
- 生成来源端密钥部分,就像您在设置它时执行的操作一样 在浏览器中。
- 生成触发器端键部分,就像您在浏览器中设置它时一样。
您希望请求的指标1 | 来源端密钥部分 | 触发器端键部分 | 用于向汇总服务请求的键2 |
---|---|---|---|
总购买次数 (COUNT ) |
0x3cf867903fbb73ec 0000000000000000 |
0x00000000000000 00f9e491fe37e55a0c |
0x3cf867903fbb73 ecf9e491fe37e55a0c |
总购买价值(VALUE ) |
0x245265f432f16e73 0000000000000000 |
0x0000000000000000 f9e491fe37e55a0c |
0x245265f432f16e73 f9e491fe37e55a0c |
- 向汇总服务请求获取这些键的摘要数据。
处理摘要报告
最终,您会收到一份摘要报告,其内容可能如下所示:
[
{"bucket": "00111100111110000110011110010000001111111011101101110011111011001111100111100100100100011111111000110111111001010101101000001100",
"value": "2558500"},
{"bucket": "00100100010100100110010111110100001100101111000101101110011100111111100111100100100100011111111000110111111001010101101000001100",
"value": "687060"},
…
]
第一个存储分区是二进制文件中的 COUNT
键。第二个存储分区是 VALUE
键
。
请注意,虽然键是异构的(COUNT
与 VALUE
),但它们包含在
。
缩小值
- 2,558,500 是指此密钥的购买次数,按 之前计算的缩放比例广告的缩放比例 购买次数为 32,768 次将 2,558,500 除以该目标的贡献数 预算:2,558,500/32,768 = 156.15 次购买。
- 687,060 → 687,060/22 = 总购买价值为 $31,230。
因此,摘要报告可为您提供以下数据分析:
- 在报告期内,广告系列 12 约有 156 次购买(± 噪声) 为商品类别 25 指定的值
- 在报告期内,广告系列 12 带来了 31,230 美元的购买(± 噪声) 为商品类别 25 指定的值