J'utilise dynamoDb pour stocker quelques informations supplémentaires, mais j'ai quelques problèmes de tri de mes données.DynamoDB trier les données avec la clé de tri ne fonctionne pas
J'ai la syntaxe de création suivante où j'ai une storeId
et number
touches. J'ai mis le number
comme clé de tri, mais le problème est que les données ne sont pas triées du tout.
$response = $dynamoDb->createTable([
'TableName' => 'foo',
'KeySchema' => [
[
'AttributeName' => 'storeId',
'KeyType' => 'HASH' //Partition key
],
[
'AttributeName' => 'number',
'KeyType' => 'RANGE' // sort Key
]
],
'AttributeDefinitions' => [
[
'AttributeName' => 'storeId',
'AttributeType' => 'N'
],
[
'AttributeName' => 'number',
'AttributeType' => 'N'
]
],
'ProvisionedThroughput' => [
'ReadCapacityUnits' => 20,
'WriteCapacityUnits' => 20
]
]);
Mon analyse params:
$scanParams = [
'TableName' => 'foo',
'ProjectionExpression' => '#storeId, #number',
'FilterExpression' => '#number >= :n',
'ExpressionAttributeNames'=> [ '#storeId' => 'storeId', '#number' => 'number'],
'ExpressionAttributeValues' => [
':n' => ['N' => $number]
]
];
Le résultat de mon analyse:
StoreId number
68001 80000
25000 37000
463501 527000
4800001 5300000
360001 400000
2000001 2600000
Comme vous pouvez le voir, les données ne sont pas triées sur la propriété du numéro.
Vous ne pouvez obtenir des résultats triés que sur une requête, pas une analyse. Et pour la requête, vous devez fournir la valeur 'storeId'. Essentiellement, vous pouvez seulement obtenir les résultats triés d'une partition, pas la table entière. – idbehold
@idbehold Je ne connais que la valeur de la clé de tri, donc pas la 'storeId' et les deux touches doit être spécifiée dans la requête – user3601546