Amazon dynamodb 在这个dynamodb表中,我应该选择哪一列作为二级索引?
我有一个具有以下属性的dynamodb表:Amazon dynamodb 在这个dynamodb表中,我应该选择哪一列作为二级索引?,amazon-dynamodb,Amazon Dynamodb,我有一个具有以下属性的dynamodb表: PurchaseOrderNumber (partition key) CustomerID PurchaseDate TotalPurchaseValue是我的应用程序必须从表中检索的项目,以计算特定客户在某个日期范围内的购买总值。我应该向表中添加什么二级索引 谢谢。您可以创建一个全局二级索引,其中分区键将是客户ID,排序键将是采购日期。这样,您可以在PurchaseDate的日期范围内按CustomerID对特定客户执行查询操作
PurchaseOrderNumber (partition key)
CustomerID
PurchaseDate
TotalPurchaseValue是我的应用程序必须从表中检索的项目,以计算特定客户在某个日期范围内的购买总值。我应该向表中添加什么二级索引
谢谢。您可以创建一个全局二级索引,其中分区键将是客户ID,排序键将是采购日期。这样,您可以在PurchaseDate的日期范围内按CustomerID对特定客户执行查询操作。您可以在AWS lambda IDE中尝试下面的查询代码:)
感谢Abdullah的输入,您能进一步解释一下我是否可以选择PurchaseDate作为分区键,选择CustomerID作为排序键吗?通过这样选择,我首先限制PurchaseDate的日期范围,然后使用CustomerID上的排序可以获得所需的客户。顺便问一下,全局索引和局部索引的区别是什么?根据您在问题中的要求,我认为将PurchaseDate作为分区键,将CustomerID作为排序键是没有效率的。请看一看这篇文章,我相信这篇文章会回答你所有的问题:)
import json
import boto3
from boto3.dynamodb.conditions import Key
def lambda_handler(event, context):
dynamodb = boto3.resource("dynamodb")
table_name = "your_table_name"
table = dynamodb.Table(table_name)
customer_id = 1
start_date = "2019-12-10"
end_date = "2019-12-16"
response = table.query(
KeyConditionExpression=Key('CustomerID').eq(customer_id) &
Key('PurchaseDate').between(start_date, end_date)
)
return response