Indexing 使用全局二级索引查询DynamoDB表
我试图使用Lambda函数查询DynamoDB表 我的表的分区键是Indexing 使用全局二级索引查询DynamoDB表,indexing,aws-lambda,amazon-dynamodb,Indexing,Aws Lambda,Amazon Dynamodb,我试图使用Lambda函数查询DynamoDB表 我的表的分区键是id。我试图在另一个名为dipl\u idpp的键上查询它。我相信这是不可能的 我找到了一个解决方案:我需要在我要查询的列上创建一个全局二级索引点(在我的例子中是dipl\u idpp) 我在迪纳摩做的。但是当我执行我的函数时,我仍然有同样的问题: An error occurred (ValidationException) when calling the Query operation: Query condition mi
id
。我试图在另一个名为dipl\u idpp
的键上查询它。我相信这是不可能的
我找到了一个解决方案:我需要在我要查询的列上创建一个全局二级索引点(在我的例子中是dipl\u idpp
)
我在迪纳摩做的。但是当我执行我的函数时,我仍然有同样的问题:
An error occurred (ValidationException) when calling the Query operation: Query condition missed key schema element: id', 'occurred at index 0')"
这是我使用的代码:
def query_dipl_dynamo(key_table,valeur_query,name_table):
dynamoDBResource = boto3.resource('dynamodb')
table = dynamoDBResource.Table(name_table)
response = table.query(
KeyConditionExpression=Key(key_table).eq(valeur_query))
df_fr = pd.DataFrame([response['Items']])
if len(df_fr.columns) > 0 :
print("hellooo1")
df = pd.DataFrame([response['Items'][0]])
return valeur_query, df["dipl_libelle"].iloc[0]
//
//
df9_tmp["dipl_idpp"] = df8_tmp.apply(lambda x : query_dipl_dynamo("dipl_idpp",x["num_auto"], "ddb-dev-PS_LibreAcces_Dipl_AutExerc")[0], axis=1)
除了创建索引之外,我是否应该更改其他内容?可用的文档太少
谢谢大家! 我刚刚找到了解决办法。当我们使用索引时,我们必须提供 一个参数namde IndexName,在Dynamo中取索引的名称。 我必须将代码更改为:
def query_dipl_dynamo(key_table,valeur_query,name_table):
dynamoDBResource = boto3.resource('dynamodb')
table = dynamoDBResource.Table(name_table)
response = table.query(
IndexName:"NameOfTheIndexInDynamoDB",
KeyConditionExpression=Key(key_table).eq(valeur_query))
df_fr = pd.DataFrame([response['Items']])
if len(df_fr.columns) > 0 :
df = pd.DataFrame([response['Items'][0]])
return valeur_query, df["dipl_libelle"].iloc[0]
//
//
df9_tmp["dipl_idpp"] = df8_tmp.apply(lambda x : query_dipl_dynamo("dipl_idpp",x["num_auto"], "ddb-dev-PS_LibreAcces_Dipl_AutExerc")[0], axis=1)