Amazon dynamodb 在这个dynamodb表中,我应该选择哪一列作为二级索引?

Amazon dynamodb 在这个dynamodb表中,我应该选择哪一列作为二级索引?,amazon-dynamodb,Amazon Dynamodb,我有一个具有以下属性的dynamodb表: PurchaseOrderNumber (partition key) CustomerID PurchaseDate TotalPurchaseValue是我的应用程序必须从表中检索的项目,以计算特定客户在某个日期范围内的购买总值。我应该向表中添加什么二级索引 谢谢。您可以创建一个全局二级索引,其中分区键将是客户ID,排序键将是采购日期。这样,您可以在PurchaseDate的日期范围内按CustomerID对特定客户执行查询操作

我有一个具有以下属性的dynamodb表:

  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