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

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

Снимок экрана: запрос

Когда я запускаю тот же запрос с 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

Что я здесь делаю не так? Спасибо.


person onurmatik    schedule 14.01.2017    source источник


Ответы (1)


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

person Dasharath    schedule 14.01.2017
comment
Я думал, что KeyConditionExpression предназначен только для ключа раздела. Спасибо. - person onurmatik; 14.01.2017