AWS DynamoDB 计数查询结果而不检索

AWS DynamoDB count query results without retrieving

我想检查 DynamoDB table 中有多少条目匹配查询 而无需检索实际条目 ,使用 boto3。

我想 运行 对来自 DynamoDB table 的数据进行机器学习作业。我正在训练的数据是回答查询的数据,不是整个 table。只有当我有足够的数据进行训练时,我才想 运行 这份工作。 因此,我想检查是否要检查是否有足够的条目与查询相匹配。 值得一提的是,我正在查询的 DynamoDB table 非常大 ,因此除非我真的想要 运行 工作,否则实际检索是没有选择的。

我知道我可以使用 boto3.dynamodb.describe_table() 来获取 整个 table 中有多少条目,但正如我之前提到的,我想要只知道有多少条目匹配查询。

有什么想法吗?

这在过去曾被问过和回答过,请参阅 How to get item count from DynamoDB?

基本上,您需要使用 "Select" 参数来告诉 DynamoDB 只计算查询的结果,而不是检索它们。

与 DynamoDB 中一样,这会被分页截断:如果结果集(不是计数 - 实际完整结果)大于 1 MB,则只检索前 1 MB,以及其中的项目计数,你会得到这个部分计数。如果您只对检查是否有 "enough" 结果感兴趣——这对您来说甚至可能更好——因为您不想仅仅为了检查数据是否存在而花钱读取 1 GB 的数据。你甚至可以要求一个更小的页面,阅读更少——这取决于你认为足够的数据。

请记住,您向亚马逊支付的费用不是 返回的数据量(仅一个整数,计数),而是 读取的数据量来自磁盘。过度使用此类计数可能会导致惊人的巨大成本。