动态过滤器(即,使用参数而不是固定值)只能与=
andIN
运算符一起使用。从过滤器文档:
对于使用 = 和 IN 运算符的表达式,请使用美元符号 ($) 和参数名称来添加占位符参数作为值。
因此,当前不支持您拥有的位置<= $now
和示例中的位置。> $now
但是,Items.stock_on_hand > 0
很好,因为0
它是一个固定值。另外,IS NULL
不支持。
有几种可行的替代方法。首先,您可以在项目数据集中使用单个字段来指示项目是否可用(例如,is_available
)。因此,一个true
/false
值表示 1/ 可用、2/ 未停产和 3/ 现有库存的当前状态。这意味着您的应用程序需要在项目的可用性状态更改时更新此标志。换句话说,当商品停产或缺货时,将其is_available
字段值更改为false
。这可以使用PutItems API完成。您的过滤器变得更加简单。
INCLUDE ItemID WHERE Items.is_available = "true"
另一种方法是在您的项目数据集和过滤器表达式中保留available_on
、discontinue_on
和stock_on_hand
,但替换$now
为固定/硬编码值。
INCLUDE ItemID WHERE Items.available_on <= 20211105 AND Items.discontinue_on > 20211105 AND Items.stock_on_hand > 0
格式20211105
中的当前日期在哪里。YYYYMMDD
您可以添加小时、分钟、秒以获得更多粒度。当然,这意味着过滤器表达式中的日期时间需要定期更新。这需要定期创建具有更新日期时间的新过滤器,将您的应用切换为使用新过滤器,然后删除旧过滤器。基本上随着时间的推移旋转过滤器。这个无服务器应用程序可以使这个过程变得更加容易。
https://github.com/james-jory/amazon-personalize-filter-rotator