Запросы, которые полагаются на диапазоны, включая between
, должны, чтобы атрибут (в вашем случае date_time
) был ключом сортировки в индексе (первичном или другом), и вам также необходимо будет предоставить ключ раздела в составе KeyConditionExpression
. Вы не можете запросить всю таблицу по ключу сортировки, если все элементы в таблице не имеют одинаковый ключ раздела.
Если date_time
является атрибутом вне первичного ключа, вы можете добавить GSI, где date_time
- это ключ сортировки, но вам все равно потребуется указать ключ раздела.
Другой вариант, если вы пишете данные самостоятельно, - создать новый атрибут с начальным временем часа для этого элемента date_time
то есть квантовать его, затем создать ключ GSI ha sh для этого нового атрибута часа. Затем вы можете запросить этот конкретный c час, а не искать диапазоны. Если вы работаете с существующими данными, вы можете сканировать и реорганизовать свою таблицу, чтобы добавить этот атрибут - не идеально, но может быть решением в зависимости от размера таблицы и вашего варианта использования.
Если вы действительно застрял, вы также можете scan
и отфильтровать таблицу вместо query
, но это гораздо менее эффективно, поскольку требует чтения каждого элемента каждый раз, когда вы его выполняете.