了解归因报告的汇总键

汇总键是什么、如何在 Attribution Reporting API 中使用汇总键,以及如何将目标转换为键。

作为一家广告技术公司,您在多个地理位置投放面向不同产品类别的广告系列,希望帮助广告客户解答以下问题:

  1. 我的每个广告系列在每个地理区域为每个商品类别带来了多少次购买
  2. 我在每个地理区域投放的每个广告系列针对每个商品类别分别带来了多少收入

虽然许多广告技术公司都鼓励广告客户配置各种转化类型,但专注于最重要的转化(例如购买)是确保摘要结果针对这些重要事件提供详细准确信息的好方法。

为此,您需要在收集数据之前考虑要回答哪些问题。

维度、键和值

为了回答这些问题,我们来看看维度、键和值。

维度

如上所述,若要了解广告系列如何创收,您需要跟踪以下维度:

  • 广告系列 ID:特定广告系列的标识符。
  • 地理位置 ID:广告投放的地理区域。
  • 商品类别:您定义的商品类型。

虽然在广告投放时(广告投放时间)可以知道“广告系列 ID”和“地理位置 ID”维度,但在用户完成转化时(转化时间)才能从触发器事件中知道“商品类别”。

在此示例中,您要跟踪的维度如下图所示:

广告系列 ID、地理位置 ID 和商品类别。
要跟踪的维度

什么是汇总键(存储分区)?

字词汇总键和存储分区是指同一概念。汇总键用于配置报告的浏览器 API。存储分区一词在可汇总报告、摘要报告以及汇总服务 API 中均有使用。

汇总键(简称“键”)是一段数据,表示要跟踪的维度的值。系统稍后会按每个汇总键汇总数据。

例如,假设您要跟踪“产品类别”“地理位置 ID”和“广告系列 ID”维度。

如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,之后购买了产品类别 25 中的商品并完成转化,您可以设置一个与下图中类似的汇总键:

转化的汇总键。

您稍后会看到,在实践中汇总键并不完全像这样,但现在,我们先来重点了解键中包含的信息。

什么是可汇总的值?

为了回答您对我们所述维度的疑问,您需要了解以下内容:

  • 购买次数(purchase count)。汇总后并在摘要报告中显示时,这将是购买次数总计(摘要值)。
  • 每笔购买交易的收入(购买交易金额)。汇总后并在摘要报告中显示时,这将是总收入(摘要值)。

这两项(一次转化的购买次数和一次转化的购买价值)都是可汇总的值。您可以将可聚合的值视为效果衡量目标的值。

问题 可汇总的值 = 效果衡量目标
有多少笔购买交易 购买次数
收入 购买价值

如果位于地理位置 ID 7 的用户看到广告系列 ID 12 的广告,之后以 120 美元的价格购买了商品类别 25 的商品(假设您的币种为美元),您可以设置如下汇总键和可汇总值:

汇总键和值。
汇总键和可汇总的值。请注意,可汇总的值为蓝色背景的粗体值。

系统会对许多用户的每个键的汇总值进行求和,以生成汇总数据分析,并以摘要报告中的摘要值的形式显示。

生成汇总数据分析。

系统会对可汇总的值进行求和,以便针对您的衡量目标生成汇总数据洞见。

请注意,此图省略了解密,并展示了未应用噪声的简化示例。在下一部分中,我们将通过噪声对此示例进行概述。

从键值对到报告

现在,我们来讨论可汇总键和值与报告之间的关系。

可汇总的报告

当用户点击或查看广告后发生转化时,您可以指示浏览器存储 {汇总键、可汇总值} 对。

在我们的示例中,如果用户点击或查看广告后完成了转化,您可以指示浏览器生成两个贡献(每个衡量目标一个)。

生成两个贡献。

您稍后会看到,{aggregation key, aggregatable value} 可汇总报告并不完全像这样,但现在,我们先来重点了解报告中包含的信息。

当您指示浏览器生成两个贡献时,浏览器会生成可汇总的报告(如果它可以将转化与之前的浏览或点击匹配)。

可汇总报告包含:

生成的可汇总报告。

可汇总的报告采用 JSON 格式,其中包括一个载荷字段,该字段将用作最终摘要报告的数据输入。

该载荷包含贡献列表,每个贡献都是一个 {aggregation key, aggregatable value} 对:

  • bucket:汇总键,编码为字节字符串。
  • value:相应衡量目标的可汇总值,编码为字节字符串。

示例如下:

{
  "data": [
    {
      "bucket": "111001001",
      "value": "11111010000",
    }
  ],
  "operation": "histogram"
}

在实践中,可汇总的报告的编码方式会使存储分区和值看起来与上例不同(即存储分区可能看起来像 \u0000\u0000\x80\u0000)。存储分区都是字节字符串。

摘要报告

可汇总报告会跨多个浏览器和设备(用户)进行汇总,如下所示:

  • 广告技术平台请求针对一组给定键生成摘要报告,以及一组来自许多不同浏览器(用户)的可汇总报告。
  • 可汇总报告由汇总服务解密。
  • 对于每个键,系统会对可汇总报告中的可汇总值进行求和。
  • 系统会向摘要值添加噪声。
可汇总报告以及汇总、解密和噪声结果会生成摘要报告。

结果是包含一组 {aggregation key, summary value} 对的摘要报告。

摘要报告包含一组 JSON 字典式键值对。每个键值对包含:

  • bucket:汇总键,编码为字节字符串。
  • value:给定衡量目标的摘要值(以小数表示),是从所有可聚合的报告中汇总得出的,并且噪声水平较高。

示例:

[
  {"bucket": "111001001", "value": "2558500"},
  {"bucket": "111101001", "value": "3256211"},
  {...}
]

在实践中,摘要报告的编码方式会使存储分区和值看起来与示例中所述的不同(即,存储分区可能看起来像 \u0000\u0000\x80\u0000)。存储分区均为字节字符串。

汇总键在实践中的运用

汇总键(存储分区)由广告技术公司定义,通常分为两步:在用户点击或查看广告时,以及在用户发生转化时。

键结构

我们将使用术语“键结构”来指代编码到键中的一组维度。

例如,“广告系列 ID × 地理位置 ID × 产品类别”就是一个关键结构。

键结构。

密钥类型

系统会对多个用户/浏览器中的给定键的汇总值进行求和。但我们发现,可汇总的值可以跟踪不同的衡量目标,例如购买价值或购买次数。您希望确保汇总服务会对同一类型的可汇总值进行求和。

为此,请在每个键中编码一段数据,以便您了解摘要值代表什么(即此键所引用的衡量目标)。为此,您可以为键创建一个额外的维度,用于表示衡量目标类型。

以前面的示例为例,此衡量目标类型有两个不同的可能值:

  • 购买次数是第一种衡量目标。
  • 购买价值是第二种衡量目标。
衡量目标和衡量目标类型。

如果您有 n 个衡量目标,则衡量目标类型将有 n 种不同类型的值。

您可以将键的维度视为指标。例如,“每个地理位置、每个广告系列的特定商品购买次数”。

键大小、维度大小

密钥大小上限以位数定义,即用于创建完整密钥的二进制零和一的数量。该 API 允许密钥长度为 128 位

此大小允许使用非常精细的键,但键越精细,值中噪声的可能性就越大。如需详细了解噪声,请参阅了解噪声

如前所述,维度会编码到汇总键中。每个维度都有一定的基数,即该维度可以取的不同值的数量。每个维度都需要由一定数量的位表示,具体取决于其基数。使用 n 位,可以表示 2n 个不同的选项。

例如,“国家/地区”维度的基数可能为 200,因为世界上大约有 200 个国家/地区。编码此维度需要多少位?

7 位只能存储 27 = 128 个不同的选项,这少于所需的 200 个。

8 位可以存储 28 = 256 个不同的选项,这比所需的 200 个选项多,因此您可以使用 n=8 位对此维度进行编码。

密钥编码

在浏览器中设置密钥时,应采用十六进制编码。在摘要报告中,键将以二进制形式显示(并命名为存储分区)。

为完整密钥设置两个键部分

假设您使用一个键来跟踪以下维度:

  • 广告系列 ID
  • 地理位置 ID
  • 产品类别

虽然在广告投放时(广告投放时间)可以知道广告系列 ID 和地理位置 ID 维度,但在用户完成转化时(转化时间)才能从触发器事件中知道商品类别。

实际上,这意味着您需要分两个步设置密钥:

  1. 您将在点击或观看时设置键的一项内容(广告系列 ID × 地理位置 ID)。
  2. 您将在转化时设置键的第二部分(商品类别)。

密钥的这些不同部分称为密钥片段。

密钥的计算方法是将其键部分进行 OR 运算 (v)。

对键部分进行 OR 运算。

示例:

  • 源端键部分 = 0x159
  • 触发器端键部分 = 0x400
  • 键 = 0x159 v 0x400 = 0x559

对齐按键部分

通过使用精心放置的 64 位填充/偏移量(十六个零)将两个 64 位键部分扩展到 128 位,对键部分进行 OR 运算就等同于对其进行串联,这样更容易推理和验证:

  • 源端键部分 = 0xa7e297e7c8c8d0540000000000000000
  • 触发器端键部分 = 0x0000000000000000674fbe308a597271
  • 键 = 0xa7e297e7c8c8d0540000000000000000 v 0x0000000000000000674fbe308a597271 = 0xa7e297e7c8c8d054674fbe308a597271

为每次广告点击或观看分配多个键

在实践中,您可以为每个归因来源事件(广告点击或观看)设置多个键。例如,您可以设置:

  • 用于跟踪地理位置 ID × 广告系列 ID 的键。
  • 用于跟踪“广告素材类型”ד广告系列 ID”的另一个键。

如需查看其他示例,请参阅策略 B

将维度编码为键

请求摘要报告时,您需要通过请求一组汇总键的摘要报告,告知汇总服务您要访问哪些指标。

摘要报告包含原始的 {键、摘要值} 对,不包含与键相关的其他信息。这意味着:

  • 在用户查看或点击广告后发生转化时设置键时,您需要根据键所代表的维度的值可靠地设置键。
  • 在定义要请求摘要报告的键时,您需要根据要查看汇总数据的维度的值,可靠地生成或动态访问与用户查看或点击广告并完成转化时设置的键相同的键。

使用键结构映射编码维度

如需将维度编码为键,您可以在定义键时(在广告投放时间之前)预先创建和维护键结构映射。

键结构映射表示每个维度及其在键中的相应位置。

在实践中,创建和维护键结构映射意味着您必须实现和维护解码器逻辑。如果您想要使用不需要执行此操作的方法,不妨考虑改用基于哈希的方法

示例如下:

假设您计划跟踪特定广告系列、地理区域和商品的购买次数和购买金额。

商品类别、地理位置 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)。

在此示例中,这些键的键结构映射如下所示:

键结构映射。

键中的维度顺序由您自行决定。

为了说明维度如何构成键结构,我们将使用二进制表示法,因此广告系列 ID(前几位)位于最右侧,而产品类别(后几位)位于最左侧。

在每个维度中,最高有效位(即数值最大的位)是位于最左侧的位。最右边的位是最低有效位(携带最小数值的位)。

我们来看看如何使用键结构映射来解码密钥。

我们将 0b1100100111100 作为一个任意示例键,假设您有办法知道此键遵循上图中的键结构映射。

根据键结构映射,此键将解码为:

`11001 0 011 1100`

因此,键 0b1100100111100 表示在欧洲投放的广告系列 ID 12 中,产品类别 25 的购买次数。

使用哈希函数编码维度

您可以使用哈希函数以一致可靠的方式动态生成键,而不是使用键结构映射。

具体运作方式如下:

  1. 选择哈希算法。
  2. 在广告投放时,生成一个字符串,其中包含您要跟踪的所有维度及其值。如需生成来源端密钥部分,请对此字符串进行哈希处理,并考虑添加一个 64 位零后缀,以便与触发器端密钥部分保持一致,并使 OR 运算更易于推理。
    • 来源端键部分
      = <64-bit hex hash("COUNT, campaignID=12, geoID=7"))><64-bit 00000000…>
    • 请注意,在键结构映射方法中,COUNT 编码的内容与 measurementGoalType=0 相同。COUNT 更精简、更明确。
  3. 在转换时,生成一个字符串,其中包含您要跟踪的所有维度及其值。如需生成触发器端密钥部分,请对此字符串进行哈希处理,并添加一个 64 位前缀零:
    • 触发器端键部分 = <64-bit 00000000…><64-bit hex hash("productCategory=25")>
  4. 浏览器会对这些键部分进行 OR 运算以生成密钥。
    • 128 位汇总键
      = <64-bit hex source-side key piece hash><64-bit hex source-side key piece hash>
  5. 稍后,当您准备好请求此键的摘要报告时,可以动态生成该报告:
    • 根据您关注的维度,按照前面的步骤生成来源端和触发器端键部分。
      • 来源端键部分
        = <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"))
    • 与浏览器一样,对这些键部分进行 OR 运算,即可生成浏览器之前生成的相同密钥。
      • 128 位汇总键
        = <64-bit source-side key piece hash><64-bit source-side key piece hash>

如果您使用的是这种基于哈希的方法,请参考以下实用提示:

  • 始终使用相同的维度排序。这样可以确保可靠地重新生成哈希。("COUNT, CampaignID=12, GeoID=7" 不会生成与 "COUNT, GeoID=7, CampaignID=12" 相同的哈希)。实现此目的的一个简单方法是按字母顺序对维度进行排序。我们将在示例中执行此操作,但有一个例外情况,即我们将始终将 COUNTVALUE 作为维度中的第一个项目。之所以这样做,是为了提高可读性,因为 COUNTVALUE 编码的信息在概念上与所有其他维度略有不同。
  • 跟踪您在键中使用的一组维度。您希望避免根据一组从未使用过的维度生成键。
  • 如果使用合适的哈希函数,哈希冲突很少发生,但与之前使用的哈希(应存储以解读汇总服务的结果)进行检查可以避免引入与旧键冲突的新键。

如需了解如何在实践中使用基于哈希的键,请参阅“每次点击或查看一次转化”示例

实际中可汇总的值

当用户完成转化时,广告技术公司会设置可汇总的值。

为了保护用户隐私,每个用户的贡献上限为 100 次。对于与单个来源(广告点击或观看)关联的所有可汇总的值,任何值都不能高于一定的贡献度上限。

我们将此上限称为 CONTRIBUTION_BUDGET。在说明文档中,此限制称为 L1 预算,但它与 CONTRIBUTION_BUDGET 相同。

如需深入了解贡献预算,请参阅摘要报告的贡献预算

示例:每次点击或观看可统计一次转化

在本例中,假设您希望回答以下问题:

  • 哪些产品类别在每个地区最有价值?
  • 哪些广告系列策略在每个地区最有效?

我们再假设,根据您的用例,您需要每周的数据分析。

您还需要跟踪以下内容:

  • 16 个不同的广告系列。
  • 8 个不同的地理区域:北美洲、中美洲、南美洲、欧洲、非洲、亚洲、加勒比海地区和大洋洲。
  • 29 个不同的商品类别。

衡量的指标

虽然许多广告技术公司都鼓励广告客户配置各种转化类型,但专注于最重要的转化(例如购买)是确保这些重要转化事件的汇总结果详细且准确的好方法。 事实上,您衡量的指标越多,每个指标的贡献预算就越小,因此每个值的噪声就可能越大。因此,您需要仔细选择要衡量的内容。

在本例中,我们将重点介绍每次点击或观看仅衡量一次转化的广告系列设置:购买。

您仍然可以衡量购买次数和购买金额,并查看各种重要的汇总统计信息,例如总购买金额和地理细分数据。 这样可以将噪声保持在合理水平,并确保对贡献预算采用简单的扩展方法。

币种方面有何限制?

在不同地区投放广告系列意味着您需要考虑货币。您可以执行以下操作:

  • 将币种设为汇总键中的专用维度。
  • 或者,从广告系列 ID 推断币种,并将所有币种换算为参考币种。

在此示例中,我们假设您可以根据广告系列 ID 推断出币种。这样,您就可以将任何给定购买金额从用户的本地货币换算为您选择的参考货币。您还可以在用户购买商品时动态执行此转化。

采用此方法时,所有可汇总的值均采用相同的参考币种,因此可以求和以生成汇总的购买价值总额,即摘要购买价值。

将目标转换为键

有了衡量目标和指标,您就可以为关键策略选择多种方案。我们来重点介绍其中两种策略:

  • 策略 A:一个精细的键结构。
  • 策略 B:两个粗糙键结构。

策略 A:一棵深度树(一个精细键结构)

在策略 A 中,您使用一个精细的键结构,其中包含您需要的所有维度:

一个精细的键结构

您的所有键都使用此结构。

您可以将此键结构拆分为两种键类型,以支持两个衡量目标。

  • 键类型 0:衡量目标类型 = 0,您决定将其定义为购买次数
  • 键类型 1:衡量目标类型 = 1,您决定将其定义为购买价值

摘要报告如下所示:

策略 A 摘要报告。

您可以将策略 A 视为“一棵深树”策略:

  • 摘要报告中的每个摘要值都与您跟踪的所有维度相关联。
  • 您可以将这些汇总值与每个维度一起汇总,因此这些汇总的深度可以与维度数量一样深。

采用策略 A,您可以按如下方式回答问题:

问题 答案
哪些产品类别在每个地区最有价值? 对所有广告系列的摘要报告中的摘要购买次数和价值进行求和。
这样,您就可以按地理位置 ID × 商品类别查看购买次数和金额。
比较每个地区不同商品类别的购买价值和数量。
哪些广告系列策略在每个地区最有效? 对所有商品类别的摘要报告中摘要购买次数和摘要购买金额求和。
这样,您就可以按广告系列 ID × 地理位置 ID 查看购买次数和价值。
对于每个区域,比较不同广告系列的购买价值和计数。

采用策略 A,您还可以直接回答第三个问题:

“我的每个广告系列在每个地理区域为每件商品带来了多少收入?”

虽然摘要值会存在噪声,但您可以确定各个广告系列之间衡量值的差异是否仅仅由噪声所致。如需了解如何实现这一点,请参阅了解噪声

策略 B:两个浅树(两个粗键结构)

在策略 B 中,您使用两个粗略键结构,每个结构都包含您所需维度的一部分:

键结构 1 和键结构 2。

您可以将这两个键结构分别拆分为两种键类型,以支持两个衡量目标。

  • 衡量目标类型 = 0,您决定将其定义为购买次数
  • 衡量目标类型 = 1,您决定将其定义为购买价值

最终,您将获得四种键类型:

  • 键类型 I-0:键结构 I,购买次数。
  • 键类型 I-1:键结构 I,购买价值。
  • 键类型 II-0:键结构 II,购买次数。
  • 键类型 II-1:键结构 II,购买价值。

摘要报告如下所示:

摘要报告策略 B。

您可以将策略 B 视为“两个浅树”策略:

  • 摘要报告中的摘要值会映射到两组小维度之一。
  • 您可以将这些汇总值与这些集合中的每个维度一起汇总,这意味着,由于要汇总的维度较少,因此这些汇总不如选项 A 中的汇总深。

如果采用策略 B,您可以按如下方式回答问题:

问题 答案
哪些产品类别在每个地区最有价值? 直接访问摘要报告中的摘要购买次数和价值。
哪些广告系列策略在每个地区最有效? 直接访问摘要报告中的摘要购买次数和价值。

决策:策略 A

策略 A 更简单;所有数据都采用相同的键结构,这也意味着您只需维护一个键结构。

不过,如果采用策略 A,您需要对摘要报告中收到的摘要值进行求和,才能解答某些问题。这些摘要值中的每一个都存在噪声。通过对这些数据进行求和,您也将求和噪声

策略 B 则不同,摘要报告中显示的摘要值已经包含您需要的信息。这意味着,与策略 A 相比,策略 B 对噪声的影响可能较小。

如何确定要采用哪种策略?对于现有广告客户或广告系列,您可以依据历史数据来确定转化量更适合策略 A 还是策略 B。不过,对于新的广告客户或广告系列,您可以选择:

  • 使用精细键收集一个月的数据(策略 A)。 由于您延长了数据收集时长,因此摘要值会更高,噪声相对较低。
  • 以合理的准确性评估每周转化次数和购买价值。

在此示例中,假设每周购买次数和购买金额足够高,策略 A 会导致噪声百分比在您认为适合您的用例的范围内。

由于策略 A 更简单,并且产生的噪声影响不会影响您做出决策的能力,因此您决定采用策略 A。

选择哈希算法

您决定采用基于哈希的方法生成密钥。为此,您需要选择一个支持该方法的哈希算法。

假设您选择了 SHA-256。您也可以使用更简单、安全性较低的算法,例如 MD5。

在浏览器中:设置键和值

现在,您已确定键结构和哈希算法,接下来就可以在用户点击或查看广告并随后完成转化时注册键和值了。

下面简要介绍了您将设置的用于在浏览器中注册键值对的标头:

为观看或点击注册键和值。
为转化注册键和值。

设置源端密钥部分

当用户点击或查看广告时,在 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
1每个十六进制数字代表四位(二进制数字)。

现在,我们来设置关键部分:

// 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 (相同) (相同) (相同)
1每个十六进制数字代表四位(二进制数字)。

现在,我们来设置关键部分:

// 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) / 1,500) = 32,768/1,500 = 21.8 ≈ 22

由于您决定为每次广告点击或观看(来源事件)最多跟踪一次购买交易,因此购买次数的放大系数为 32,768/1 = 32,768。

现在,您可以设置以下值:

  • key_purchaseCount:1 × 32,768 = 32,768
  • key_purchaseValue:52 × 22 = 1,144

在实践中,您可以使用专用标头 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 OR 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 OR 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
1您要请求的指标(广告系列 ID 12 × 地理位置 ID 7 × 产品类别 25)。 2 要向汇总服务请求的键 = 来源端键部分或触发器端键部分。
  • 向汇总服务请求这些键的摘要数据。

处理摘要报告

最终,您会收到一份摘要报告,该报告可能如下所示:

[
  {"bucket": "00111100111110000110011110010000001111111011101101110011111011001111100111100100100100011111111000110111111001010101101000001100",
    "value": "2558500"},
  {"bucket": "00100100010100100110010111110100001100101111000101101110011100111111100111100100100100011111111000110111111001010101101000001100",
    "value": "687060"},
  
]

第一个令牌桶是二进制 COUNT 键。第二个存储分区是二进制 VALUE 键。请注意,虽然这些键是异构的(COUNTVALUE),但它们包含在同一报告中。

缩小值

  • 2,558,500 是指此键的购买次数,已按您之前计算的放大因子放大。购买次数的缩放比例为 32,768。将 2,558,500 除以目标的贡献预算:2,558,500/32,768 = 156.15 次购买。
  • 687,060 → 687,060/22 = 31,230 美元(总购买价值)。

因此,摘要报告可为您提供以下数据洞见:

- Within the reporting time period, campaign #12
  run in Europe drove about 156 purchases (± noise)
  for the product category #25
  ```

  ```text
- Within the reporting time period, campaign #12
  run in Europe drove $31,230 of purchases (± noise)
  for the product category #25.