You need to enable JavaScript to run this app.
导航

控制台

最近更新时间2023.12.07 19:44:43

首次发布时间2022.12.26 10:18:06

应用管理

Q:目前支持哪些行业和推荐场景类型?

A:平台当前支持的行业类型为电商行业、内容行业(长视频、内容社区)、金融行业,后续将逐步推出社交、广告等行业。当前支持的推荐类型为“猜你喜欢”和“相关推荐”,即根据用户兴趣,推荐给用户感兴趣的物品,达到“千人千面”的效果。后续将逐步拓展热门推荐、沉浸式推荐等推荐类型。

Q:什么情况下需要创建多个应用?

A:应用是指是在智能推荐平台完成推荐服务的一条完整线路。一个公司可能会有多个应用,例如:字节跳动有今日头条、抖音等多个app。如果一个公司有多个app就需要创建多个应用。一个应用可以绑定一个行业模板,例如电商行业/长视频行业等,如果一个应用下需要用到不同的行业模板时,也需要创建多个应用。

数据管理

表定义

Q:已经提交完表定义后,是否还支持新增/修改字段?

A:在应用的任何阶段,均支持新增字段;对于已定义的字段,不支持删除或修改。

Q:平台提供的数据模板和实际数据表能对上的字段较少,怎么处理?

A:若您需要上传平台提供的数据模板中没有的字段,可以在表定义时选择“添加自定义字段”,输入新增字段名称、类型及描述,添加完毕后点击右上方的“确认”即可保存。
自定义字段支持的类型包括:int32、int64、string、float、double、array,其中复杂类型 array 字段需要用 json string 传输。自定义字段可用于后续归因、加权打散规则配置等流程中。

Q:怎么理解 spm?

A:spm(Super Position Model)全称超级位置模型,主要用于标识行为发生的位置。spm 位置编码由 A / B / C / D 四段构成,各分段分别代表 A:业务, B:页面, C:页面区块, D:区块内点位。段之间用$##$分隔,即A$##$B$##$C$##$D,spm 各段建议传明文。某一段为空时直接传空字符串,如第二段为空, 则传“A$##$$##$C$##$D”。

  • 业务:业务名称,如今日头条
  • 页面:如首页、发现页-推荐等
  • 页面区块:如广告位、猜你喜欢
  • 区块内点位:在区块内的具体位置

spm 标识非常重要,数据校验报告、AB 实验报告中均需要查看分场景(一般取 spm 到页面区块的前三段)的指标。

数据预处理

Q:怎么理解归因?

A:归因分析用于计算用户行为(例如电商行业的商品购买成功、长视频行业的视频播放等)的产生主要来源于前面哪些场景下的哪些行为。将整个时间线上的用户行为经过去重后,构建一个转化路径图。例如电商行业常见的归因路径:曝光-点击-加入购物车-下单-购买成功。长视频行业常见的归因路径:曝光-点击-播放。
为什么需要配置归因?

  • 完成归因配置及数据接入后,在数据质量&校验报告中,您可以查看每日的归因率,了解用户的行为主要来源于哪些场景下的哪些行为。
  • CTR、CVR等统计指标也提供归因后的数据。在特征工程环节中,采用归因后的数据来生成样本,增强用户行为路径建模的效果。
  • 在ABtest环节,采用的是归因后的数据进行各类指标计算,更贴近真实业务指标诉求。

关于归因配置的详细说明可查看归因配置

Q:平台会对数据做去重处理吗?

A:平台在接收数据时不会对数据进行去重。在做数据校验时,平台会对用户表和商品表按id去重,取最近的一条记录;行为表会做两种去重处理,一种是所有字段完全一样的去重,一种是按照窗口做去重,即一定时间窗口(可配)内user_id+item_id+spm一样的数据只会取一条,其他的会打上去重标记。关于去重配置的详细说明可查看去重配置

数据同步

Q:测试数据、历史数据、增量天级数据、增量实时数据分别需要通过哪些接口传输?

A:
离线数据同步: 离线数据同步包括测试数据、历史数据、增量天级数据同步阶段,同步方式如下:

  • 涉及接口:write + done
  • 使用方法:调write接口发出上传请求后,阻塞等待服务端处理结果;所有数据上传完成后,调done接口通知服务端上传完成,服务端开始归档、入库。

实时数据同步: 实时数据同步阶段使用。通过write接口发送,实时等待返回结果。

  • 涉及接口:write
  • 使用方法:参考write接口说明,调write接口发出上传请求后,阻塞等待服务端处理结果。

说明

对于实时数据做补传或重传(传今天之前的数据)时需要使用write + done接口,且同步阶段应为incremental_sync_daily

Q:user/item 数据需要每天全量同步吗?没有更新的字段需要传吗?

A:user/item 数据在正式数据的第一天(也即历史阶段第一天)传一份全量数据,之后每天增量传输即可。只需要传新增/更新的数据,且只需要传必传字段+有更新的字段,无任何属性更新的user/item不需要传输。例如item_id=12345的物品,在2023/03/07从上架状态调整为下架状态,其他字段均无更新,则传输时只需要传item_idstatus两列;item_id=23456的物品,只有tags发生了变化,那么只需要同步item_id(必传字段), status(必传字段)和tags(更新字段)即可。

Q:如何将user/item表的某个字段从有值更新为无值?

A:对于string类型字段,例如要将user表的tags字段由“A$##$B$##$C”更新为无有效值,流式数据需要传“”,不能传null;批式数据无法更新。对于array类型字段,流式数据需要传[][""],不能传null;对于批式数据需要传[]

Q:同步失败是什么原因?

A:同步失败可能的原因:1)没有传输数据就调用了done;2)传输的数据都不合法、被API拒绝了;3)传输了合法数据,但平台归档异常了。建议先排查是否存在前两种情况,如都不存在,请联系推荐平台团队。

Q:历史阶段只想传一天的user/item数据,或者增量阶段某一天不需要传user/item数据,怎么处理?

A:历史阶段,在选择时间范围时,user表和item表只需要选择一天即可;增量阶段,无需传数的表可以选择跳过。

Q:增量数据如何重新同步?

A:增量数据阶段,均可以通过页面上的「重新同步」操作进行数据重传,需要注意的是:

  • 无论是天级更新/实时更新的数据,重传的stage都请使用incremental_sync_daily
  • 重传数据会触发下游任务的自动重跑;

Q:是否支持不同表使用不同的更新方式?例如行为数据实时传输,用户&物品数据天级传输?

A:可以支持。在接入增量数据时,不同表可以选择不同的更新方式,且更新方式后续支持变更。
更新方式的选择:

  • 为保证推荐结果的实时性,建议优先选择“实时更新”;无法做到实时更新或者对实时性要求不高的数据,可选择天级更新。
  • 更新方式为实时更新的数据,也会dump成天级数据,供特征工程批式任务使用。

Q:表的更新方式怎么调整,调整后有什么影响?

  • 三张表的更新方式是独立配置的,互不影响。
  • 修改入口:在同步列表右上角的「同步设置」中进行修改。
  • 修改的场景和影响如下:

修改前

修改后

典型使用场景

影响

天级更新

天级更新+实时更新

增加实时更新的方式,例如接入初期item表还无法做到实时更新,仅通过天级更新;后期出于对实时性的要求,经过改造可以做到实时,则增加实时更新的链路;同时由于某些数据可能无法通过实时传输,因此保留天级更新的链路。

  • user/item表:天级和实时数据流同时存在,对于同一user/item,更新顺序根据update_time字段而定。
  • behavior表:批式样本基于天级行为数据生产,实时数据可用作实时特征的生产。

实时更新

变更为实时更新,例如接入初期item表还无法做到实时更新,仅通过天级更新;后期出于对实时性的要求,经过改造可以做到实时,且所有数据都可做到实时更新,无需保留天级更新的链路。

  • user/item表:天级更新链路切换为实时更新。
  • behavior表:批式样本调整为基于实时传输数据的dump生产。

实时更新

天级+实时更新

实时更新

停止天级更新的方式,例如实时行为数据在质量比较稳定时,可以只保留一种更新方式,无需T+1同步天级数据,系统会自动将实时数据dump下来并基于此产出。

  • user/item表:天级+实时更新链路切换为仅实时更新链路。平台将判断该表数据更新到了哪一天(依据同步状态为“同步完成”或“已跳过”),该天之后的数据不会再生成天级同步记录,且不可恢复同步。
  • behavior表:批式样本调整为基于实时传输数据的dump生产,起始时间为当前最近完成同步(依据同步状态为“同步完成” 或“已跳过”)的第二天。

数据探查

Q:校验报告一直不产出

A:
等待中:通常是报告产出条件不满足,校验报告产出条件为:对于用户表/内容表,需要满足开始时间到当天的数据连续;对于行为表,当天有需要行为数据。
校验报告中各部分产出条件如下:

  • 数据量统计
    • 用户表/物品表:开始时间到当天的数据连续时,才可产出
    • 行为表同步:当天有行为数据时,即可产出
  • 字段统计
    • 用户表/物品表:开始时间到当天的数据连续时,才可产出
    • 行为表同步:当天有行为数据时,即可产出
  • 拼接率统计:有一段开始时间到当天的连续用户、物品数据及当天行为数据,才可产出
  • 归因率统计:有一段开始时间到当天的连续行为数据,才可产出
  • 业务指标统计:
    • 归因前:当天有行为数据时,即可产出
    • 归因后:有一段开始时间到当天的连续行为数据,才可产出

注:对于增量实时要想产出报告,必须保证增量实时接入前所有天级数据都同步完成且报告无阻断或者跳过;仅实时情况下,历史同步和增量实时之间如果有日期gap,也需要补传或者跳过处理

执行中/执行失败:可能是资源问题或任务异常,建议联系推荐平台团队。

Q:校验报告阻断后如何处理

A:某天的校验报告状态根据该天所有校验项的状态来确定,只存在合格和严重两种状态。只要出现一个状态为“严重”的校验项,则当天报告状态为“严重”,否则为“合格”。 对于校验状态为“严重”的报告,建议的处理步骤如下:
图片

  • 第一步:确认阈值设置是否合理。首先确认阈值设置是否合理,如果阈值非常严格(如要求合格率为100%),而实际数据很难满足需求,则会出现较多“严重”项;如阈值不合理,则优先调整阈值。
  • 第二步:确认数据能否修复。如数据可以修复,则建议修复完数据后进行重传。
  • 第三步:确认数据问题是常态还是短期问题(如618大促期间,行为数据量波动大其实是短期特殊情况)。如明确是长期问题,则建议调整阈值。
  • 第四步:确认该天存在严重问题的数据是否需要保留。如需要保留数据进入特征工程、模型训练,则可操作忽略问题,即对问题做放行处理;如不希望有问题的数据进入模型,则可在同步列表操作「跳过」该天数据。

注:调整阈值后,只会对当前校验状态是“严重”的报告生效。

特征工程

数据处理

Q:数据处理模块中,表和任务的关系是什么?

A:一个表的字段可以通过多个任务进行定义,一个任务只能输出到一个中间表。

Q:创建任务时,支持哪些SQL语法?

A:任务SQL语法标准:批式任务采用ANSI SQL 2011标准,流式任务兼容 Flink SQL 语法。 具体支持的SQL函数说明参见SQL帮助文档

Q:批式任务和流式任务的区别?

A:从执行周期上看,批式任务数据不会立即处理,而是先保存下来,再按一定的周期处理,如每天、每小时等进行处理;流式任务则会收到数据立即进行处理,处理完立即发往下游,过程中数据往往不会被保存下来。从数据来源上看,批式任务数据来源为天级数据(包括测试数据、历史数据、增量天级数据);流式任务数据来源为实时数据(增量实时数据)。

Q:如何设置任务间的依赖关系?

A:在SQL编辑区域选择“配置”,可以添加上游依赖任务。

Q:什么是回溯任务?

A:执行历史某一时间段内的任务,只有批式任务支持回溯功能。

Q:任务上线后是否支持重跑、停止?

A:支持,在查看任务执行情况列表中可以操作。

原始特征

Q:什么是原始特征?

A:原始特征上游直接映射数据源的某个字段,下游经过抽取生成特征。一个原始特征可以分别关联一个离线数据源和一个在线数据源,离线数据源在样本生成选择离线特征时读取调用,在线数据源在在线推荐服务时读取调用。

Q:原始特征配置中有哪些限制?

A:原始特征需要和选择数据源字段的字段类型一致;不同类别的原始特征只能选择含有对应主键字段的数据源;要保证原始特征的离线数据源和在线数据源的数据一致性。

Q:原始特征怎么关联自定义的在线请求参数?

A:选择在线请求数据源,在字段下拉列表中点击添加字段即可。注意这里的字段要确保和个性化推荐接口里上传的自定义参数一致。

特征

Q:特征和原始特征的关系?

A:原始特征经过特定的抽取方法计算得到特征

Q:什么是特征抽取,支持哪些特征抽取方法?

A:是指将原始特征或特征,经过某种计算后进行哈希,输出模型可以识别的数据的计算过程。

Q:怎么批量创建特征?

A:首先通过标签或者数据源批量获取原始特征,然后基于原始特征增加前后缀的方式定义特征的名称,并且基于原始特征类型定义默认的抽取方法和参数配置,最后把设置提交确定,即可得到批量的特征信息。您也可以在此基础上做相应修改进行提交保存。

Q:特征关联栏位指的是什么?

A:如果一个栏位在线服务预估时,会使用某个特征,则我们称为该特征关联了该栏位。这里有两种情况:一个栏位中线上模型使用的所有特征,都自动和该栏位关联;栏位中线上模型没有使用的,但是想在线请求时也计算并且dump下该特征值,以作为在线特征来生成样本,可以通过手动关联来实现。

样本管理

Q:样本和特征的关系?

A:行为数据和指定特征数据拼接生成样本。样本中包含特征,供模型训练使用。特征除了前面提到的包含在样本中外,还会直接在线用于线上预估。

Q:批式样本和流式样本分别指什么?

A:批式样本是指按天或按小时进行更新生成的样本,现在平台支持3种批式样本生成途径:天级行为数据源拼接离线特征;天级行为数据源拼接在线特征;dump流式样本成小时级追新的批式样本。流式样本是指实时的行为数据源拼接在线特征实时更新生成的样本。

Q:在线特征和离线特征分别指什么?

A:离线特征是指在拼接样本时使用的是离线计算生成的特征。在线特征是指拼接样本时使用在线服务预估时在线抽取生成的特征。流式样本只能使用在线特征,批式样本可以选择在线特征或离线特征。

Q:流式样本数量少于预期应该怎么排查?

A:排查流式样本的相关问题,需要要先理解流式样本的开发链路。其链路中主要环节和注意事项如下:

主要环节

注意事项和检查点

确认数据格式

  1. 是否所有字节流量都携带了 scm=bytedance 参数;
  2. 流式样本是否仅需要包含归因上的 exposure 行为。其他情况比如没有前序 exposure 行为的 click 行为;比如其他无法归因上,但也需要包含在流式样本中的行为等。

注意

这里未正确配置会导致流式样本数量变少,如果上述规则不满足您的业务或数据需求,请告知您的客户成功经理或点击页面右下角的“在线客服”,我们会协助您完成配置。

完成数据同步

  1. 所需的在线 context 类特征是否都已通过推荐接口(online_req)传入
  2. 所需特征是否都已通过增量接口实时传入,其中 context 类特征是否与通过推荐接口(online_req)传入的完全一致;

注意

这一步非常关键,未正确同步会导致3个主要问题:

  1. 样本中特征数量变少;
  2. 在离线特征不一致;
  3. 流式样本和批式样本不一致。如果批式样本中对 spm 做了切割处理,流式样本中也需要先将 spm 切割后再传入,例如:spm_01, spm_02, spm_03, spm_04。

发布在线特征

  1. 所需特征是否在【特征工程 】的【特征】模块中关联了栏位并成功发布;
  2. 所需特征是否能在对应栏位中的详情中看到,在线模型中用到的特征也会被自动关联到栏位并发布到线上,这种情况在【特征工程】的【特征】模块中是看不到该特征的,但可以在对应的栏位详情中看到;

创建流式样本

  1. 必填的辅助信息需要正确配置。字段的含义和数据类型都要正确。错误的配置会导致样本拼接不上,影响样本数据数量;

模型过滤样本

  1. 在模型代码中是否对样本做了不符合预期的过滤;
  2. 过滤条件涉及到的特征是否发布到线上,是否被正常生产;
  3. 模型中用到的特征是否已在 features.py 中定义;

策略管理

召回策略

Q:为什么召回规则绑定了在线服务依然可以下线?

A:召回规则如果绑定在线服务后,进行下线操作时,对应的在线服务将会按照下线召回后的配置重启服务,重启后会生成一个新的在线服务版本,用户请求时将会按照最新的在线服务版本返回推荐结果。

Q:自定义召回的使用场景?

A:自定义召回用于 将已经加工好的召回数据源与平台召回进行融合的场景,目前仅在私有化环境支持,仅支持接收 Http数据。自定义召回创建完成并发布成功后,您可以在「在线服务-召回策略」配置中选用。

业务规则

Q:自定义规则和内置规则的关系?

A:自定义规则和内置规则是互相补充的关系,可以一起使用。通常自定义规则会在平台规则之后生效,在线服务 pipeline 生效的顺序为:召回—>召回合并&过滤—>自定义过滤—>粗排—>精排—>内置规则—>自定义重排—>自定义返回字段

Q:参数文件的作用是什么,什么场景下需要使用?

A:参数文件的主要作用是将同一个策略不同场景下复用。例如一个自定义过滤规则,需要用到某个指定字段作过滤,但在不同场景需要过滤的值不同,则可以将该字段抽象为一个参数,创建不同的参数文件,在多个场景下选择同一个自定义过滤的策略、但是选用不同参数文件。当然,如果没有复用需求、也可不创建参数文件。

Q:在线服务使用自定义规则,有哪些注意事项?

A:使用自定义规则,需要注意以下几点:

  • 自定义规则和内置规则可以一起使用,但请注意自定义规则可能会与平台配置的规则冲突,请自行保证正确性
  • 自定义过滤、自定义重排、自定义返回字段分别仅支持添加一个

栏位管理

栏位

Q:一个栏位绑定多个spm适合在什么场景下应用?

A:单个spm流量较少,无法ab实验验证推荐效果;多个 spm 配置相同,避免重复配置,可以绑定在一个栏位下,使用该栏位的在线服务配置。

Q:创建栏位时,推荐类型为什么不能选择相关推荐?

A:若要开启相关推荐,首次创建应用时必须勾选 parent_goods_id / parent_item_id 字段。

在线服务

Q:为什么新建在线服务按钮不可点击?

A:一个栏位下只能有一个在线服务,已经创建在线服务后,新建在线服务的按钮就不可点击了。但是一个在线服务可以有多个版本,如果要新建在线服务的版本,可以在现有版本的基础上进行复制,复制后会创建一个新的在线服务版本。

Q:使用 tags 字段或者array类型字段作为打散维度时,怎么判断是否是同一维度?

A:只要有一个tags的值相关、就算作同一维度。比如物品 A 的 tags 值为“1$##$2$##$3”,物品 B 为“1$##$4$##$5”,二者算作同一维度。

Q:去重规则只使用当前 spm 下的行为数据还是使用全局数据?

A:下发去重使用当前栏位的下发记录,即对于同一栏位下所有 spm ,满足下发去重配置条件的物品将不会被推出;其他行为使用全场景的行为记录,即在任一 spm 下满足行为去重配置条件,则该物品将不会被推出。

Q:负反馈规则只使用当前 spm 的数据还是使用全局数据?

A:负反馈过滤/降权规则,使用的是全场景的负反馈数据。即对于配置了负反馈规则的栏位,只要任一场景发生了 dislike 行为,负反馈规则都会生效。

Q:兜底数据是如何生成的?

A:平台默认使用该 spm 下点击高热的 5000 条行为记录作为兜底结果来源。当行为数据的更新方式只有一种时,则使用该行为数据源;当行为数据的更新方式同时有天级+实时,则使用实时更新的数据。

Q:为什么在线服务无结果?

A:如果在线服务配置完成且上线后调用推荐 API 无结果返回,请参考如下情况分析原因。
1)用户行为数据过少
case:配置高热召回为“近10min点击行为按照行为频次进行统计”,且行为数据接入方式为实时更新。召回的时间范围是以用户请求起往前数10min按照点击行为的频次进行统计,但是用户在近10min中无行为,或者行为过少无法进行计算,会导致在线服务无结果。
图片
2)召回配置行为与数据接入行为不一致
case:同上,配置高热召回为“近10min点击行为按照行为频次进行统计”,但是上传的行为中无点击数据(例如有的视频滑动后直接播放不需要点击因此平台没有上传点击行为),由于数据接入无对应的行为也会导致服务流无结果
3)刚开始有结果,刷新几次之后无结果
case:平台设置“禁止出现最近100条已经下发的内容,如果平台接入的内容数据过少,刚开始推荐的商品被去重后,导致后面无数据展示。
图片
4)设置过于严格的过滤规则
case:平台设置的 物品池过滤/动态过滤规则 将发布10天内的商品保留,但是上传的商品发布时间都超过10天以上,会导致在线服务无结果。
5)status字段导致异常
status字段为0或者不上传,代表对应的商品是不可推荐的,不可推荐的商品在服务流中会被过滤掉,如果该字段不上传,或者上传的都为0也会导致在线服务无结果。
6)新用户访问无结果,老用户有结果
用户兴趣召回,重定向、item-cf以及模型都是基于用户行为进行统计的,新用户在平台没有任何行为,新用户首次访问的结果是高热召回的结果,后续随着行为的积累其他召回规则才会生效,如果未设置高热会导致新用户请求无结果。
7)首次创建服务流的平台调度任务的影响
首次创建模型召回,需要12个小时完成构建候选和索引的任务,第二次之后无调度时间影响。首次创建item-cf召回,需要6个小时完成任务调度,第二次之后无调度时间影响。增量天级上传数据,首次配置上线的服务流会在次日传完新数据后有结果返回,第二次之后无时间影响。
8)召回批式任务生效时间的影响
批式任务每日定时计算,当天提交的任务从第二天开始生效。当天发布后使用该召回的在线服务,需要第二天才可使用。

说明

  1. 高热规则一定要配置,作为保底策略保证无论什么情况下都有结果返回
  2. 设置时间要合理,参考数据接入的时间以及该时间段内的数据量
  3. 设置行为要合理,必须是数据接入环节上传的行为类型
  4. 前期先减少复杂的严格的过滤规则的配置,在有结果的基础上后续再增加条件进行优化

A/B测试

Q:AB报告没产出

A:AB 报告一般是11:00到13:00每半小时定时刷新一次,若查看时间较早或数据同步完成时间较晚,都可能造成没有报告的情况;目前报告页面右上角也提供了刷新按钮,点击之后,会根据当前 clickhouse 中的数据生成一份报告(ck中数据不完整的话,报告会不准确)。
图片

Q:AB报告表格和曲线图数据不一致

A:表中的数据是是直接查的缓存,图中数据查的是db,表中数据查询的是缓存。两边不一致时,可以点一下右上角的刷新。

物品池

Q:物品池的规则与条件筛选是什么关系?

A:物品池规则设定后,对应的spm下的推荐结果只能推荐满足物品池规则的物品;条件筛选是在满足物品池规则的基础上,对物品进行筛选查询,帮助用户更快的查询到满足条件的物品,从而进行强推/封禁等配置。

Q:物品设置强推规则后对推荐结果会有什么影响?

A:设置强推后的物品将会按照设置的位置在推荐结果中进行展示,在强推时间范围内,每个用户每次请求都会看到该物品。

Q:物品池没数据,系统提示物品池一直在数据处理中

A:可能是同步的数据都不满足status=1的条件,建议先自行排查。若排除此原因,可联系推荐平台团队解决。

推荐测试

Q:通过推荐测试获取某个用户的推荐结果后会对用户实际请求结果产生影响吗?

A:推荐测试是模拟用户真实请求,查看该请求下的推荐结果,会对真实用户请求产生影响,例如如果在线服务配置了去重,在推荐测试请求的结果在用户实际请求时就会被去重。

Q:为什么输入用户ID错误还会有结果返回?

A:如果输入系统中未被传入的用户ID,该ID会被视为新用户,按照新用户请求返回推荐结果。

Q:为什么推荐测试返回的召回策略为空?

A:召回策略为空的推荐测试返回,是触发了兜底的结果,排查思路请参考以上「为什么在线服务无结果?」。

推荐 API

Q:API 访问老项目和新应用时,在 API 请求构造上的差异?

A:老项目和新应用的 URL,predict/callback请求体定义都是相同的。针对新应用,predict/callback 改变点有两个。

  • 会强制校验 spm。且 spm 需要填的是想请求的栏位上绑定的 spm。
  • header 里面需要带上 Enable-Spm-Route: true 的标识。

举例:
如果栏位 1 绑定了“1$##$2$##$3”这个 spm。如果想请求栏位1,那么在 predict/callback 请求体里的 spm 需要填上“1$##$2$##$3”,在请求的 header 里需要带上 Enable-Spm-Route: true。这样服务就会根据“1$##$2$##$3”的绑定关系将请求路由到栏位1的处理逻辑之中。
如果请求的 header 没有携带 Enable-Spm-Route: true,那么服务会判定这个请求是属于老的项目请求。
如果请求的 header 携带了 Enable-Spm-Route: true,但是请求体里填写的 spm 找不到绑定的栏位,那么客户端会接收到报错。

Q:API参数中的 spm、栏位关联的 spm 和行为数据中的 spm,分别应该怎么传?

A:使用推荐 API 请求推荐平台时,平台会根据 spm 参数找到该 spm 关联的栏位,并生效该栏位的在线策略,因此 API 参数中的 spm 和栏位关联的 spm 需要严格匹配。API 参数中的 spm,需要为三段,如果某一段为空,则需要留空,如“A$##$B$##$”,不能传“A$##$B”,否则会与栏位关联 spm 的格式不一致导致匹配失败。 行为数据中的 spm,根据需求可以传 3 段/ 4 段,第 4 段含义为点位,通常只用作特征。在栏位关联的 spm 下,效果数据和 AB 报告指标会筛选该 spm 下的行为数据(使用前三段匹配)做统计,兜底数据也会基于该 spm 下的点击高热行为数据。即行为数据 spm 的前三段需要与栏位关联的前三段严格匹配。