DynamoDB не поддерживает этот тип запросов с подстановочными знаками.
Давайте рассмотрим другой способ DynamoDB для обработки запросов такого типа. Похоже, вы хотите поддерживать 2 шаблона доступа:
- Получить товар по месяцам
- Получить товар по годам
Вы не описываете свои первичные ключи (ключ раздела/ключ сортировки), поэтому я собираюсь сделать несколько предположений, чтобы проиллюстрировать один из способов решения этих шаблонов доступа.
Похоже, ваш атрибут представляет собой составной ключ, состоящий из <vendor>~<date>
, где дата выражается MM-DD-YYYY
. Я бы рекомендовал хранить ваши поля даты в формате YYYY-MM-DD
, что позволит вам использовать возможности сортировки поля даты. Пример сделает это намного яснее. Представьте, что ваша таблица выглядит так:
Я называю ваш атрибут vendorAndDate
SK
, так как я использую его в качестве ключа сортировки в этом примере. Эта структура таблицы позволяет мне реализовать два ваших шаблона доступа, выполнив следующие запросы (в псевдокоде, чтобы оставаться независимым от языка):
Схема доступа 1: получение всех записей Chipotle за август 2020 г.
query from MyTable where PK = "Vendors" and SK between Chipotle~2020-08-00 and Chipotle~2020-08-31
Схема доступа 2: получить все записи Chipotle за 2020 год
query from MyTable where PK = "Vendors" and SK between Chipotle~2020-01-01 and Chipotle~2020-12-31
Поскольку даты, хранящиеся в формате ISO8601 (например, ГГГГ-ММ-ДД...), можно лексикографически сортировать, таким образом вы можете выполнять запросы диапазона в DynamoDB.
Опять же, я сделал некоторые предположения о ваших данных и шаблонах доступа, чтобы проиллюстрировать метод использования лексикографически сортируемых временных меток для реализации запросов диапазона.
person
Seth Geoghegan
schedule
01.09.2020