2017-01-14 8 views
3

Я могу запросить GSI через консоль DynamoDB, как видно на скриншоте.DynamoDB: выражение фильтра может содержать только атрибуты непервичного ключа

Screenshot: the query

Когда я запускаю тот же запрос с Boto3 на терминале с помощью следующего кода:

table.query(
    IndexName='date-timestamp-index', 
    KeyConditionExpression=Key('date').eq('20161231'), 
    FilterExpression=Attr('timestamp').between(1483130000, 1483133600) & Attr('tags').exists() 
) 

Я получаю ValidationException исключение:

Filter Expression can only contain non-primary key attributes: Primary key attribute: timestamp 

Что я делаю неправильно здесь ? Благодарю.

ответ

3

Ваше поле timestamp является ключом сортировки таблицы, поэтому его нельзя использовать в FilterExpression. Он должен быть частью выражения KeyConditionExpression.

+0

Я думал, что «KeyConditionExpression» предназначен только для ключа раздела. Благодарю. – omat