Нет, вы не можете.
Зачем вам в любом случае ключ сортировки? Если personId уникален, вам не нужен составной первичный ключ (хэш + сортировка).
И поскольку вы знаете personId при чтении, вы можете просто использовать GetItem (таблица, HK =: personId)
Редактировать
Учитывая дополнительную информацию, что personId не является уникальным ...
Пусть startDate будет вашим ключом сортировки ...
Вы сможете выполнить запрос (таблица, HK =: personId, SK <=: date, ScanIndexForward = false, limit = 1) </p>
Это вернет единственную запись с самой последней датой начала, меньшей илиравно дате, которую вы указали.
Эквивалент SQL будет выглядеть так:
select *
from table
where personId = :personId
and startDate <= :date
order by startDate desc
fetch first row only
EDIT2
Не увидел обновленную информацию в вопросе. Если у человека могут быть перекрывающиеся задания, вам нужно выйти за пределы и выполнить фильтрацию (либо в DDB, либо в вашем клиентском приложении)
DDB не самый лучший вариант для всех, поскольку данныеВы выложили, у вас есть два варианта: платить больше за RCB DDB или платить больше за RDB.
Сказав это, я укажу, что RCU DDB покрывает до 4KBdata.
Если ваши строки DDB меньше, вы можете вернуть несколько строк одним вызовом Query (), который стоит всего 1 RCU.
Если размер строки 512b, вы можете вернуть 8 строк для одного RCU.