什么是汇总键、它们在 Attribution Reporting API 中的使用方式,以及您如何将目标转换为键。
一家广告技术公司在多个营业地点针对各种产品类别投放广告系列,您希望帮助广告客户回答以下问题:
- 针对各个产品类别,我在各个地理区域的每个广告系列分别带来了多少次购买?
- 我在各个地理区域中的每个产品类别分别带来了多少收入?
虽然许多广告技术公司都鼓励广告客户配置各种转化类型,但专注于最重要的转化(例如购买)有助于确保针对这些重要事件获得详细而准确的摘要结果。
因此,在收集数据之前,您需要思考要回答哪些问题。
维度、键和值
为了回答这些问题,我们来看看维度、键和值。
尺寸
如下文所述,要了解广告系列是如何创收的,您需要跟踪以下维度:
- 广告系列 ID:特定广告系列的标识符。
- 地理位置 ID:投放广告的地理区域。
- 产品类别:您定义的产品类型。
虽然在投放广告时“广告系列 ID”和“地理位置 ID”维度(广告投放时间)是已知的,但在用户完成转化(转化时间)时,可以通过触发器事件得知产品类别。
对于此示例,您要跟踪的维度如下图所示:
![广告系列 ID、地理位置 ID 和产品类别。](https://developers.google.cn/static/privacy-sandbox/assets/images/campaign-id-geography-id-223ed5327b057.png?authuser=0&hl=sr)
什么是汇总键(分桶)?
术语“汇总键”和“存储分区”指的是同一对象。汇总键用于配置报告的浏览器 API。“分桶”一词在可汇总报告和摘要报告和汇总服务 API 中使用。
汇总键(简称键)是一段数据,表示所跟踪的维度的值。之后,数据将沿着每个汇总键进行汇总。
例如,假设您跟踪的是“产品类别”、“地理位置 ID”和“广告系列 ID”这三个维度。
如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,并稍后通过购买产品类别 25 中的产品完成转化,那么您可以设置如下图所示的汇总键:
![转化的汇总键。](https://developers.google.cn/static/privacy-sandbox/assets/images/aggregation-key-a-conver-0cd37e4079fee.png?authuser=0&hl=sr)
稍后您会看到,汇总键的实际情况并不完全相同,但现在我们重点看一下键中包含的信息。
什么是可汇总值?
为解答您对我们概述的维度的问题,您需要了解以下信息:
- 购买次数(购买次数)。汇总并显示在摘要报告中后,这就是总购买次数(摘要价值)。
- 每次购买的收入(购买价值)。汇总并显示在摘要报告中后,这就是总收入(汇总值)。
所有这些转化(即一次转化的购买次数和一次转化的购买价值)都是可汇总的价值。您可以将可汇总的值视为衡量目标的价值。
问题 | 可汇总的值 = 衡量目标 |
---|---|
有多少购买... | 购买次数 |
需要多少收入... | 购买价值 |
如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,并在稍后通过以 120 美元(假设您的货币为美元)购买了产品类别 25 的产品实现转化,您可以设置如下所示的汇总键和可汇总值:
![汇总键和值。](https://developers.google.cn/static/privacy-sandbox/assets/images/aggregation-keys-values-912b4f69661bd.png?authuser=0&hl=sr)
系统会按键对多个用户中的可汇总值进行求和,从而在摘要报告中以汇总值的形式生成汇总的数据分析。
![正在生成汇总的数据分析。](https://developers.google.cn/static/privacy-sandbox/assets/images/generating-aggregated-ins-e7ef89ea0a238.png?authuser=0&hl=sr)
系统会对可汇总的值求和,以针对您的衡量目标生成汇总的数据洞见。
请注意,此图省略了解密步骤,仅展示了一个未应用噪声的简化示例。在下一部分,我们将使用噪声来概述此示例。
从键和值到报告
现在,我们来讨论一下可汇总的键和值与报告之间的关系。
可汇总的报告
当用户点击或查看广告并在稍后完成转化时,您可以指示浏览器存储一个 {aggregation key, aggregatable value} 对。
在我们的示例中,当用户点击或查看广告并在稍后完成转化时,您指示浏览器生成两次贡献(每个衡量目标一次)。
![正在生成两项贡献内容。](https://developers.google.cn/static/privacy-sandbox/assets/images/generating-contributions-fa8bc97295bc7.png?authuser=0&hl=sr)
稍后,您会发现 {Aggregate key, aggregatable value} 可汇总报告与本报告并不完全相同,但现在我们重点讨论该报告中包含的信息。
当您指示浏览器生成两次贡献时,浏览器会生成可汇总报告(前提是它可以将相应转化与之前的查看或点击相匹配)。
可汇总报告包含以下内容:
- 您配置的贡献。
- 有关点击或观看事件和转化事件的元数据:发生转化的网站等。查看可汇总报告中的所有字段。
![生成的可汇总报告。](https://developers.google.cn/static/privacy-sandbox/assets/images/the-resulting-aggregatabl-3df86364f7725.png?authuser=0&hl=sr)
可汇总报告采用 JSON 格式,其中包括但不限于:可用作最终摘要报告的数据输入的载荷字段。
该载荷包含一个贡献列表,其中每个贡献都是一个 {aggregation key, aggregatable value} 对:
bucket
:汇总键,编码为字节串。value
:该衡量目标的可汇总值,编码为字节串。
示例如下:
{
"data": [
{
"bucket": "111001001",
"value": "11111010000",
}
],
"operation": "histogram"
}
实际上,可汇总报告的编码方式会使存储分区和值看起来与上一个示例中不同(也就是说,存储分区可能看起来像 \u0000\u0000\x80\u0000
)。Bucket 和 value 都是字节串。
摘要报告
可汇总的报告会跨多种浏览器和设备(用户)进行汇总,具体如下:
- 广告技术平台请求获取一组给定键的摘要报告,以及来自许多不同浏览器(用户)的一组给定可汇总报告。
- 可汇总的报告由汇总服务解密。
- 对于每个键,系统会对可汇总报告中的可汇总值求和。
- 汇总值中会添加噪声。
![摘要报告中的可汇总报告以及汇总、解密和噪声结果。](https://developers.google.cn/static/privacy-sandbox/assets/images/aggregatable-reports-plus-9bd26966f76f7.png?authuser=0&hl=sr)
生成包含一组 {aggregate key, summary value} 对的摘要报告。
摘要报告包含一组 JSON 字典样式的键值对。每个键值对均包含:
bucket
:汇总键,编码为字节串。value
:指定衡量目标的十进制摘要值,根据所有可用的可汇总报告计算得出,并添加了噪声。
例如:
[
{"bucket": "111001001", "value": "2558500"},
{"bucket": "111101001", "value": "3256211"},
{...}
]
实际上,摘要报告的编码方式会使存储分区和值看上去与示例中所述的不同(即存储分区可能看起来像 \u0000\u0000\x80\u0000
)。Bucket 和 value 都是字节串。
聚合键的实际应用
汇总键(存储分区)由广告技术公司定义,通常分为两个步骤:当用户点击或查看广告时,以及当用户完成转化时。
密钥结构
我们将使用术语“键结构”来指定编码到键中的一组维度。
例如,广告系列 ID × 地理 ID × 产品类别就是一个关键结构。
![键结构。](https://developers.google.cn/static/privacy-sandbox/assets/images/key-structure-17b99e9ad0974.png?authuser=0&hl=sr)
密钥类型
系统会对给定键在多个用户/浏览器间的可汇总值求和。不过我们发现,可汇总的值可以跟踪不同的衡量目标,例如购买价值或购买次数。您希望确保汇总服务会对同一类型的可汇总值求和。
为此,请在每个键中对一段数据进行编码,让您了解摘要值所代表的含义,即此键所指的衡量目标。一种方法是为您的键另外创建一个维度来代表衡量目标类型。
在前面的示例中,此衡量目标类型将具有两个不同的可能值:
- 购买次数是第一类衡量目标。
- 购买价值是第二种衡量目标。
![衡量目标和衡量目标类型。](https://developers.google.cn/static/privacy-sandbox/assets/images/measurement-goals-measur-6f6f8b6468ec3.png?authuser=0&hl=sr)
如果您有 n 个衡量目标,那么衡量目标类型将有 n 种不同类型的值。nn
您可以将键的维度视为一种指标。例如,“每个地理位置的每个广告系列对特定产品的购买次数”。
键大小、维度大小
最大密钥大小以位为单位,即创建完整密钥所需的零和 1 数量(以二进制形式表示)。该 API 允许密钥长度为 128 位。
此大小允许非常精细的键,但更精细的键更有可能产生更多的噪声值。如需详细了解噪声,请参阅了解噪声。
如前所述,维度会编码到汇总键中。每个维度都有特定的基数,即维度可采用的不同值的数量。根据其基数,每个维度都需要用一定数量的位表示。借助 n 位,可以表示 2nn 个不同的选项。
例如,“国家/地区”维度的基数可能为 200,因为世界上大约有 200 个国家/地区。对此维度进行编码需要多少位?
7 位将只存储 27 = 128 个不同的选项,这少于必要的 200 个选项。
8 位将存储 28 = 256 个不同的选项,这超过了必要的 200 个选项,因此您可以使用 n=8 位对此维度进行编码。
密钥编码
在浏览器中设置密钥时,它们应采用十六进制编码。在摘要报告中,键将以二进制文件形式显示(并命名为存储分区)。
为完整密钥设置两个关键部分
假设您使用某个键跟踪以下维度:
- 广告系列 ID
- 地理位置 ID
- 产品类别
虽然在投放广告时“广告系列 ID”和“地理位置 ID”维度(广告投放时间)是已知的,但是当用户完成转化(转化时间)时,可以通过触发器事件了解产品类别。
实际上,这意味着您需要分两步设置键:
- 您可以在点击或查看时设置键的一部分(广告系列 ID × 地理位置 ID)。
- 您需要在转化时设置键的第二部分(商品类别)。
键的这些不同部分称为“键部分”。
键的计算方法是取其键部分的 XOR (^
)。
![对关键部分进行 XOR 运算。](https://developers.google.cn/static/privacy-sandbox/assets/images/xoring-key-pieces-6c7b39f58a41f.png?authuser=0&hl=sr)
例如:
- 来源端密钥部分 =
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 位。衡量目标是购买次数或购买价值,这意味着两种不同的可能情况;因此,1 位就足够了。
地理位置 ID:3 位 (23 = 8)。您还可以定义地理位置 ID 的维度映射,以了解每个二进制值代表的地理区域。“地理位置 ID”维度的维度映射可能如下所示:
键中的二进制值 地理位置 000 北美地区 001 中美洲 010 南美洲 011 欧洲 100 非洲 101 亚洲 110 加勒比人 111 大洋洲 广告系列 ID:4 位 (24 = 16)
遵循此结构的键将为 13 位长 (5 + 1 + 3 + 4)。
在本示例中,这些键的键结构映射将如下所示:
![键结构映射。](https://developers.google.cn/static/privacy-sandbox/assets/images/key-structure-map-4664a0905c7de.png?authuser=0&hl=sr)
键中的维度顺序由您决定。
为了说明各个维度如何构成关键结构,我们将使用二进制表示法,这就是为什么广告系列 ID(前位)位于最右侧,而产品类别(最后位)位于最左边。
在每个维度中,最高有效位(带有最大数值的位)是最左边的位。最低有效位(带有最小数值的位)是最右侧的位。
我们来看看如何使用键结构映射来解码键。
我们以 0b1100100111100 作为任意示例键,并假设您知道此键遵循上图中的键结构映射。
根据按键结构映射,此键将解码为 11001 0 011 1100
。
因此,键 0b1100100111100 表示在欧洲发布的广告系列 ID 12 对应的产品类别 25 的购买次数。
使用哈希函数对维度进行编码
您可以使用哈希函数以一致且可靠的方式动态生成键,而不是使用键结构映射。
其工作原理如下:
- 选择一种哈希算法。
- 在广告投放时,生成一个字符串,其中包含您要跟踪的所有维度及其值。如需生成来源端键部分,请对此字符串进行哈希处理,并考虑添加 64 位零后缀,以将其与触发器端键部分对齐,从而使 XOR 更易于推断。
- 来源端密钥部分
=<64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
- 请注意,在键结构映射方法中,
COUNT
编码的内容与measurementGoalType=0
相同。COUNT
会更精简、更明确。
- 来源端密钥部分
- 在转化时,生成一个字符串,其中包含您要跟踪的所有维度及其值。如需生成触发器端键部分,请对此字符串进行哈希处理,并添加 64 位零前缀:
- 触发器端键部分
=
<64-bit 00000000…><64-bit hex hash("productCategory=25")>
- 触发器端键部分
=
- 浏览器对这些密钥部分进行 XOR 运算以生成密钥。
- 128 位汇总键
=<64-bit hex source-side key piece hash><64-bit hex source-side key piece hash>
- 128 位汇总键
- 稍后,当您准备好请求获取此键的摘要报告时,可以即时生成该报告:
- 根据您感兴趣的维度,像之前一样生成来源端和触发器端键部分。
- 来源端密钥部分
=<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 中,您使用一种精细的键结构,其中包括您所需的所有维度:
![一个精细的键结构](https://developers.google.cn/static/privacy-sandbox/assets/images/one-granular-key-structur-85e0f0ef579b3.png?authuser=0&hl=sr)
您的所有密钥都使用此结构。
您需要将此键结构拆分为两种键类型,以支持两个衡量目标。
- 键类型 0:衡量目标类型 = 0,您决定将其定义为购买次数。
- 键类型 1:衡量目标类型 = 1,您决定将其定义为购买价值。
摘要报告如下所示:
![策略 摘要报告。](https://developers.google.cn/static/privacy-sandbox/assets/images/strategy-summary-report-c13d51d0ef5b.png?authuser=0&hl=sr)
您可以将策略 A 视为“一层有深度的树”策略:
- 摘要报告中的每个摘要值都与您所跟踪的所有维度相关联。
- 您可以将这些摘要值与各个维度一起汇总,因此这些汇总值的深度可与您拥有的维度数量相等。
如果采用策略 A,您需要回答以下问题:
问题 | 回答 |
---|---|
在每个地区,哪些商品类别最有价值? | 对所有广告系列的摘要报告中的购买次数和价值求和。 这样,您就可以了解每个地理位置 ID × 商品类别的购买次数和价值。 对于每个地区,比较不同商品类别的购买价值和数量。 |
在每个地区,哪些广告系列策略最为有效? | 汇总所有商品类别的摘要报告中的购买次数和价值。 这样,您就可以了解每个广告系列 ID × 地理位置 ID 的购买次数和价值。 对于每个地区,比较不同广告系列的购买价值和数量。 |
通过策略 A,您还可以直接回答第三个问题:
“我在各个地理区域的每个广告系列为每种产品带来了多少收入?”
虽然摘要值会很嘈杂,但您可以确定在每个广告系列之间测量的值差异不是仅仅由于噪声而导致的。如需了解如何实现这一点,请参阅了解噪声。
策略 B:两个浅树(两个粗略的键结构)
在策略 B 中,您使用两个粗略的关键结构,每个结构都包含您所需的一部分维度:
![密钥结构 1 和密钥结构 2。](https://developers.google.cn/static/privacy-sandbox/assets/images/key-structure-1-key-stru-f5313e8766cd6.png?authuser=0&hl=sr)
您将每个关键结构拆分为两种关键类型,以支持两个衡量目标。
- 衡量目标类型 = 0,您决定将其定义为购买次数。
- 衡量目标类型 = 1,您决定将其定义为购买价值。
最终您将得到四种密钥类型:
- 密钥类型 I-0:密钥结构 I,购买次数。
- 键类型 I-1:键结构 I,购买价值。
- 密钥类型 II-0:密钥结构 II、购买次数。
- 密钥类型 II-1:密钥结构 II,购买价值。
摘要报告如下所示:
![摘要报告策略 B.](https://developers.google.cn/static/privacy-sandbox/assets/images/summary-report-strategy-b-a402cebbf58ca.png?authuser=0&hl=sr)
您可以将策略 B 视为“两个浅层树”策略:
- 摘要报告中的摘要值会映射到两小组维度之一。
- 您可以将这些摘要值与这些集合中的每个维度一起汇总,这意味着这些汇总不像选项 A 中那样深度,因为汇总的维度更少。
如果采用策略 B,您需要回答以下问题:
问题 | 回答 |
---|---|
在每个地区,哪些商品类别最有价值? | 直接访问摘要报告中的摘要购买计数和价值。 |
在每个地区,哪些广告系列策略最为有效? | 直接访问摘要报告中的摘要购买计数和价值。 |
决策:策略 A
策略 A 更简单;所有数据都遵循相同的键结构,这也意味着您只有一个键结构需要维护。
但是,对于策略 A,您需要对在摘要报告中收到的摘要值求和,以回答您的一些问题。这些摘要值都很嘈杂。通过汇总这些数据,还可以汇总噪声。
策略 B 则不同,其摘要报告中公开的摘要值已经为您提供了所需的信息。也就是说,与策略 A 相比,策略 B 受到噪声的影响较小。
您应如何确定要使用的策略?对于现有广告客户或广告系列,您可以依靠历史数据来确定转化量是更适合策略 A 还是策略 B。不过,对于新广告客户或广告系列,您可以决定:
- 使用精细键收集一个月的数据(策略 A)。 由于您将延长数据收集的时长,摘要值将会较高,并且噪声会相对较低。
- 以合理的精度评估每周转化次数和购买价值。
在此示例中,我们假设每周购买次数和购买价值足够高,以致于策略 A 会产生您认为适用于您的用例的噪声百分比。
由于策略 A 更简单,并且产生的噪声影响不会影响您的决策能力,因此您决定采用策略 A。
选择哈希算法
您决定采用基于哈希的方法来生成密钥。为此,您需要选择一种哈希算法来支持该方法。
假设您选择了 SHA-256。您也可以使用更简单、安全性较低的算法,例如 MD5。
在浏览器中:设置键和值
现在,您已经确定了键结构和哈希算法,接下来可以在用户点击或查看广告并随后完成转化时注册键和值。
接下来概述您要设置为在浏览器中注册键和值的标头:
![为视图或点击注册键和值。](https://developers.google.cn/static/privacy-sandbox/assets/images/register-keys-values-a-59763f86a1f19.png?authuser=0&hl=sr)
![为转化注册键和值。](https://developers.google.cn/static/privacy-sandbox/assets/images/register-keys-values-a-155f081dc7bca.png?authuser=0&hl=sr)
设置源代码端键部分
当用户点击或查看广告时,请在 Attribution-Reporting-Register-Aggregatable-Source
标头中设置汇总键。在此阶段,对于每个键,您只能设置广告投放时已知的部分键,即键部分。
我们来生成关键部分:
密钥 ID 的来源端密钥部分... | 包含您要设置的维度值的字符串 | 此字符串的十六进制哈希值,并修剪到前 64 位(64/4 = 16 个字符1) | 带有附加零的十六进制哈希,以简化 异或运算。这是来源端密钥部分。 |
---|---|---|---|
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) | 带有附加零的十六进制哈希,以simplify异或运算。这是来源端键部分。 |
---|---|---|---|
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)。
假设单个用户的最高购买价值为 1,500 美元(根据网站所有用户的交易记录)。可能存在离群值,例如,只有很少的用户花费超过该总和,但您可能会决定忽略这些离群值。
购买价值的调整系数应为:
((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]
},
]
在这里,您可以在一份可汇总报告中看到两项不同的贡献。
请求摘要报告
- 批量可汇总报告。请按照批处理中提供的建议进行操作。
- 生成要查看其数据的密钥。例如,如需查看广告系列 ID 12 × 地理位置 ID 7 × 产品类别 25 的
COUNT
(购买总次数)和VALUE
(总购买价值)的汇总数据,请执行下列操作:
您希望请求的指标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 表示此密钥的购买次数,按您之前计算的缩放系数递增。购买次数的缩放比例为 32768。将 2,558,500 除以目标的捐赠预算:2,558,500/32,768 = 156.15 次购买。
- 687,060 → 687,060/22 = 总购买价值为 $31,230。
因此,摘要报告可为您提供以下数据分析:
- 在报告期内,在欧洲投放的广告系列 12 为商品类别 25 促成了大约 156 次购买(± 噪声)。
- 在报告期内,在欧洲投放的广告系列 12 为商品类别 25 带来了 $31,230 的购买(± 噪声)。