You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何DynamoDB多过滤条件查询仍返回月度/周度混合数据?

问题描述

我通过Lambda函数查询DynamoDB表,希望根据传入的data_type(可选值monthly或weekly)筛选当月的月度/周度数据,但遇到异常:即使指定了data_type对应的type过滤条件,查询结果仍同时返回月度和周度数据。

DynamoDB表结构

  • rate_id:存储值示例:2024-11-summary(11月月度数据)、2024-11-week1(11月第一周周度数据)
  • type:枚举值weekly或monthly,用于标识数据类型
  • platform:平台标识,例如Generic_Data_DF
  • 其他字段:部署频率、成功率等业务相关字段

问题场景

  • 调用接口https://<my-api-url>/dora-visualize?current_month=true&platform=Generic_Data_DF&data_type=monthly时,预期仅返回Generic_Data_DF平台下type=monthly的2024年11月数据,实际同时返回该平台的周度数据
  • 调用接口https://<my-api-url>/dora-visualize?platform=Generic_Data_DF&data_type=weekly时,预期仅返回周度数据,实际同时返回月度数据

可能的原因及排查方向

1. 过滤参数传递错误

  • 检查Lambda函数中是否正确获取到data_type参数,比如有没有拼写错误(比如把data_type写成datatype)
  • 确认参数值是否被意外修改,比如是否存在大小写转换错误(比如接口传monthly,但代码里转成了Monthly,和表中存储的小写值不匹配)

2. DynamoDB查询条件逻辑错误

  • 如果用Scan操作:检查FilterExpression是否正确设置了type = :dataType的条件,有没有把逻辑运算符写错(比如误把AND写成OR,导致过滤条件失效)
  • 如果用Query操作:注意type如果是非主键/排序键字段,必须放在FilterExpression中过滤,不能放到KeyConditionExpression里;同时确认没有其他逻辑覆盖了type的过滤规则

3. 索引配置问题

  • 如果使用全局二级索引(GSI)查询:检查索引是否包含type字段,或者索引的投影设置是否导致过滤条件无法生效
  • 确认查询时指定的索引是否正确,有没有误用到不包含type过滤逻辑的索引

4. 数据本身存在异常

  • 抽查表中数据,确认部分周度/月度数据的type字段值是否有误(比如周度数据的type被错写成monthly)
  • 检查是否存在type字段为空、或值不符合weekly/monthly枚举的异常数据,这类数据可能会绕过过滤规则被返回

内容的提问来源于stack exchange,提问作者Rania

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:03:18